国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

詳解Js模塊化的作用原理和方案

瀏覽:79日期:2024-03-30 11:16:52
一、模塊化概念

將一個復雜的程序依據一定的規則(規范)封裝成幾個塊(文件), 并進行組合在一起;塊的內部數據與實現是私有的, 只是向外部暴露一些接口(方法)與外部其它模塊通信。

二、模塊化作用

為什么要用模塊化的JavaScript?

因為在實際的開發過程中,經常會遇到變量、函數、對象等名字的沖突,這樣就容易造成沖突,還會造成全局變量被污染;同時,程序復雜時需要寫很多代碼,而且還要引入很多類庫,這樣稍微不注意就容易造成文件依賴混亂;為了解決上面的的問題,我們才開始使用模塊化的js,所以說模塊化的作用就是:

避免全局變量被污染 便于代碼編寫和維護三、模塊化歷程1、普通寫法(全局函數及變量)

其實只要是不同的函數或變量放一起就是簡單的模塊,這樣弊端很明顯,就是變量容易被污染;

var name = ’卡卡’;function cat1(){ name = ’年年’;}function cat2(){ name = ’有魚’;}2、對象封裝

將整個模塊放在一個對象里面,外部訪問時直接調用對象的屬性或者方法就行

var cat = { name:’卡卡’, cat1:function(){var name = ’年年’;console.log(name); }, cat2:function(){var name = ’有魚’;console.log(name); }}cat.name;// 卡卡cat.cat1();// 年年cat.cat2();// 有魚

這種方法雖然解決了變量沖突問題,但是容易被外部隨意修改:

cat.name = ’樓樓’;3、匿名函數方式

var cat = (function () { // 匿名函數的局部變量name var name = ’卡卡’; // 匿名函數的局部函數cat1 var cat1 = function () {var name = ’年年’;console.log(name); }; // 匿名函數的局部函數cat2 var cat2 = function () {var name = ’有魚’;console.log(name); }; //通過window暴露一個對外的口,想要被外界訪問,可以放到這里 window.myModule = {cat1:cat1,cat2:cat2,name:name, };})();console.log(myModule.name);// name變量放入暴露口內,可以輸出,結果為:卡卡myModule.cat1();// cat1函數放入暴露口內,可以輸出,結果為:年年myModule.cat2();// cat2函數放入暴露口內,可以輸出,結果為:有魚

如果把變量name移除,此時再訪問就訪問不了,結果為undefined,這樣就實現了變量不被隨意修改的問題,即:

window.myModule = { cat1:cat1, cat2:cat2,};console.log(myModule.name);// undefined

匿名函數方式基本上解決了函數污染及變量隨意被修改問題,這個也是模塊化規范的基石!

詳解Js模塊化的作用原理和方案

四、模塊化方案

根據匿名函數自調用的方式,同時為了增強代碼依賴性,現在大部分JavaScript運行環境都有自己的模塊化規范;

可以分為:Commonjs、AMD、CMD、ES6 module四大類

1、CommonJS

①在node環境下使用,不支持瀏覽器環境②NodeJS遵循的規范③使用require()進行引入依賴④使用exports進行暴露模塊

2、AMD

①瀏覽器環境下的異步加載模塊②RequireJS遵循的規范③依賴于require.js模塊管理工具庫④AMD 推崇依賴前置

3、CMD

①瀏覽器環境下,同時支持異步和同步加載②SeaJS遵循的規范③CMD 推崇依賴就近

4、ES6 module

ES6模塊化語法在編譯時就能確定模塊的依賴關系,還能確定好輸入輸出的變量聲明,已經不僅僅是模塊規范,現在已經作為JS語言的標準語法使用,有以下特性:

①瀏覽器環境、服務器環境都支持②編譯時就能確定模塊的依賴關系及變量,其他模塊規范都是在運行時確定的③export命令用于規定模塊的對外接口④import命令用于輸入其他模塊提供的功能

這里補充一點:ES5版本的模塊化方案,僅在語言的層面上實現了模塊化,缺點在于無法直接運行在大部分 JavaScript 運行環境下,必須通過構建工具轉換成標準的 ES5 后才能正常運行,這里就需要使用自動化構建工具webpack。

以上就是詳解Js模塊化的作用原理和方案的詳細內容,更多關于Js模塊化的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 久久精品一区二区三区四区 | 久久久亚洲欧洲日产国码二区 | 日本一级大毛片a一 | 国产精品久久久久久小说 | 国产精品一区二区三区高清在线 | 国产一区亚洲 | 成人免费在线网站 | 欧美性色高清生活片 | 日韩国产午夜一区二区三区 | 亚洲美女视频网址 | 日韩精品999| 久草在线视频在线观看 | 国产精品亚洲第五区在线 | 亚洲大片免费观看 | 国产美女精品视频 | 免费观看一级成人毛片软件 | 最新99国产成人精品视频免费 | 长腿校花被啪到腿软视频 | 亚洲精品一区二区观看 | 日本a级片免费看 | 国产99精品免费视频看6 | 99爱视频99爱在线观看免费 | 搞黄网站在线观看 | 久久夜色精品国产噜噜亚洲a | 99国产福利视频区 | 性高湖久久久久久久久aaaaa | 日韩三级中文字幕 | 国产午夜精品久久理论片小说 | 久久99亚洲精品久久久久99 | 欧美特级一级毛片 | 午夜两性试爱视频免费 | 欧美三级香港三级日本三级 | 亚洲美女一级片 | 中文字幕人成乱码在线观看 | 女女同性一区二区三区四区 | 日韩中文字幕在线免费观看 | 亚洲天堂成人 | 国产成人综合91香蕉 | 久久精品国产精品亚洲毛片 | 日韩一级欧美一级一级国产 | 国产一级久久久久久毛片 |