Javascript 模組化理解
原始時代: script標籤引入javascript檔案
-------------------- main.js ----------------------
define(['sum'],function(sum){
document.getElementById('result').innerHTML = sum(3);
})
-------------------- sum.js ----------------------
define(['add'],function(add)){
varsum =function(n){
returnadd(1,2) + n;
}
returnsum;
})
-------------------- add.js ----------------------
// add.js
define([],function(){
varadd =function(a, b){
returna + b;
};
returnadd;
});
瀏覽器載入index.html,而index.html又載入require.js。剩下的檔案及其依賴都是由require.js負責載入。
RequireJS 和 AMD 解決了我們以前所遇到的所有問題。然而,它也帶來了一些不那麼嚴重的問題:
1.AMD 的語法過於冗餘。因為所有東西都封裝在define函式中
2.陣列中的依賴列表必須與函式的引數列表匹配。如果存在許多依賴項,則很難維護依賴項的順序
3.在當前瀏覽器下(HTTP 1.1),載入很多小檔案會降低效能
模組打包器: Browserify
可以在瀏覽器中使用 CommonJS 模組,通過 Browserify 遍歷程式碼的依賴樹,並將依賴樹中的所有模組打包成一個檔案。
不同於 RequireJS ,Browserify 是一個命令列工具,需要依賴 NPM 環境,
困惑的時代: UMD
UMD 是一套用來識別當前環境支援的模組風格的 if/else 語句
無論是JavaScript 全域性模組物件,還是 CommonJS 或是 AMD 更是 UMD,都太麻煩了,額外增加了很多工作量,並且不易維護。
光明的時代: ES6模組語法
ES6 用import和export關鍵字來匯入和匯出模組
ES6 模組語法是簡潔的,雖然目前瀏覽器並未全部支援,但可以使用一些工具(babel)來轉化它
工程化的時代: Webpack
雖然gulp、grunt都號稱是工程化開發工具,,但個人感覺他們處理的東西還是比較基礎,對於模組依賴打包來說,支援不是非常好,反正我是不喜歡gulp.
Webpack 是一個 模組打包器,就像 Browserify 一樣,它會遍歷依賴樹,然後將其打包到一到多個檔案。
它與Browserify 不同之處就是 可以處理 CommonJS 、 AMD 和 ES6 模組,並且 Webpack 還有更多實用的東西,比如程式碼分離、載入器、外掛
簡潔的時代:Rollup
rollup 只會將需要的函式包含到打包檔案中,從而顯著減少打包檔案大小
發現 add.js的sub()函式並沒有包含在這個打包檔案中,因為沒有引用它。
相關文章
- JavaScript模組化JavaScript
- 深入理解javascript系列(十):模組化與閉包JavaScript
- Javascript 模組化指北JavaScript
- JavaScript 模組化前世今生JavaScript
- JavaScript 中的模組化JavaScript
- JavaScript 模組化總結JavaScript
- javascript模組化簡介JavaScript
- JavaScript模組化規範JavaScript
- 爬蟲逆向基礎,理解 JavaScript 模組化程式設計 webpack爬蟲JavaScript程式設計Web
- JavaScript模組化的演變JavaScript
- JavaScript模組化演化史JavaScript
- JavaScript模組化原理淺析JavaScript
- javascript 模組化程式設計JavaScript程式設計
- 關於模組化、元件化的理解元件化
- Js模組化開發的理解JS
- 如何理解模組化鏈(Modular Chain)?AI
- javascript模組化發展歷程JavaScript
- Javascript模組化開發基礎JavaScript
- 【JavaScript】淺談前端模組化與元件化JavaScript前端元件化
- JavaScript 模組JavaScript
- 深入理解JVM(③)Java的模組化JVMJava
- 潛入理解ES6-模組化
- JavaScript 模組化及 SeaJs 原始碼分析JavaScriptJS原始碼
- Javascript模組化的演進歷程JavaScript
- Javascript 模組化管理的來世今生JavaScript
- 簡述JavaScript模組化程式設計(二)JavaScript程式設計
- 為什麼JavaScript需要模組化開發?JavaScript
- JavaScript 模組封裝JavaScript封裝
- JavaScript 模組化解析JavaScript
- JavaScript 模組相關JavaScript
- Javascript模組全攬JavaScript
- 簡單聊一聊Javascript中的模組化JavaScript
- 這一次,我要弄懂javascript的模組化JavaScript
- 序列化模組,隨機數模組,os模組,sys模組,hashlib模組隨機
- Android模組化改造以及模組化通訊框架Android框架
- 序列化模組,subprocess模組,re模組,常用正則
- 前端模組化前端
- JS模組化JS
- javascript中的模組系統JavaScript