1. 前端性能優(yōu)化的方法?
(1) 減少http請求次數(shù):CSS Sprites, JS、CSS源碼壓縮、圖片大小控制合適;網(wǎng)頁Gzip,CDN托管,data緩存 ,圖片服務(wù)器。
(2) 前端模板 JS+數(shù)據(jù),減少由于HTML標(biāo)簽導(dǎo)致的帶寬浪費,前端用變量保存AJAX請求結(jié)果,每次操作本地變量,不用請求,減少請求次數(shù)
(3) 用innerHTML代替DOM操作,減少DOM操作次數(shù),優(yōu)化javascript性能。
(4) 當(dāng)需要設(shè)置的樣式很多時設(shè)置className而不是直接操作style。
(5) 少用全局變量、緩存DOM節(jié)點查找的結(jié)果。減少IO讀取操作。
(6) 避免使用CSS Expression(css表達(dá)式)又稱Dynamic properties(動態(tài)屬性)。
(7) 圖片預(yù)加載,將樣式表放在頂部,將腳本放在底部 加上時間戳。
(8) 按需加載, 將不影響首屏的資源和當(dāng)前屏幕資源不用的資源放到用戶需要時才加載,可以大大提升重要資源的顯示速度和降低總體流量
2. CSS優(yōu)化、提高性能的方法有哪些?
將樣式表放到頁面頂部
不使用CSS表達(dá)式
不使用@import
不使用IE的Filter
3. jsonp的原理
jsonp的實現(xiàn)原理就是,jquery中動態(tài)創(chuàng)建一個script元素,然后給script的scr屬性賦值為ajax請求接口地址,在接口地址的后面添加一個callback的參數(shù),參數(shù)的值就是jquery中動態(tài)生成的函數(shù)的函數(shù)名稱,后臺更具參數(shù)返回值
返回的結(jié)構(gòu)是 方法名(json值) 成功后就相當(dāng)于執(zhí)行了一個js函數(shù),就是ajax中success的成功后的回調(diào)函數(shù)
4. 請解釋一下 JavaScript 的同源策略。
同源策略是客戶端腳本(尤其是Javascript)的重要的安全度量標(biāo)準(zhǔn)。它最早出自Netscape Navigator2.0,其目的是防止某個文檔或腳本從多個不同源裝載。
它的精髓很簡單:它認(rèn)為自任何站點裝載的信賴內(nèi)容是不安全的。當(dāng)被瀏覽器半信半疑的腳本運(yùn)行在沙箱時,它們應(yīng)該只被允許訪問來自同一站點的資源,而不是那些來自其它站點可能懷有惡意的資源。
這里的同源指的是:同協(xié)議,同域名和同端口
5. 跨域有幾種方法?
跨域的話我研究過的有兩種方法,jsonp和CORS兩種,
jsonp 的話以前比較常用一些,主要實現(xiàn)原理就是通過引用js的方法來獲取跨域資源,通過執(zhí)行js函數(shù)的方法調(diào)用回調(diào)成功的函數(shù),
cors 的話這個比較簡單一些,但是有一些兼容問題,只支持ie10+ 和現(xiàn)代瀏覽器適合用于移動端,實現(xiàn)原理就是在后端加上header頭信息Access-Control-Allow-Origin: *,也可以指定域名訪問Access-Control-Allow-Origin: <u>http://api.qiutc.me</u>
其他的方法暫時還沒有研究過
6. 什么是Ajax和JSON,它們的優(yōu)缺點。
Ajax是異步JavaScript和XML,用于在Web頁面中實現(xiàn)異步數(shù)據(jù)交互。
優(yōu)點:
可以使得頁面不重載全部內(nèi)容的情況下加載局部內(nèi)容,降低數(shù)據(jù)傳輸量
避免用戶不斷刷新或者跳轉(zhuǎn)頁面,提高用戶體驗
缺點:
對搜索引擎不友好(
要實現(xiàn)ajax下的前后退功能成本較大
可能造成請求數(shù)的增加
跨域問題限制
JSON是一種輕量級的數(shù)據(jù)交換格式,ECMA的一個子集
優(yōu)點:輕量級、易于人的閱讀和編寫,便于機(jī)器(JavaScript)解析,支持復(fù)合數(shù)據(jù)類型(數(shù)組、對象、字符串、數(shù)字)
7. HTTP和HTTPS
HTTP 協(xié)議通常承載于TCP協(xié)議之上,在HTTP和TCP之間添加一個安全協(xié)議層(SSL或TSL),這個時候,就成了我們常說的HTTPS。
默認(rèn)HTTP的端口號為80,HTTPS的端口號為443。
8. Ajax 是什么? 如何創(chuàng)建一個Ajax?
ajax是一種創(chuàng)建交互式網(wǎng)頁的計算
ajax的全稱:Asynchronous Javascript And XML。異步傳輸+js+xml。
所謂異步,在這里簡單地解釋就是:向服務(wù)器發(fā)送請求的時候,我們不必等待結(jié)果,而是可以同時做其他的事情,等到有了結(jié)果它自己會根據(jù)設(shè)定進(jìn)行后續(xù)操作,與此同時,頁面是不會發(fā)生整頁刷新的,提高了用戶體驗
(1)創(chuàng)建XMLHttpRequest對象,也就是創(chuàng)建一個異步調(diào)用對象.
(2)創(chuàng)建一個新的HTTP請求,并指定該HTTP請求的方法、URL及驗證信息.
(3)設(shè)置響應(yīng)HTTP請求狀態(tài)變化的函數(shù).
(4)發(fā)送HTTP請求.
(5)獲取異步調(diào)用返回的數(shù)據(jù).
(6)使用JavaScript和DOM實現(xiàn)局部刷新.
var xhr= new XMLHttpRequest();
xhr.open('GET','demo.url','true');
xhr.send()
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 & xhr.status === 200) {
console.log(responseText)
}