亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

通過實例解析js簡易模塊加載器

2024-05-06 16:52:18
字體:
來源:轉載
供稿:網友

前端模塊化
關注前端技術發展的各位親們,肯定對模塊化開發這個名詞不陌生。隨著前端工程越來越復雜,代碼越來越多,模塊化成了必不可免的趨勢。

各種標準

由于javascript本身并沒有制定相關標準(當然es6已經有了import和export),所以在模塊化方面誕生了各種不同的規范。主要有AMD規范(隨requirejs誕生而普及),CMD規范(隨seajs的出現而普及),commonjs(主要用于node,并不適合前端)。至于以上幾種規范的異同,無恥的我在這里就不多費口水了,請還不了解的親們自行去找google爸爸。

簡易模塊加載器示例

G點來了!

接下來我們先來看一段建議模塊加載器的示例代碼:

let Module = (() => {let module_list = {};function define(name,rely,callback){if (module_list[name]){console.log("The module have already existed!")}else{for(let i = 0;i < rely.length;i++){rely[i] = module_list[rely[i]];}module_list[name] = callback.apply(callback,rely);}}function require(name){if (module_list[name]){return module_list[name]}else{console.log("There is no such module!")}}let api = {"define":define,"require":require};return api;})();

以上是加載器的實現,再來看看如何使用吧:

Module.define("test",[],()=>{function sayHello(name){return name+",你好啊";}return {"sayHello":sayHello}})Module.define("haha",[],()=>{function gotoHZ(name){return name+"要去杭州玩了";}return {"gotoHZ":gotoHZ}})Module.define("my_module",["test","haha"],(test,haha)=>{let name = "andrew";function sayHello2() {let str = test.sayHello(name);console.log(haha.gotoHZ("章煒"))str = str + ",今天天氣不錯噢";return str;}return {"sayHello2":sayHello2}})console.log(Module.require('my_module').sayHello2())console.log(Module.require('test').sayHello("steve"))

在以上代碼中,我們定義了三個模塊,分別名為test,haha,my_module。看到這里的你,如果js基礎不好,可能是一臉懵逼,腦子繞暈...先不急,讓我們來看看運行的結果:

js,模塊加載器

結果很簡單,打印了一些我們想要的信息。

代碼分析

接下來我們詳細來解析一下代碼原理。

加載器中的幾個重點,

1.dule_list

module_list是一個對象,用于存儲定義的模塊,以模塊名:callback這樣 
的鍵值對的形式存儲;

2.fine函數

然后我們定義了一個define函數,其三個參數分別為模塊名、此模塊依賴列表、此模塊回調函數,當我們調用define函數時,首先先去檢查module_list對
象中是否已經有同名模塊,如果有,直接告訴用戶該模塊名字已被使用,如果沒有,我們循環依賴列表rely,循環中的操作用于將依賴列表從名稱列表轉換為真正的模塊列表,然后利用apply函數,將其逐個傳入到定義好的callback函數中。

3.quire函數

由于我們的module_list存在于內部作用域,保證了模塊的私密性,外部并不能
直接操作模塊列表去讀取模塊,因此我們定義了一個require函數,利用閉包來讀取操作相應模塊

4.解析

Module.define("my_module",["test","haha"],(test,haha)=>{
let name = "andrew";
function sayHello2() {
let str = test.sayHello(name);
console.log(haha.gotoHZ("章煒"))
str = str + ",今天天氣不錯噢";
return str;
}

return {
"sayHello2":sayHello2
}
})

這里我們定義了my_module模塊,它依賴的模塊有test、haha兩個模塊,而在回調函數中,我們將這兩個模塊傳入,可以看到我們能調用test模塊的sayHello方法,可以調用haha模塊的gotoHZ方法,至此,一個簡單的模塊加載器就實現了。

結語

這個簡單的模塊加載器只是很簡化的介紹了模塊加載器實現的基本原理,成熟的模塊加載器當然是要復雜得多,但是原理了解了,才是最重要,不是嘛~

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久夜色撩人精品| 成人免费看黄网站| 7m精品福利视频导航| 欧美大片在线影院| 久久这里有精品| 久久亚洲精品中文字幕冲田杏梨| 精品高清美女精品国产区| 欧美日韩一区二区免费视频| 国语自产精品视频在线看一大j8| 精品视频在线播放色网色视频| 伊人久久免费视频| 美日韩精品免费视频| 欧美性猛交xxxx富婆| 亚洲黄页视频免费观看| 日韩一区二区欧美| 欧美情侣性视频| 91久久久久久国产精品| 日韩av在线免费观看一区| 日本成人黄色片| 国产精品com| 日韩欧美主播在线| 国产精品69av| 一个人www欧美| 亚洲第一精品电影| 午夜精品久久久久久久白皮肤| 亚洲美女av网站| 欧美最近摘花xxxx摘花| 久久深夜福利免费观看| 日韩国产激情在线| 成人免费视频在线观看超级碰| 97成人精品视频在线观看| 欧美极度另类性三渗透| 日韩精品欧美国产精品忘忧草| 久久精品国产成人| 91社区国产高清| 欧美另类老女人| 最近2019年中文视频免费在线观看| 日韩在线激情视频| 日韩av最新在线观看| 琪琪亚洲精品午夜在线| 激情成人在线视频| 国产日韩在线亚洲字幕中文| 亚洲区中文字幕| 国产精品免费一区| 亚洲人成网在线播放| 午夜精品一区二区三区在线| 日本三级久久久| 成人亚洲综合色就1024| 欧美尤物巨大精品爽| 国产91精品久久久久| 国产精品视频yy9099| 成人h片在线播放免费网站| 伊人伊人伊人久久| 国产日韩换脸av一区在线观看| 久久久精品一区| 欧美激情免费视频| 精品一区二区亚洲| 欧美视频在线免费看| 一区二区三区无码高清视频| 亚洲色图第一页| 亚洲午夜未满十八勿入免费观看全集| 日本不卡视频在线播放| 欧美性受xxx| 美女啪啪无遮挡免费久久网站| 中文字幕自拍vr一区二区三区| 日本精品久久久| 2019精品视频| 98精品国产自产在线观看| 精品免费在线观看| 一区二区三区视频免费在线观看| 色综合久久久888| 国产精品成人免费电影| 热草久综合在线| 97在线视频免费播放| 在线播放精品一区二区三区| 中文字幕国产精品久久| 亚洲国产精品美女| 91国产美女视频| 精品夜色国产国偷在线| 久久精品国产视频| 91精品免费久久久久久久久| 91美女高潮出水| 成人午夜小视频| 日韩经典中文字幕在线观看| 日本免费久久高清视频| 4p变态网欧美系列| 成人免费视频97| 91在线观看欧美日韩| 夜夜躁日日躁狠狠久久88av| 国产精品视频网| 国精产品一区一区三区有限在线| 欧美一性一乱一交一视频| 国产综合在线观看视频| 欧美日韩黄色大片| 91精品国产乱码久久久久久蜜臀| 国产精品久久久久久av福利| 91精品国产自产在线老师啪| 91系列在线观看| 国产日韩欧美影视| 国产91av在线| 欧美有码在线视频| 成人欧美一区二区三区在线湿哒哒| 中文字幕av日韩| 色天天综合狠狠色| 色哟哟亚洲精品一区二区| 日韩欧美一区视频| 成人中心免费视频| 国产日韩欧美黄色| 草民午夜欧美限制a级福利片| 狠狠躁夜夜躁人人爽超碰91| 欧美一级大片视频| 色妞色视频一区二区三区四区| 亚洲曰本av电影| 欧美日本国产在线| 亚洲成人黄色网址| 欧美在线视频播放| 欧美成人三级视频网站| 成人乱人伦精品视频在线观看| 国产深夜精品福利| 亚洲福利在线观看| 在线精品国产成人综合| 亚洲国产精品99久久| 国产精品久久久久久久久借妻| 亚洲精品久久久久中文字幕二区| 亚洲老司机av| 欧美日韩亚洲91| 91精品国产电影| 久久久久久国产免费| 中文字幕亚洲欧美日韩2019| 欧美亚洲第一页| 国产精品爽爽ⅴa在线观看| 91久久久久久久久久| 国产精品精品久久久久久| 亚洲美女av网站| 精品一区二区三区三区| 国产精品毛片a∨一区二区三区|国| 8x海外华人永久免费日韩内陆视频| 亚洲一区二区在线| 久久精品最新地址| 韩剧1988在线观看免费完整版| 亚洲欧美精品在线| 国产成人精彩在线视频九色| 国产精品精品一区二区三区午夜版| 奇门遁甲1982国语版免费观看高清| 欧美亚洲午夜视频在线观看| 国产成人精品一区| 亚洲精品国产精品乱码不99按摩| 亚洲一区免费网站| 992tv在线成人免费观看| 一夜七次郎国产精品亚洲| 欧美激情国产日韩精品一区18| 亚洲欧美变态国产另类| 日本亚洲精品在线观看| 欧美日韩亚洲天堂| 欧美激情一区二区三区在线视频观看| 欧美中文字幕精品| 亚洲精品欧美日韩专区| 爽爽爽爽爽爽爽成人免费观看| 91网在线免费观看| 精品亚洲男同gayvideo网站| 96pao国产成视频永久免费| 主播福利视频一区| 精品国产一区二区三区四区在线观看| 欧美在线视频导航|