淺談模塊化開發(fā)

歡迎訪問我的博客https://qqqww.com/,祝所有碼農(nóng)同胞們早日走上人生巔峰,迎娶白富美~~

@[TOC]

1 前言

前段時間做的項目,其中也用到了模塊化編程的思路,所以就想來總結(jié)下,方便以后使用,歡迎道友們踩點

1.1 什么是模塊化

將一個項目按照功能劃分,理論上一個功能一個模塊,互不影響,在需要的時候載入,盡量遵循高內(nèi)聚低耦合,關(guān)于高內(nèi)聚低耦合可以看我的另一篇博客ES6中的Symbol中的章節(jié)1.4中有對耦合性內(nèi)聚性的解釋

1.2 引入模塊化的意義

以往在javascript中,沒有明確的模塊化的概念,不能夠?qū)⒁粋€大的項目分成一些相互依賴的小文件,這對于項目的開發(fā)就很難受,看看以往我們載入js文件

<script src = '1.js'></script>
<script src = '2.js'></script>
<script src = '3.js'></script>
<script src = '4.js'></script>
<script src = '5.js'></script>
<script src = '6.js'></script>
  1. 這里解釋一下src,想必很多人都知道,src相當于下載文檔,且當執(zhí)行src嵌入文件時,下面的程序都不會執(zhí)行,將src指向的內(nèi)容嵌入到文檔標簽所在位置,向更加深入理解移步這里src和href的區(qū)別
  2. 那么我們理解了src是直接嵌入內(nèi)容到指定標簽之后再去加載很多js文件,就會知道,它會產(chǎn)生很多問題:
    1. 變量沖突,腳本過多,不利于維護等
    2. 必須按照嚴格的依賴文件順序
    3. src對文件的加載時必須要將當前src加載的文件加載完成才會執(zhí)行下面的代碼,當過多的腳本載入頁面,就增加了頁面等待時間,影響用戶體驗

由于諸如以上的原因,引入模塊化的解決方案

2 CommonJS

請移步我的另一篇博客模塊化開發(fā)之CommonJS規(guī)范

3 AMD 規(guī)范

請移步我的另一篇博客模塊化開發(fā)之AMD規(guī)范

4 CMD規(guī)范

請移步我的另一篇博客模塊化開發(fā)之CMD規(guī)范

5 AMD VS CMD

  1. 依賴規(guī)范AMD 依賴 RequireJS,而 CMD 依賴 SeaJS
  2. 依賴模塊AMD提前執(zhí)行,CMD延遲執(zhí)行,不過 RequireJS2.0開始,也改成可以延遲執(zhí)行(根據(jù)寫法不同,處理方式不同)
  3. API職責AMDAPI默認是一個當多個用,CMDAPI 嚴格區(qū)分,推崇職責單一,比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,沒有全局 require,而是根據(jù)模塊系統(tǒng)的完備性,提供 seajs.use 來實現(xiàn)模塊系統(tǒng)的加載啟動。CMD 里,每個 API簡單純粹

6 ES6中的Module

請移步我的另一篇博客ES6中Module語法與加載實現(xiàn)

7 ES6 中的模塊與 CommonJS 模塊差異

  1. CommonJS 模塊輸出的是一個值的拷貝,ES6 模塊輸出的是值的引用
  2. CommonJS 模塊是運行時加載,其中的require全部下載模塊,ES6 模塊是編譯時輸出接口,其中的import可以按需加載

9 參考文章

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容