成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

優(yōu)化網(wǎng)站起始載入所花費(fèi)的時(shí)間

VincentFF / 1295人閱讀

摘要:因上面我是等著方法觸發(fā)后才開(kāi)始載入文件,所以使用或者差別不大如果是要完全避免上面的問(wèn)題則是要等依賴的加載成功,觸發(fā)方法時(shí)再去加載該則可以解決因加載速度比依賴的的加載速度更快出現(xiàn)的問(wèn)題。

最近對(duì)單頁(yè)面比較感興趣,想用單頁(yè)面實(shí)現(xiàn)原生app的效果,但單頁(yè)面應(yīng)用將多頁(yè)面匯集到一個(gè)頁(yè)面上,由此可知初始加載的數(shù)據(jù)會(huì)很大,這樣會(huì)導(dǎo)致在初始加載網(wǎng)頁(yè)的時(shí)候會(huì)有一個(gè)比較漫長(zhǎng)的等待時(shí)長(zhǎng),特別是網(wǎng)絡(luò)不好的情況下等待時(shí)長(zhǎng)就更不能讓用戶滿足。

為了解決這個(gè)問(wèn)題,我想到一個(gè)解決方法,在頁(yè)面先不加載js和css文件,首先展示一些準(zhǔn)備好的圖片或者等待頁(yè)面(數(shù)據(jù)盡量小),然后等onload事件觸發(fā)的時(shí)候再一一將js文件和css文件載入到頁(yè)面。

window.onload = function(){
          var scripts = ["/static/js/jquery-1.8.3.min.js","/static/js/fuc.js","/static/js/app.js"];
          var s = 0;
          scripts.forEach(function(scriptSrc){
              var head = document.getElementsByTagName("head")[0];
                 var script = document.createElement("script");
                script.type = "text/javascript";
                script.charset = "utf-8";
                script.async = true;
                script.timeout = 120000;
                script.src = scriptSrc;
                head.appendChild(script);
                script.onload=function(){
                    s++;
                    if(s == scripts.length){
                        var load = document.getElementById("load");
                        var app = document.getElementById("app");
                        load.style.display = "none";
                        app.style.display = "block";
                    }
                }
          });
      }

如代碼所示,當(dāng)所有的js都成功加載后,再將主頁(yè)面對(duì)應(yīng)的div顯示出來(lái),這樣用戶的體驗(yàn)才會(huì)比較良好。這里定義了一個(gè)變量s,當(dāng)變量s等于加載的js的數(shù)量的時(shí)候才會(huì)顯示主頁(yè)面,所以如果出現(xiàn)一個(gè)沒(méi)有成功加載都會(huì)導(dǎo)致頁(yè)面不會(huì)出現(xiàn)。值得一提的是async這個(gè)屬性等于true的時(shí)候是異步加載,這樣加載速度會(huì)更加快,但是這也會(huì)出現(xiàn)一個(gè)問(wèn)題:如果出現(xiàn)一個(gè)js會(huì)依賴另一個(gè)js的時(shí)候就會(huì)可能出現(xiàn)錯(cuò)誤,就比如上面的代碼中的app.js用到了jquery,當(dāng)app.js加載速度會(huì)jquery-1.8.3.min.js更快的時(shí)候會(huì)提前渲染,此時(shí)jquery并沒(méi)有加載,所以app.js使用到j(luò)query的地方就會(huì)報(bào)錯(cuò)。

Script異步加載還可以用defer屬性,defer屬性與async不同的是defer載入成功不會(huì)自動(dòng)渲染而是等到onload事件觸發(fā)時(shí)才會(huì)開(kāi)始執(zhí)行,而async屬性是文件載入成功就立即執(zhí)行。

因上面我是等著onload方法觸發(fā)后才開(kāi)始載入js文件,所以使用async或者defer差別不大
如果是要完全避免上面的問(wèn)題則是要等依賴的js加載成功,觸發(fā)script.onload方法時(shí)再去加載該js,則可以解決因加載速度比依賴的js的加載速度更快出現(xiàn)的問(wèn)題。還有一種方法,就是把所有的js打包到一個(gè)js里面,我這里是使用了webpack打包程序?qū)⒄麄€(gè)程序都打包到了一個(gè)js,這樣加載就不會(huì)有問(wèn)題了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/87189.html

相關(guān)文章

  • Web最佳實(shí)踐閱讀總結(jié)(1)

    摘要:介紹最近開(kāi)始刷一些書(shū)和題此系列是介紹在讀最佳實(shí)踐的一些收獲和體會(huì)。先修改諸如命名,格式等不涉及具體邏輯的內(nèi)容重構(gòu)過(guò)程中要持續(xù)測(cè)試,在多個(gè)瀏覽器測(cè)試,確保重構(gòu)的部分功能正確。 介紹 最近開(kāi)始刷一些書(shū)和題,此系列是介紹在讀Web最佳實(shí)踐的一些收獲和體會(huì)。 showImg(https://segmentfault.com/img/remote/1460000011465909?w=309&...

    liaosilzu2007 評(píng)論0 收藏0
  • Web最佳實(shí)踐閱讀總結(jié)(1)

    摘要:介紹最近開(kāi)始刷一些書(shū)和題此系列是介紹在讀最佳實(shí)踐的一些收獲和體會(huì)。先修改諸如命名,格式等不涉及具體邏輯的內(nèi)容重構(gòu)過(guò)程中要持續(xù)測(cè)試,在多個(gè)瀏覽器測(cè)試,確保重構(gòu)的部分功能正確。 介紹 最近開(kāi)始刷一些書(shū)和題,此系列是介紹在讀Web最佳實(shí)踐的一些收獲和體會(huì)。 showImg(https://segmentfault.com/img/remote/1460000011465909?w=309&...

    Cympros 評(píng)論0 收藏0
  • Web最佳實(shí)踐閱讀總結(jié)(1)

    摘要:介紹最近開(kāi)始刷一些書(shū)和題此系列是介紹在讀最佳實(shí)踐的一些收獲和體會(huì)。先修改諸如命名,格式等不涉及具體邏輯的內(nèi)容重構(gòu)過(guò)程中要持續(xù)測(cè)試,在多個(gè)瀏覽器測(cè)試,確保重構(gòu)的部分功能正確。 介紹 最近開(kāi)始刷一些書(shū)和題,此系列是介紹在讀Web最佳實(shí)踐的一些收獲和體會(huì)。 showImg(https://segmentfault.com/img/remote/1460000011465909?w=309&...

    DirtyMind 評(píng)論0 收藏0
  • Python--Redis實(shí)戰(zhàn):第二章:使用Redis構(gòu)建Web應(yīng)用:第四節(jié):數(shù)據(jù)行緩存

    摘要:實(shí)際執(zhí)行緩存操作的函數(shù)需要用到數(shù)據(jù)行的延遲值,如果某個(gè)數(shù)據(jù)行的延遲值不存在,那么程序?qū)⑷∠麑?duì)這個(gè)數(shù)據(jù)行的調(diào)度。上一篇文章實(shí)戰(zhàn)第二章使用構(gòu)建應(yīng)用第三節(jié)網(wǎng)頁(yè)緩存下一篇文章實(shí)戰(zhàn)第二章使用構(gòu)建應(yīng)用第五節(jié)網(wǎng)頁(yè)分析 上一篇文章: Python--Redis實(shí)戰(zhàn):第二章:使用Redis構(gòu)建Web應(yīng)用:第三節(jié):網(wǎng)頁(yè)緩存下一篇文章:Python--Redis實(shí)戰(zhàn):第二章:使用Redis構(gòu)建Web應(yīng)用:第...

    TwIStOy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<