1、移動(dòng)端遇到的兼容問題?
1 input框輸入問題
最開始在input輸入框中,也會(huì)習(xí)慣性的寫上lineheight(其實(shí)可以不寫),當(dāng)使用placeholder的時(shí)候自己測(cè)試也沒有問題。但當(dāng)測(cè)試用魅族mx4自帶瀏覽器測(cè)試的時(shí)候發(fā)現(xiàn),在input輸入框中,輸入光標(biāo)不會(huì)上下居中。當(dāng)時(shí)也感覺很奇怪,然而將lineheight刪掉就可以了,input中的所有元素就是默認(rèn)居中的。
2 移動(dòng)端最小識(shí)別rem
如果采用rem為.01rem的時(shí)候 ipone5 會(huì)顯示不出來(lái) 需要用border來(lái)解決
3 如果給元素設(shè)置一個(gè)像素的邊框的話,那么在手機(jī)上看起來(lái)是會(huì)比一個(gè)像素粗的。
解決方法:使用偽類元素模擬邊框,使用transform縮放
.a::after{ content: ''; display: block; width: 100%; height: 1px; background: #333; position: absolute;left: 0;bottom: 0; transform: scaleY(0.5)
2、http和https的區(qū)別?
1、https協(xié)議需要到ca申請(qǐng)證書,一般免費(fèi)證書較少,因而需要一定費(fèi)用。
2、http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協(xié)議。
3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
4、http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。
5、https://www.cnblogs.com/mylanguage/p/5635524.html(參考)
3、如何提高網(wǎng)頁(yè)性能?
1、盡量減少Http請(qǐng)求
2、減少DNS查找
3、避免跳轉(zhuǎn)
4、緩存ajax
5、推遲加載
6、提前加載
7、減少DOM元素操作
8、用域名劃分頁(yè)面內(nèi)容
9、減少iframe的大小
10、避免404錯(cuò)誤
4、移動(dòng)端的適配怎么做?
1、https://www.cnblogs.com/MaggieGao/p/6994868.html
2、https://blog.csdn.net/zqf065/article/details/72118289
5、什么是閉包?在開發(fā)項(xiàng)目時(shí)什么地方用閉包?
1、使用閉包代替全局變量
2、函數(shù)外或在其他函數(shù)中訪問某一函數(shù)內(nèi)部的參數(shù)
3、在函數(shù)執(zhí)行之前為要執(zhí)行的函數(shù)提供具體參數(shù)
4、在函數(shù)執(zhí)行之前為函數(shù)提供只有在函數(shù)執(zhí)行或引用時(shí)才能知道的具體參數(shù)
5、為節(jié)點(diǎn)循環(huán)綁定click事件,在事件函數(shù)中使用當(dāng)次循環(huán)的值或節(jié)點(diǎn),而不
是最后一次循環(huán)的值或節(jié)點(diǎn)
6、暫停執(zhí)行,
7、包裝相關(guān)功能
8、http://www.cnblogs.com/star-studio/archive/2011/06/22/2086493.html
9、https://www.cnblogs.com/xdouby/p/6421936.html
10、使用閉包主要是為了設(shè)計(jì)私有的方法和變量,
11、閉包的優(yōu)點(diǎn):
是可以避免全局變量的污染,
12、閉包的缺點(diǎn):
是閉包會(huì)常駐內(nèi)存會(huì)增大內(nèi)存的使用量,使用不當(dāng)很容易造成內(nèi)存泄露。
13、閉包的三個(gè)特性:
(1) 函數(shù)嵌套函數(shù)
(2) 函數(shù)內(nèi)部可以引用外部的參數(shù)和變量
(3) 參數(shù)和變量不會(huì)被垃圾回收機(jī)制回收
6.繼承的幾種方式?
1、原型鏈繼承
特點(diǎn):
非常純粹的繼承關(guān)系,實(shí)例是子類的實(shí)例,也是父類的實(shí)例;
父類新增原型方法/原型屬性,子類都能訪問到;
簡(jiǎn)單,易于實(shí)現(xiàn).
缺點(diǎn):
無(wú)法實(shí)現(xiàn)多繼承;
來(lái)自原型對(duì)象的引用屬性是所有實(shí)例共享的;
創(chuàng)建子類實(shí)例時(shí),無(wú)法向父類構(gòu)造函數(shù)傳參.
2、構(gòu)造繼承
特點(diǎn):
創(chuàng)建子類實(shí)例時(shí),可以向父類傳遞參數(shù)
可以實(shí)現(xiàn)多繼承(call多個(gè)父類對(duì)象)
缺點(diǎn):
實(shí)例并不是父類的實(shí)例,只是子類的實(shí)例
只能繼承父類的實(shí)例屬性和方法,不能繼承原型屬性/方法
無(wú)法實(shí)現(xiàn)函數(shù)復(fù)用,每個(gè)子類都有父類實(shí)例函數(shù)的副本,影響性能
3、實(shí)例繼承
特點(diǎn):
不限制調(diào)用方式,不管是new 子類()還是子類(),返回的對(duì)象具有相同的效果
缺點(diǎn):
實(shí)例是父類的實(shí)例,不是子類的實(shí)例
不支持多繼承
4、拷貝繼承
特點(diǎn):
支持多繼承
缺點(diǎn):
效率較低,內(nèi)存占用高(因?yàn)橐截惛割惖膶傩裕?/p>
無(wú)法獲取父類不可枚舉的方法(不可枚舉方法,不能使用for in 訪問到)
5、組合繼承
特點(diǎn):
既是子類的實(shí)例,也是父類的實(shí)例
不存在引用屬性共享問題
可傳參
函數(shù)可復(fù)用
缺點(diǎn):
調(diào)用了兩次父類構(gòu)造函數(shù),生成了兩份實(shí)例(子類實(shí)例將子類原型上的那份屏蔽了)
6、寄生組合繼承
特點(diǎn):
堪稱完美
缺點(diǎn):
實(shí)現(xiàn)較為復(fù)雜
詳情請(qǐng)看:
https://www.cnblogs.com/humin/p/4556820.html
7.Jquery的優(yōu)點(diǎn)?
1、輕量級(jí)
2、強(qiáng)大的選擇器
3、出色的DOM操作的封裝
4、可靠的事件處理機(jī)制
5、完善的Ajax
6、不污染頂級(jí)變量
7、出色的瀏覽器兼容性
8、鏈?zhǔn)讲僮鞣绞?/p>
9、隱式迭代
10、行為層與結(jié)構(gòu)層的分離
11、豐富的插件支持
12、完善的文檔
13、開源
詳情請(qǐng)看:
https://www.cnblogs.com/qitiandandan/p/5682566.html
8.調(diào)試是怎么做的?
如果是網(wǎng)頁(yè)開發(fā)的話呢 可以使用瀏覽器的f12 開發(fā)人員工具調(diào)試。如果是安卓或者ios呢可以抓包獲取接口請(qǐng)求信息,或者使用日志輸出來(lái)檢測(cè)。
9.說(shuō)一下你在項(xiàng)目開發(fā)過程中遇到的最深刻的問題以及你是怎么解決的?
https://blog.csdn.net/songlf521/article/details/56899857
10.本地存儲(chǔ)localStore與sessionStorage的區(qū)別,都在什么地方使用?
https://blog.csdn.net/qq_40779721/article/details/79196893
11.訂單支付怎么實(shí)現(xiàn)?
https://blog.csdn.net/TengdaLiu/article/details/78244745
12.DOM執(zhí)行事件流程?
1.捕獲階段:先由文檔的根節(jié)點(diǎn)document往事件觸發(fā)對(duì)象,從外向內(nèi)捕獲事件對(duì)象;
2.目標(biāo)階段:到達(dá)目標(biāo)事件位置(事發(fā)地),觸發(fā)事件;
3.冒泡階段:再?gòu)哪繕?biāo)事件位置往文檔的根節(jié)點(diǎn)方向回溯,從內(nèi)向外冒泡事件對(duì)象
13.、Scss和sass,less區(qū)別?
https://www.cnblogs.com/wangpenghui522/p/5467560.html
14、偽類和偽元素的區(qū)別?
本質(zhì)區(qū)別就是是否抽象創(chuàng)造了新元素
https://blog.csdn.net/q1056843325/article/details/53560588
15.多維數(shù)組如何實(shí)現(xiàn)扁平化處理
[圖片上傳失敗...(image-8421c3-1532688777159)]
16.jsonp的實(shí)現(xiàn)原理
ajax請(qǐng)求受同源策略影響,不允許進(jìn)行跨域請(qǐng)求,而script標(biāo)簽src屬性中的鏈接卻可以訪問跨域的js腳本,利用這個(gè)特性,服務(wù)端不再返回JSON格式的數(shù)據(jù),而是返回一段調(diào)用某個(gè)函數(shù)的js代碼,在src中進(jìn)行了調(diào)用,這樣實(shí)現(xiàn)了跨域。
17.****什么樣的網(wǎng)站適合作響應(yīng)式?
相關(guān)網(wǎng)址:https://zhidao.baidu.com/question/753168273876792884.html
(1)背景大圖+簡(jiǎn)單的多列布局
(2)單頁(yè)單欄布局
(3)不規(guī)則的柵格布局
(4)經(jīng)典的F格式布局
(5)極簡(jiǎn)分層
18****、說(shuō)一下git 開發(fā)的流程與命令行語(yǔ)句?
1.創(chuàng)建一個(gè)git裸服務(wù)器 (git init --bare)
2.從裸服務(wù)器將版本庫(kù)克隆至本地(git clone )
3.本地常規(guī)操作
4.推送版本至服務(wù)器 (git remote + git push origin master)
5.從遠(yuǎn)程服務(wù)器拉取版本(git pull)
19****、前端工作流程?
相關(guān)網(wǎng)站:https://www.cnblogs.com/peachGirl/p/5971893.html
產(chǎn)品分析需求
領(lǐng)導(dǎo)或甲方提出需求
設(shè)計(jì)出原型圖,根據(jù)原型圖出設(shè)計(jì)稿
交給設(shè)計(jì)稿團(tuán)隊(duì)評(píng)審,之后交給前端制作靜態(tài)頁(yè)面,交給設(shè)計(jì)審核,通過后交給開發(fā)人員進(jìn)行動(dòng)態(tài)數(shù)據(jù)添加
發(fā)布測(cè)試環(huán)境,產(chǎn)品測(cè)試,領(lǐng)導(dǎo)審核,成功后直接發(fā)布產(chǎn)品環(huán)境或進(jìn)行版本迭代
2****0****、tap事件原理?
相關(guān)網(wǎng)站:https://www.cnblogs.com/cythia/p/6928364.html
tap事件的原理其實(shí)是源于觸摸touch事件,在移動(dòng)觸摸事件就是在同個(gè)點(diǎn)觸發(fā),及touchmove的距離距離touchstar的距離為0,并且點(diǎn)擊的時(shí)間不超過某個(gè)設(shè)定的時(shí)間值,超過該時(shí)間值的話,就屬于長(zhǎng)按了
2****1****、懶加載原理?
相關(guān)網(wǎng)址:https://blog.csdn.net/weixin_35955795/article/details/54411516
原理:先將img標(biāo)簽中的src鏈接設(shè)為同一張圖片(空白圖片),將其真正的圖片地址存儲(chǔ)再img標(biāo)簽的自定義屬性中(比如data-src)。當(dāng)js監(jiān)聽到該圖片元素進(jìn)入可視窗口時(shí),即將自定義屬性中的地址存儲(chǔ)到src屬性中,達(dá)到懶加載的效果
2****2****、移動(dòng)端的fastclick怎么實(shí)際使用?
相關(guān)網(wǎng)址:https://blog.csdn.net/qq_34849000/article/details/79377926
2****3****、公司的測(cè)試是怎么向你提bug的?他是怎么記錄的?
24****、原生ajax的步驟?
1.創(chuàng)建一個(gè)ajax對(duì)象
2.連接到服務(wù)器
3.發(fā)送請(qǐng)求
4.接受返回值
https://www.cnblogs.com/yufann/p/JS-Ajax.html(看代碼的話打開網(wǎng)址)
get和post的區(qū)別:
https://www.cnblogs.com/longm/p/7205318.html?utm_source=itdadao&utm_medium=referral
26****、有幾種方法可以改變this指向?
有三種
1.通過對(duì)象的方法來(lái)定義一個(gè)函數(shù)(誰(shuí)綁定了我,我就指向誰(shuí))
2.函數(shù)被new了一下,創(chuàng)建了新的對(duì)象,this指向新的對(duì)象(誰(shuí)new了我,我就指向誰(shuí))
3.通過call,apply改變this指向
27****、說(shuō)一下你有幾種讓子盒子居中的方法?
margin:auto
display:flex;
justify-content:center;
28****、vue-router的原理?catch方法的實(shí)現(xiàn)原理?
vue-router單頁(yè)面應(yīng)用中,是路徑之間的切換,也就是組件之間的切換
29****、git和svn的區(qū)別?
git是分布式的,svn不是
git把內(nèi)容按元數(shù)據(jù)的方式存儲(chǔ),而svn是按文件
git分支和svn的分支不同
git沒有一個(gè)全局的版本號(hào),而svn有
git的內(nèi)容完整性要優(yōu)于svn
git下載下來(lái)后,在本地不必聯(lián)網(wǎng)就可以看到所有的log,svn需要聯(lián)網(wǎng)
30****、vue計(jì)算屬性和watch的區(qū)別?
computed計(jì)算屬性是用來(lái)聲明式的描述一個(gè)值依賴了其它的值。當(dāng)你在模板里把數(shù)據(jù)綁定到一個(gè)計(jì)算屬性上時(shí),Vue 會(huì)在其依賴的任何值導(dǎo)致該計(jì)算屬性改變時(shí)更新 DOM。這個(gè)功能非常強(qiáng)大,它可以讓你的代碼更加聲明式、數(shù)據(jù)驅(qū)動(dòng)并且易于維護(hù)。
watch監(jiān)聽的是你定義的變量,當(dāng)你定義的變量的值發(fā)生變化時(shí),調(diào)用對(duì)應(yīng)的方法。
Vue的優(yōu)勢(shì) 為什么使用vue
1.vue是mvvm模式的框架
2.Vue.js 是一套構(gòu)建用戶界面的 漸進(jìn)式框架。與其他重量級(jí)框架不同的是,Vue 采用自底向上增量開發(fā)的設(shè)計(jì)。Vue 的核心庫(kù)只關(guān)注視圖層,并且非常容易學(xué)習(xí),非常容易與其它庫(kù)或已有項(xiàng)目整合。另一方面,Vue 完全有能力驅(qū)動(dòng)采用單文件組件和 Vue 生態(tài)系統(tǒng)支持的庫(kù)開發(fā)的復(fù)雜單頁(yè)應(yīng)用。
- mvvm是什么?
MVVM模式和MVC模式一樣,主要目的是分離視圖(View)和模型(Model),有幾大優(yōu)點(diǎn)
1. 低耦合。視圖(View)可以獨(dú)立于Model變化和修改,一個(gè)ViewModel可以綁定到不同的"View"上,當(dāng)View變化的時(shí)候Model可以不變,當(dāng)Mo del變化的時(shí)候View也可以不變。
2. 可重用性。你可以把一些視圖邏輯放在一個(gè)ViewModel里面,讓很多view重用這段視圖邏輯。
3. 獨(dú)立開發(fā)。開發(fā)人員可以專注于業(yè)務(wù)邏輯和數(shù)據(jù)的開發(fā)(ViewModel),設(shè)計(jì)人員可以專注于頁(yè)面設(shè)計(jì),使用Expression Blend可以很容易設(shè)計(jì)界面并生成xml代碼。
4. 可測(cè)試。界面素來(lái)是比較難于測(cè)試的,而現(xiàn)在測(cè)試可以針對(duì)ViewModel來(lái)寫。
- vuex實(shí)現(xiàn)原理
Vuex的狀態(tài)存儲(chǔ)是響應(yīng)式的,當(dāng)Vue組件從store中讀取狀態(tài)時(shí),若store中狀態(tài)發(fā)生改變,響應(yīng)的組件也會(huì)得到更新狀態(tài)。但不能直接改變state,必須通過顯示的提交(commit)mutations來(lái)追蹤每一個(gè)狀態(tài)的變化。
- vue Seo優(yōu)化
一、內(nèi)部?jī)?yōu)化
(1)META標(biāo)簽優(yōu)化:例如:TITLE,KEYWORDS,DESCRIPTION等的優(yōu)化
(2)內(nèi)部鏈接的優(yōu)化,包括相關(guān)性鏈接(Tag標(biāo)簽),錨文本鏈接,各導(dǎo)航鏈接,及圖片鏈接
(3)網(wǎng)站內(nèi)容更新:每天保持站內(nèi)的更新(主要是文章的更新等)
二、外部?jī)?yōu)化
(1)外部鏈接類別:友情鏈接、博客、論壇、B2B、新聞、分類信息、貼吧、知道、百科、站群、相關(guān)信息網(wǎng)等盡量保持鏈接的多樣性
(2)外鏈運(yùn)營(yíng):每天添加一定數(shù)量的外部鏈接,使關(guān)鍵詞排名穩(wěn)定提升。
(3)外鏈選擇:與一些和你網(wǎng)站相關(guān)性比較高,整體質(zhì)量比較好的網(wǎng)站交換友情鏈接,鞏固穩(wěn)定關(guān)鍵詞排名
- vue服務(wù)器渲染
從頭搭建一個(gè)服務(wù)端渲染的應(yīng)用是相當(dāng)復(fù)雜的。幸運(yùn)的是,我們有一個(gè)優(yōu)秀的社區(qū)項(xiàng)目 Nuxt.js 讓這一切變得非常簡(jiǎn)單。Nuxt 是一個(gè)基于 Vue 生態(tài)的更高層的框架,為開發(fā)服務(wù)端渲染的 Vue 應(yīng)用提供了極其便利的開發(fā)體驗(yàn)。更酷的是,你甚至可以用它來(lái)做為靜態(tài)站生成器。
- Es6和es5的區(qū)別
<u>https://blog.csdn.net/changsimeng/article/details/62883952</u>
- Webpack按需加載
<u>https://segmentfault.com/q/1010000009122066</u>
- 你常用的loader加載器有哪些
<u>https://www.cnblogs.com/hughes5135/p/6891784.html?utm_source=itdadao&utm_medium=referral</u>
- 怎么理解promise(語(yǔ)法糖)
promise是一個(gè)對(duì)象,可以獲取異步操作的消息,promise有3種狀態(tài), pending :進(jìn)行中,fulfilled :已經(jīng)成功
rejected 已經(jīng)失敗
- 如何實(shí)現(xiàn)異步編程,有哪些方式
回調(diào)函數(shù) 2.事件監(jiān)聽 3.Promise對(duì)象
- 解釋一下什么是vue實(shí)例
一個(gè) Vue 應(yīng)用由一個(gè)通過 new Vue 創(chuàng)建的根就叫 Vue 實(shí)例
- Vue組件有多少個(gè)生命周期
一共11個(gè),9個(gè)常用,兩個(gè)不常用 .
beforecreate 初始化之前調(diào)用
created 實(shí)例化之后調(diào)用
beforeMount 掛載之前
mounted 掛載之后調(diào)用
beforeUpdate 更新之前
updated 更新之后
activated 組件激活時(shí)
deactivated 移除之后
- Vue組件之間傳遞數(shù)據(jù)怎么實(shí)現(xiàn),區(qū)別是什么?
子傳父,父?jìng)髯?,兄弟傳?/p>
在開發(fā)中怎么與后臺(tái)合作?
Vue數(shù)據(jù)綁定的實(shí)現(xiàn)原理
首先對(duì)數(shù)據(jù)進(jìn)行劫持監(jiān)聽,所以設(shè)置一個(gè)監(jiān)聽器Observer用來(lái)監(jiān)聽所有屬性,如果屬性變化就告訴訂閱者Watcher判斷是否更新,因?yàn)橛嗛喺哂卸鄠€(gè),所以要一個(gè)Dep來(lái)收集訂閱者,在監(jiān)聽器和訂閱者之間統(tǒng)一管理,還需要一個(gè)指令解析器Compile,對(duì)每隔元素進(jìn)行解析,當(dāng)訂閱者收到屬性變化就更新視圖
46、nodejs了解嗎
node.js是js的運(yùn)行環(huán)境,是一門基于js開發(fā)的后臺(tái)語(yǔ)言
47、數(shù)組排序有哪些方式
https://blog.csdn.net/wxb774567876/article/details/8141916
48、用css如何實(shí)現(xiàn)左側(cè)寬度固定,右側(cè)寬度自適應(yīng)
- 固定寬度區(qū)浮動(dòng),自適應(yīng)區(qū)不設(shè)寬度而設(shè)置
2.固定寬度區(qū)使用絕對(duì)定位,自適應(yīng)區(qū)照例設(shè)置
49、技術(shù)團(tuán)隊(duì)人員分配
50、如何開發(fā)響應(yīng)式網(wǎng)站開發(fā)
響應(yīng)式網(wǎng)站開發(fā)一般的輕量級(jí)采用 bootstrap 的方式,那么在重量級(jí)的網(wǎng)站上我們采用媒體查詢(media),這bootstrap的冗余性,也提高了代碼的性能,現(xiàn)在普遍的公司都不用boostrap了;
51、Js數(shù)據(jù)類型有哪些
6個(gè)基礎(chǔ)數(shù)據(jù)類型:::字符串、數(shù)字、布爾、數(shù)組、對(duì)象、Null、Undefined;
https://www.cnblogs.com/wu-web/p/6807845.html
52、父盒子高度自適應(yīng),里面的文字行高如何自適應(yīng)
可以不用設(shè)置高度,如果父層內(nèi)容沒有設(shè)置浮動(dòng),是會(huì)自適應(yīng)高度的。如果父層沒有浮動(dòng),而包含的兩個(gè)子層設(shè)置了浮動(dòng),那父層也要設(shè)置浮動(dòng),才能自適應(yīng)高度。
53、在工作中如何配合安卓和ios開發(fā)工程師
首先要和他們打好關(guān)系,其次做的東西要合格,互相溝通交流技術(shù),在實(shí)際開發(fā)中其實(shí)就是把自己的工作做好,再把自己的項(xiàng)目交給ios或者安卓就可以了工作
54、項(xiàng)目結(jié)構(gòu)是如何搭建的
55、常用的瀏覽器有哪些
谷歌 IE 火狐 歐朋
56、漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)
兩種都是針對(duì)瀏覽器不同版本進(jìn)行構(gòu)建頁(yè)面的。
漸進(jìn)增強(qiáng)其實(shí)就是由低版本到高版本進(jìn)行構(gòu)建頁(yè)面,先保證低版本最基本的功能,最后在到高級(jí)瀏覽器。
優(yōu)雅降級(jí)其實(shí)就是漸進(jìn)增強(qiáng)的反轉(zhuǎn),一開始就把完整的功能構(gòu)建出來(lái),然后在對(duì)低版本的瀏覽器進(jìn)行兼容。
漸進(jìn)增強(qiáng)從webkit > moz > o 基礎(chǔ),優(yōu)雅降級(jí)從 基礎(chǔ) > o > moz > webkit。
57、常用的dom的操作方法
dom操作的四種基本的方法。
getElementByld()這個(gè)方法的參數(shù)就是元素的id值,返回來(lái)的是一個(gè)有指定id的元素對(duì) 象;
getElementsByTagName()這個(gè)方法的參數(shù)是一個(gè)標(biāo)簽元素名,返回來(lái)的是一個(gè)對(duì)象數(shù)組,數(shù)組里面的每個(gè)元素都是對(duì)象;
getAttribute()這個(gè)方法的參數(shù)是元素的某個(gè)屬性名,返回來(lái)的事這個(gè)元素屬性的屬性值;
setAttribute()這個(gè)方法的參數(shù)有兩個(gè),一個(gè)是元素的某個(gè)屬性名,還有一個(gè)是這個(gè)元素的新屬性值,它并沒有返回值;
58、事件代理的原理
事件代理就是在一個(gè)組先級(jí)DOM元素綁定一個(gè)事件,當(dāng)觸發(fā)了子孫級(jí)DOM元素事件的時(shí)候,利用事件流的原理來(lái)觸發(fā)綁定在祖先級(jí)DOM的事件,那么咱們?cè)僬f(shuō)一下事件流,當(dāng)一個(gè)HTML元素產(chǎn)生一個(gè)事件的時(shí)候,這個(gè)事件會(huì)在元素節(jié)點(diǎn)與根節(jié)點(diǎn)之間的路徑傳播,路徑所經(jīng)過的結(jié)點(diǎn)都會(huì)收到該事件,這個(gè)傳播過程就是DOM事件流。
59、前端安全問題
前端安全問題對(duì)咱們是一個(gè)很大的話題,在開發(fā)中各種安全問題類型也是種類繁多的,我們先說(shuō)幾個(gè):
XSS漏洞,它其實(shí)就是跨站腳本攻擊的簡(jiǎn)稱,攻擊者往web頁(yè)面注入惡意的script代碼,可對(duì)用戶進(jìn)行盜取cookie信息以及會(huì)話劫持等各種攻擊,咱們解決的方法是在不同上下文中,使用合適的escape方式,不要相信任何來(lái)自用戶的輸入;
CSRF漏洞,它與XSS攻擊相比,CSRF攻擊往往不大流行和難以防范,所以被認(rèn)為比XSS更具有危險(xiǎn)性,咱們解決的方法給所有請(qǐng)求加上token檢查,token一般是隨機(jī)字符串,只需要確保其不可預(yù)測(cè)性即可,但千萬(wàn)不要放在cookies里。
60、Jquery的優(yōu)化方法
咱們盡量選用id選擇器和元素選擇器,因?yàn)橛龅竭@些選擇器的時(shí)候,jq會(huì)自動(dòng)調(diào)用瀏覽器的原生方法,所以他們的執(zhí)行速度是很快的;盡量不要用.live()的方法,這個(gè)是jq1.3.1版本之后新增的方法,它就是為新增DOM元素綁定事件,對(duì)于效率來(lái)說(shuō),這個(gè)方法比較占用資源;還有盡量使用data方法來(lái)儲(chǔ)存變量,因?yàn)檫@個(gè)是jq的內(nèi)部函數(shù)。