日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

经验总结:按需加载JS和css

發布時間:2025/3/19 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 经验总结:按需加载JS和css 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目中做過這樣的事情:所有頁面都通過SSI指令 include這樣一份public-js.shtml, 用來引入涉及到的js(包括公共的腳本 驗證插件 自定義組件等),但是一些沒有交互效果的頁面根本不需要用到這些腳本,所以造成腳本冗余較大(盡管可以從緩存讀取,但還是應該盡量減少沒用到的腳本為佳)

public-js.shtml

<!--#config timefmt="%Y%m%d%H%M%S"-->
<script type="text/javascript" src="/js/jquery1.6.js?v=<!--#flastmod virtual='/js/jquery1.6.js' -->" ></script>
<!-- <script type="text/javascript" src="/js/core.js?v=#flastmod virtual='/js/core.js'" ></script>
-->
<script type="text/javascript" src="/js/public.js?v=#flastmod virtual='/js/public.js'" ></script>

<!-- 加載組件 -->

<!--#include virtual="/include/component.shtml" -->

<!-- 加載表單驗證插件 -->
<!--#include virtual="/include/nicevalidator.shtml" -->

<!-- 頁面通用函數 -->
<!--#include virtual="/include/page-js.shtml" -->

?

為了實現組件和驗證插件的按需加載,定義這么一個函數loadJsCss

/*** js和css按需加載 ***/ function loadJsCss(url, callback ){// 非阻塞的加載 后面的js會先執行var isJs = /\/.+\.js($|\?)/i.test(url) ? true : false;function onloaded(script, callback){//綁定加載完的回調函數if(script.readyState){ //iescript.attachEvent('onreadystatechange', function(){if(script.readyState == 'loaded' || script.readyState == 'complete'){script.className = 'loaded';callback && callback.constructor === Function && callback();}});}else{script.addEventListener('load',function(){script.className = "loaded";callback && callback.constructor === Function && callback();}, false); }}if(!isJs){ //加載cssvar links = document.getElementsByTagName('link');for(var i = 0; i < links.length; i++){//是否已加載if(links[i].href.indexOf(url)>-1){ return; }}var link = document.createElement('link');link.type = "text/css";link.rel = "stylesheet";link.href = url;var head = document.getElementsByTagName('head')[0]; head.insertBefore(link,head.getElementsByTagName('link')[0] || null );}else{ //加載jsvar scripts = document.getElementsByTagName('script');for(var i = 0; i < scripts.length; i++){//是否已加載if(scripts[i].src.indexOf(url)>-1 && callback && (callback.constructor === Function) ){ //已創建scriptif(scripts[i].className === 'loaded'){//已加載 callback();}else{//加載中 onloaded(scripts[i], callback);}return; }}var script = document.createElement('script');script.type = "text/javascript";script.src = url; document.body.appendChild(script);onloaded(script, callback); } }

// 表單驗證插件 動態加載
function loadValidator(callback){// 加載nicevalidator插件
loadJsCss("/css/nicevalidator.css");
loadJsCss("/js/nicevalidator.js", callback);
}

// 組件動態加載
function loadComponent(callback){// 加載自定義組件
loadJsCss("/css/component.css");
loadJsCss("/js/component.js", callback);
}

?

但是發現每個驗證方法或組件的調用都要放到回調函數內部,實在笨拙,而且改起來也很麻煩。如:

loadValidator(function(){ $('#frm').validator({...}););

loadComponent(function(){ $.Tab({...}); );

?

經過嘗試發現可以保持頁面原有的調用方式,只需在public.js公共js文件中定義相同接口即可:

(function(){$.fn.validator = function(){var args = arguments, self = this;loadValidator(function(){//~~~初始狀態fn.validator會請求js和css, 加載后的回調函數重寫 fn.validator 為正確的方法$.fn.validator.apply(self, args);})}var fnames = ['Tab',"SiceSlider","SiceLvSelect","SiceSelect"];$.each(fnames, function(i,fname){//~~~同理 回調函數重寫接口為正確的函數$[fname] = function(){var args = arguments;loadComponent(function(){ var Foo = function(){}; Foo.prototype = $[fname].prototype; var foo = new Foo(); // 需要new 的組件,這樣獲取參數對象$[fname].apply(foo,args); });}}); })(jQuery)

~~~個人認為在不用seaJs requireJs等模塊化管理插件的情況下,這種方式也還可以。

總結

以上是生活随笔為你收集整理的经验总结:按需加载JS和css的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产免费91 | 日韩精品视频在线观看网站 | 蜜桃精品久久久久久久免费影院 | 精品国产欧美一区二区 | 亚洲理论电影在线观看 | 中文字幕第八页 | 欧美熟妇一区二区 | 嫩草研究院在线 | 麻豆成人91精品二区三区 | 精品少妇一区二区三区在线观看 | av在线播放免费 | 日韩精彩视频在线观看 | 欧美另类在线观看 | 日本高清视频在线播放 | 麻豆亚洲精品 | 无码精品久久久久久久 | 成人爽爽爽 | 波多野结衣视频观看 | 亚洲精品综合在线 | 青青草在线播放 | 韩国伦理在线 | 日韩免费黄色片 | 国产精品69久久久久孕妇欧美 | 天天看天天操 | 91麻豆一区二区 | 中文字幕日韩欧美 | 人妖被c到高潮欧美gay | 国产日韩一区二区在线观看 | 国产白浆一区二区 | 三级黄在线观看 | 一级黄色录相 | 国产做爰xxxⅹ高潮视频12p | 奇米影视av | 好邻居韩国剧在线观看 | 四虎一国产精品一区二区影院 | 日韩视频免费在线观看 | 91视频毛片| 欧洲精品视频在线观看 | 91啦中文| 色婷婷视频网 | 夜夜嗨av一区二区三区 | 精品一区二区免费视频 | 日本a区 | 99精品视频免费看 | 二级毛片视频 | 国产精品白嫩极品美女视频 | 黑人糟蹋人妻hd中文字幕 | 亚洲精品888| 色撸撸在线观看 | 日韩大胆视频 | 91亚洲精品久久久久久久久久久久 | 久热中文字幕 | 91重口味| 国产成人精品亚洲精品色欲 | 久久精品国产亚洲AV熟女 | 未满十八岁禁止进入 | 亚洲一区二区三区高清 | 久久99国产综合精品免费 | 成人夜夜 | 日韩夜夜 | 亚洲伦理自拍 | 一区二区在线播放视频 | 911国产在线| 黄网址在线 | 三级伦理片 | 国产做爰视频免费播放 | 一级黄色片毛片 | 免费看av网 | 精品国产乱码久久久久久闺蜜 | 久久久国产精品久久久 | 亚洲黄色在线观看视频 | 每日在线更新av | 一区精品视频在线观看 | 色婷婷激情五月 | www.色呦呦| 91嫩草视频在线观看 | www.一级片 | 欧美zozo| 亚洲欧美在线免费 | 男生插女生视频在线观看 | 桃色av网站| 久操免费在线视频 | 啪啪免费小视频 | 欧美天天搞 | 91人人澡人人爽 | 国产乱大交 | 欧美性视屏 | 视色av| 老牛嫩草二区三区观影体验 | 五月婷在线视频 | 国产精品污网站 | 天堂网亚洲 | 国产精品夫妻自拍 | 欧美日韩视频在线播放 | 亚洲视频六区 | 国产小视频免费在线观看 | 久久亚洲成人 | 日韩亚洲国产欧美 | 99精品一区二区 |