摘要:在標(biāo)簽中添加屬性,本質(zhì)上是跟在標(biāo)簽里面寫屬性時一樣的,所以屬性值最終都會編譯為字符串類型。這個節(jié)點包括很多,比如,以及一些方法等方法。一個對象有很多,該集合名字為,里面有其他以及,里面有很多。
一、變量類型和計算 JS中使用typeof能得到哪些類型
值類型:變量本身就是含有賦予給它的數(shù)值的,它的變量本身及保存的數(shù)據(jù)都存儲在棧的內(nèi)存塊當(dāng)中
引用類型:引用類型當(dāng)然是分配到堆上的對象或者數(shù)據(jù)變量,根據(jù)官方一點的解釋就是引用類型的變量只包括對其所表示的數(shù)據(jù)引用
對象、數(shù)組、函數(shù)
無限擴展屬性,可能出現(xiàn)內(nèi)存占用比較大的情況
typeof abc //"undefined" typeof NaN //"number" typeof null //"object" typeof console.log //"function"
typeof只能區(qū)分值類型,對引用類型無能為力,只能區(qū)分函數(shù)function
NaN表示特殊的非數(shù)字值,null是空指針,并沒有指向任何一個地址
typeof能區(qū)分的五種基本類型:string、boolean、number、undefined、symbol和函數(shù)function
字符串拼接
== 運算符
100 == "100" //true 0 == "" //true null == undefined //true
if語句
var c = ""; if(c){ //.... }
邏輯運算
console.log(10 && 0); //0 console.log("" || "abc"); //"abc" console.log(!window.abc); //true //判斷一個變量會被當(dāng)做true還是false 雙非判斷 var a = 100; console.log(!!a);
在js邏輯運算中,0、NaN、""、null、false、undefined都會判為false,其他都為true
var add_level = (add_step == 5 && 1)||(add_step == 10 && 2)||(add_step == 12 && 4)||(add_step==15 && 5 )|| 0;
var add_level = {"5":1,"10":2,"15":5,"12":4}[add_step]||0; //更精簡何時使用 === 何時使用 ==
if(obj.a == null){ //這里相當(dāng)于obj.a === null || obj.a === undefined,簡寫 //這是jquery源碼中推薦的寫法,除此之外其他全用 === //主要是用于判斷這個屬性是否存在 }
//判斷函數(shù)參數(shù)是否存在 function (a,b){ if(a == null){ ... } }
//這種寫法不能用 if(xxx == null){ //可能會報錯,這個參數(shù)未定義 not defined }JS變量按照存儲方式區(qū)分為哪些類型,并描述其特點 如何理解json
JSON是一個JS內(nèi)置對象,常用兩個API
JSON.stringify({a:10,b:20}) JSON.parse("{"a":10,"b":20}")
同時也是一種數(shù)據(jù)格式
二、原型和原型鏈 原型規(guī)則所有的引用類型(數(shù)組、函數(shù)、對象)都具有對象特性,即可自由擴展屬性】
所有的引用類型(數(shù)組、對象、函數(shù))有一個__proto__ 屬性,屬性值是一個普通的對象
所有的函數(shù)都有一個prototype屬性,屬性值也是一個普通的對象
所有的引用類型(數(shù)組、對象、函數(shù)),__proto__屬性指向它的構(gòu)造函數(shù)的prototype屬性
當(dāng)試圖得到一個對象的某個屬性時,如果這個對象本身沒有這個屬性,那么回去他的__proto__(即它的構(gòu)造函數(shù)的prototype中尋找)
原型鏈 instanceofinstanceof:用于判斷引用類型屬于哪個構(gòu)造函數(shù)的方法
f instanceof Foo的判斷邏輯是:
f的__proto__一層一層往上,能否對應(yīng)到Foo.prototype
再試著判斷f instance Object
如何準(zhǔn)確判斷一個變量是否是數(shù)組類型var arr = []
arr instanceOf Array //true
typeof arr //object,typeof是無法判斷是否是數(shù)組的
通用判斷方法:Object.prototype.toString.call(arr) === "[object Array]"
寫一個原型鏈繼承的例子function Elem (id){ this.elem = document.getElementById(id); } Elem.prototype.html = function(val){ var elem = this.elem; if(val){ elem.innerHtml = val; return this; //鏈?zhǔn)讲僮? }else{ return elem.innerHtml; } } Elem.prototype.on = function(type,fn){ var elem = this.elem elem.addEventListener(type,fn) } var div1 = new Elem("content_wrapper") //div1.html("描述創(chuàng)建一個對象的過程ds
") //div1.on("click",function(){ // alert("clicked") // } //) div1.html("
放大放大放大發(fā)范德薩大點的我請薩
").on("click",function(){ alert("clicked"); }).html("javascript
")
新生成了一個對象
鏈接到原型
綁定 this
返回新對象
function create() { let obj = new Object() let Con = [].shift.call(arguments) obj.__proto__ = Con.prototype let result = Con.apply(obj, arguments) return typeof result === "object" ? result : obj }zepto源碼中如何使用原型鏈 三、作用域和閉包
執(zhí)行上下文題目:
說一下對變量提升的理解
說明this幾種不同的使用場景
創(chuàng)建10個 < a>標(biāo)簽,點擊的時候彈出對應(yīng)的序號
如何理解作用域
實際開發(fā)中閉包的應(yīng)用
范圍:一段或者一個函數(shù)
全局:變量定義、函數(shù)聲明、一段
函數(shù):變量定義、函數(shù)聲明、this、arguments
console.log(a) //undefined var a = 100 fn("zhangsan") //"zhangsan" 20 function fn(name){ age = 20 console.log(name,age) var age }
函數(shù)聲明會被提出來,函數(shù)表達(dá)式會和變量一樣,以undefined占位
在函數(shù)執(zhí)行之前,變量定義、函數(shù)聲明、this、arguments都要先提取出來
函數(shù)聲明和函數(shù)表達(dá)式的區(qū)別fn() //不會報錯 function fn(){ //聲明 }
fn() //Uncaught TypeError:fn1 is not a function var a = function(){ //表達(dá)式 }
變量提升: var a ; undefined,并不知道是一個函數(shù)
函數(shù)提升: 把函數(shù)聲明提前
fn("zhangsan") function fn(name){ //函數(shù) console.log(this) console.log(arguments) age = 20 console.log(name,age) var age bar(100) function bar(num){ console.log(num) } }說明this幾種不同的使用場景
作為構(gòu)造函數(shù)執(zhí)行
作為對象屬性執(zhí)行
作為普通函數(shù)執(zhí)行(window)
call、apply、bind
var a = { name : "A", fn:function(){ console.log(this.name) } } a.fn() //this === a a.fn.call({name:"B"}) //this === {name:"B"} var fn1 = a.fn fn1() //this === window
this要在執(zhí)行的時候才能確認(rèn)值
作用域沒有塊級作用域
if(true){ var name = "zhangsan" } console.log(name)
函數(shù)作用域和全局作用域
var a = 100 function fn(){ var a = 200 console.log("fn",a) } console.log("global",a) fn()作用域鏈
如何理解作用域:
自由變量
作用域鏈,即自由變量的查找
閉包的兩個場景
var a = 100 function fn(){ var b = 200 //當(dāng)前作用域沒有定義的變量,即“自由變量” console.log(a) console.log(b) } fn()
自由變量作用域鏈,一直往父級作用域找,一直找到全局作用域
var a = 100 function F1(){ var b = 200 function F2(){ var c = 300 console.log(a) //a是自由變量 console.log(b) //b是自由變量 console.log(c) } F2() } F1()閉包
作用域是定義時的作用域,而不是執(zhí)行時的作用域
閉包的使用場景:函數(shù)作為返回值
function F1(){ var a = 100 //返回一個函數(shù)(函數(shù)作為返回值) return function(){ console.log(a) } } var f1 = F1() var a = 200 f1()
函數(shù)作為參數(shù)傳遞
function F1(){ var a = 100 return function(){ console.log(a) //自由變量,父作用域?qū)ふ? } } var f1 = F1() function F2(fn){ var a = 200 fn() } F2(f1)面試題 題目1、說一下對變量提升的理解
在某一作用域中,聲明變量的語句會默認(rèn)解析為在該作用域的最開始就已經(jīng)聲明了
題目2、說明this幾種不同的使用場景https://blog.csdn.net/w_q_102...
題目3、創(chuàng)建10個 < a>標(biāo)簽,點擊的時候彈出對應(yīng)的序號錯誤寫法
var i,a for(i = 0;i<10;i++){ a = document.createElement("a") a.innerHTMl = i + "
" a.addEventListener("click",function(e){ e.preentDefault() alert(i) }) document.body.appendChild(a) }
正確寫法
var i,a for(i = 0;i < 10;i++){ (function(i){ var a = document.createElement("a") a.innerHTML = i + "題目4、如何理解作用域
" a.addEventListener("click",function(e){ e.preventDefault() alert(i) }) document.body.appendChild(a) })(i) }
自由變量
作用域鏈,即自由變量的查找
閉包的兩個場景
題目5、實際開發(fā)中閉包的應(yīng)用//閉包實際應(yīng)用中主要用于封裝變量,收斂權(quán)限 function isFirstLoad(){ var _list = []; return function(id){ if(_list.indexOf(id) >= 0){ return false; }else{ _list.push(id); return true; } }} var firstLoad = isFirstLoad(); firstLoad(10);四、異步和單線程
什么是異步題目:
同步和異步的區(qū)別是什么?分別舉一個同步和異步的例子
一個關(guān)于setTimeout的筆試題
前端使用異步的場景有哪些
知識點:
什么是異步(對比同步)
前端使用異步的場景
異步和單線程
是否阻塞程序的運行
何時需要異步在可能發(fā)生等待的情況
定時任務(wù):setTimeout,setTimeInterval
網(wǎng)絡(luò)請求:ajax請求,動態(tài)加載
事件綁定
等待過程中不能像alert一樣阻塞程序運行
因此所有的“等待的情況”都需要異步
異步和單線程console.log(100) setTimeout(function(){ console.log(200) },1000) console.log(300)
執(zhí)行第一行,打印100
執(zhí)行setTimeout后,傳入setTimeout的函數(shù)會被暫存起來,不會立即執(zhí)行(單線程特點,不能同時干兩件事)
執(zhí)行最后一行,打印300
待所有程序執(zhí)行完,處于空閑狀態(tài)時,會立馬看有沒有暫存起來的要執(zhí)行
發(fā)現(xiàn)暫存起來的setTimeout中的函數(shù)無需等待時間,就立即來過來執(zhí)行
面試題 筆試題1: 同步和異步的區(qū)別是什么?分別舉一個同步和異步的例子同步會阻塞代碼執(zhí)行,而異步不會
筆試題2:一個關(guān)于setTimeout的筆試題console.log(1) setTimeout(function(){ console.log(2) },0) console.log(3) setTimeout(function(){ console.log(4) },1000) console.log(5)筆試題3:前端使用異步的場景有哪些
需要等待,因為js是單線程語言
五、常見對象Date題目
獲取2017-06-10格式的日期
獲取隨機數(shù),要求是長度一直的字符串格式
寫一個能遍歷對象和數(shù)組的通用forEach函數(shù)
Date.now() //獲取當(dāng)前時間毫秒數(shù) var dt = new Date() dt.getTime() //獲取毫秒數(shù) dt.getFullYear() //年 dt.getMonth() //月(0-11) dt.getDate() //日(0-31) dt.getHours() //小時(0-23) dt.getMinutes() //分鐘(0-59) dt.getSeconds() //秒(0-59)Math
Math.random():可以用來清除緩存
ArrayforEach 遍歷所有數(shù)據(jù)
every 判斷所有元素是否都符合條件
some 判斷是否有至少一個元素符合條件
sort 排序
map 對元素重新組裝,生成新數(shù)組>- 過濾符合條件的元素
array.forEach
arr.forEach( function(item,index){ console.log(index,item); });
array.every
var arr = [1,2,3,4,5]; var result = arr.every(function(index,item){ //用來判斷所有的數(shù)組元素,都滿足一個條件 if(item<6) return true }); console.log(result);
array.some
var result = arr.some(function(index,item){ if(item<5) return true; }); console.log(result);
arry.sort
var arr2 = arr.sort(function(a,b){ //從小到大排序 return a-b; //從大到小排序 //return b-a; })
array.map
arr.map(function(item,index){ return "
"+index+":"+item+"
" })
array.filter
var arr2 = arr.filter(function (item,index){ //通過某一個條件過濾數(shù)組 if(item >= 2) return true })對象API
var obj = { x:100, y:200, z:300 } var key for(key in obj){ if(obj.hasOwnProperty(key)){ console.log(key,obj[key]) } }面試題 解答1:獲取2016-06-10格式的日期
function formatDate(dt){ if(!dt){ dt = new Date() } var year = dt.getFullYear() var month = dt.getMonth() + 1 var date = dt.getDate() if(month < 10){ //強制類型轉(zhuǎn)換 month = "0" + month } if(date < 10){ //強制類型轉(zhuǎn)換 date = "0" + date } //強制類型轉(zhuǎn)換 return year + "-" + month + "-" + date } var dt = new Date() var formatDate = formatDate(dt) console.log(formatDate)解答2:獲取隨機數(shù),要求是長度一致的字符串格式
var random = Math.random() + "0000000000"; var random = random.slice(0,10);解答3:寫一個能遍歷對象和數(shù)組的通用forEach函數(shù)
function forEach(obj,fn){ var key if(obj instanceof Array){ //準(zhǔn)備判斷是不是數(shù)組 obj.forEach(function(item,index){ fn(index,item) }) }else{ //不是數(shù)組就是對象 for(key in obj){ fn(key,obj[k]) } } }五、JS-Web-API:
DOM操作知識點:
js基礎(chǔ)知識:ECMA262標(biāo)準(zhǔn)
JS-Web-API:W3C標(biāo)準(zhǔn)
W3C標(biāo)準(zhǔn)中關(guān)于JS的規(guī)定有:
DOM操作
BOM操作
事件綁定
ajax請求(包括http協(xié)議)
存儲
DOM的本質(zhì)
Document、Object、Model
瀏覽器把拿到的html代碼,結(jié)構(gòu)化一個瀏覽器能夠識別并且js可操作的一個模型而已DOM的節(jié)點操作
獲取DOM節(jié)點
Attribute 和 properity
attribute:是HTML標(biāo)簽上的某個屬性,如id、class、value等以及自定義屬性,它的值只能是字符串,關(guān)于這個屬性一共有三個相關(guān)的方法,setAttribute、getAttribute、removeAttribute;
注意:在使用setAttribute的時候,該函數(shù)一定接收兩個參數(shù),setAttribute(attributeName,value),無論value的值是什么類型都會編譯為字符串類型。在html標(biāo)簽中添加屬性,本質(zhì)上是跟在標(biāo)簽里面寫屬性時一樣的,所以屬性值最終都會編譯為字符串類型。
property:是js獲取的DOM對象上的屬性值,比如a,你可以將它看作為一個基本的js對象。這個節(jié)點包括很多property,比如value,className以及一些方法onclik等方法。
一個js對象有很多property,該集合名字為properties,properties里面有其他property以及attributies,attributies里面有很多attribute。
而常用的attribute,id、class、name等一般都會作為property附加到j(luò)s對象上,可以和property一樣取值、賦值
DOM結(jié)構(gòu)操作面試題1:DOM是那種基本的數(shù)據(jù)結(jié)構(gòu)?
樹
面試題2:DOM操作的常用API有哪些?獲取DOM節(jié)點,以及節(jié)點的property和Attribute
獲取父節(jié)點,獲取子節(jié)點
新增節(jié)點,刪除節(jié)點
面試題3:DOM節(jié)點的attr和property有何區(qū)別property只是一個JS對象的屬性的修改
Attribute是對html標(biāo)簽屬性的修改
navigator & screen問題:
如何檢測瀏覽器的類型
拆解URL各部分
知識點
navigator
screen
location
history
//navigator var ua = navigator.userAgent var isChrome = ua.indexOf("chrome") console.log(isChrome) //screen console.log(screen.width) console.log(screen.height) //location console.log(location.href) console.log(location.protocol) console.log(location.pathname) console.log(location.search) //?之后的參數(shù) console.log(location.hash) //#號之后 //history history.back() history.forward()六、事件
知識點 通用事件綁定題目:
編寫一個通用的事件監(jiān)聽函數(shù)
描述時間冒泡流程
對于一個無限下拉加載圖片的頁面,如何給每個圖片綁定事件
知識點:
通用事件綁定
事件冒泡
代理
var btn = document.getElementById("btn1") btn.addEventListener("click", function(event) { console.log("clicked") }) function bindEvent(elem, type, fn) { elem.addEventListener(type, fn) } var a = document.getElementById("link1") bindEvent(a, "click", function(e) { e.preventDefault(); //阻止默認(rèn)行為 alert("clicked") })
關(guān)于IE低版本的兼容性
IE低版本使用attachEvent綁定事件,和W3C標(biāo)準(zhǔn)不一樣
IE低版本使用量已非常少,很多網(wǎng)站早已不支持
建議對IE低版本的兼容性:了解即可,無須深究
如果遇到對IE低版本要求苛刻的面試,果斷放棄
事件冒泡e.stopPropatation() //取消冒泡
代理var div1 = document.getElementById("div1") div1.addEventListener("click",function(e){ var target = e.target if(target.nodeName === "A"){ alert(target.innerHTMl) } })
完整寫法
function bindEvent(elem, type, selector, fn) { if (fn == null) { fn = selector selector = null } elem.addEventListener(type, function(e) { var target if (selector) { target = e.target if (target.matches(selector)) { fn.call(target, e) } } else { fn(e) } }) } //使用代理 var div1 = document.getElementById("div1") bindEvent(div1, "click", "a", function(e) { console.log(this.innerHTML) }) //不使用代理 var a = document.getElementById("a1") bindEvent(div1, "click", function(e) { console.log(a.innerHTML) })面試題 面試題1:編寫一個通用的事件監(jiān)聽函數(shù) 面試題2:描述事件冒泡流程
DOM樹形結(jié)構(gòu)
事件冒泡
組織冒泡
冒泡的應(yīng)用
面試題3:對于一個無限下拉加載圖片的頁面,如何給每個圖片綁定事件使用代理
知道代理的兩個優(yōu)點
七、AjaxXMLHttpRequest題目:
手動寫一個ajax,不依賴第三方庫
跨域的幾種實現(xiàn)(原理)
知識點:
xmlHttpRequest
狀態(tài)碼說明
跨域
var xhr = new XMLHttpRequest() xhr.open("GET","/api",false) xhr.onreadystatechange = function(){ //這里的函數(shù)異步執(zhí)行,可參考之前JS基礎(chǔ)中的異步模塊 if(xhr.readyState == 4){ if(xhr.status == 200){ alert(xhr.responseText) } } } xhr.send(null)
IE兼容性問題
IE低版本使用ActiveXObject,和W3C標(biāo)準(zhǔn)不一樣
IE低版本使用量已經(jīng)非常少,很多網(wǎng)站早已不支持
建議對IE低版本的兼容性:了解即可,無需深究
如果遇到對IE低版本要求苛刻的面試,果斷放棄
.
狀態(tài)碼說明
0 - (未初始化) ????還沒調(diào)用send()方法
1 - (載入)????????????已調(diào)send() 方法,正在發(fā)送請求
2 - (載入完成) ????send()方法執(zhí)行完成,已經(jīng)接收到全部相應(yīng)內(nèi)容
3 - (交互) ???????????正在解析響應(yīng)內(nèi)容
4 - (完成)????????????響應(yīng)內(nèi)容解析完成,可以在客戶端調(diào)用了
.
跨域status說明
2XX - 表示成功處理請求。如200
3XX - 需要重定向,瀏覽器直接跳轉(zhuǎn)
4XX - 客戶端請求錯誤,如404
5XX - 服務(wù)器端錯誤
什么是跨域
瀏覽器有同源策略,不允許ajax訪問其他域的接口
跨域條件:協(xié)議、域名、端口,有一個不同就算跨域
?
可以跨域的三個標(biāo)簽
?
三個標(biāo)簽的場景
用于打點統(tǒng)計,統(tǒng)計網(wǎng)站可能是其他域(而且沒有任何兼容性問題)
可以使用CDN,CDN也是其他域
可以用于JSONP
?
跨越注意的問題
所有的跨域請求都必須經(jīng)過信息提供方允許
如果未經(jīng)允許即可獲取,那是瀏覽器同源策略出現(xiàn)漏洞
?
JSONP實現(xiàn)原理
加載 http://coding.xxx.com/classin...
不一定服務(wù)器端真正有一個classindex.html文件
服務(wù)器可以根據(jù)請求,動態(tài)生成一個文件,返回
通理于
//例如你的網(wǎng)站要跨域訪問xx網(wǎng)的一個接口 //給你一個地址 http://coding.xxxx.com/api.js //返回內(nèi)容格式 callback({x:100,y:200})
服務(wù)器端設(shè)置http headercookie、sessionStorage、localStorage的區(qū)別
容量
是否會攜帶到ajax中
API易用性
ios safari隱藏模式下,localStorage.getItem會報錯,建議統(tǒng)一用try-catch封裝
面試全家桶
HTML+CSS 面試整理????????????????????????????????--------------------------------> 點這里
前端高級面試整理(三大框架等深入知識) --------------------------------> 點這里
javascript性能優(yōu)化??????????????????????????????????????--------------------------------> 點這里
javascript設(shè)計模式??????????????????????????????????????--------------------------------> 點這里
HTTP相關(guān)面試????????????????????????????????????????????-------------------------------->點這里
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/96621.html
摘要:一些知識點有哪些方法方法前端從入門菜鳥到實踐老司機所需要的資料與指南合集前端掘金前端從入門菜鳥到實踐老司機所需要的資料與指南合集歸屬于筆者的前端入門與最佳實踐。 工欲善其事必先利其器-前端實習(xí)簡歷篇 - 掘金 有幸認(rèn)識很多在大廠工作的學(xué)長,在春招正式開始前為我提供很多內(nèi)部推薦的機會,非常感謝他們對我的幫助。現(xiàn)在就要去北京了,對第一份正式的實習(xí)工作也充滿期待,也希望把自己遇到的一些問題和...
摘要:也就正式開始了我的前端之路。在這期間,我還購買并配置了自己的云服務(wù)器,自己的博客系統(tǒng),自己的還學(xué)會了的基本操作。不必說的是高級程序設(shè)計豆瓣鏈接這本書,也就是大家常說的高程,基本上每個合格的前端程序員都要熟讀很多很多次,每次讀都會有新發(fā)現(xiàn)。 原創(chuàng) 西安前端交流會: 卡農(nóng) ovenzeze@qq.com 本文章同步發(fā)表在wdShare西安前端交流會網(wǎng)站、我的個人博客以及segmentF...
摘要:也就正式開始了我的前端之路。在這期間,我還購買并配置了自己的云服務(wù)器,自己的博客系統(tǒng),自己的還學(xué)會了的基本操作。不必說的是高級程序設(shè)計豆瓣鏈接這本書,也就是大家常說的高程,基本上每個合格的前端程序員都要熟讀很多很多次,每次讀都會有新發(fā)現(xiàn)。 原創(chuàng) 西安前端交流會: 卡農(nóng) ovenzeze@qq.com 本文章同步發(fā)表在wdShare西安前端交流會網(wǎng)站、我的個人博客以及segmentF...
摘要:我的是忙碌的一年,從年初備戰(zhàn)實習(xí)春招,年三十都在死磕源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實習(xí)。因為我心理很清楚,我的目標(biāo)是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來的學(xué)習(xí)計劃,將我的短期目標(biāo)更新成拿下阿里轉(zhuǎn)正。 我的2017是忙碌的一年,從年初備戰(zhàn)實習(xí)春招,年三十都在死磕JDK源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實習(xí)offer。然后五月懷著忐忑的心情開始了螞蟻金...
摘要:并嘗試用為什么你統(tǒng)計的方式是錯的掘金翻譯自工程師的文章。正如你期望的,文中的前端開發(fā)單一職責(zé)原則前端掘金單一職責(zé)原則又稱單一功能原則,面向?qū)ο笪鍌€基本原則之一。 單頁式應(yīng)用性能優(yōu)化 - 首屏數(shù)據(jù)漸進(jìn)式預(yù)加載 - 前端 - 掘金前言 針對首頁和部分頁面打開速度慢的問題,我們開始對單頁式應(yīng)用性能進(jìn)行優(yōu)化。本文介紹其中一個方案:基于 HTTP Chunk 的首屏數(shù)據(jù)漸進(jìn)式預(yù)加載方案,該方案總...
閱讀 2259·2021-10-09 09:41
閱讀 3408·2021-09-13 10:34
閱讀 1920·2019-08-30 12:59
閱讀 556·2019-08-29 17:27
閱讀 1063·2019-08-29 16:07
閱讀 2956·2019-08-29 13:15
閱讀 1306·2019-08-29 13:14
閱讀 1560·2019-08-26 12:18