今天讀了《深刻淺出Nodejs》的第二章:模塊機制。如今作一個簡單的小結。前端
序:模塊機制大體從這幾個部分來說:JS模塊機制的由來、CommonJS AMD CMD、Node模塊機制和包和npm。node
1. JS模塊機制的由來npm
因爲JS先天地缺少一項功能:模塊。經過<script></script>標籤引入代碼的方式顯得雜亂無章。社區也爲JS指定了相應的規範,CommomJS的出現是其中最重要的里程碑。後端
2. CommomJS規範緩存
require()方法,這個方法用來接收模塊標識 ,以此來引入一個模塊的API到上下文中;異步
exports是module的屬性;ui
在node中,一個文件就是一個模塊;spa
CommonJS構建的這套模塊導出和引入機制使得用戶沒必要考慮變量污染的問題。對象
3. Node模塊實現ip
Node有這樣的幾類模塊:文件模塊(用戶編寫)、核心模塊(Node提供的模塊)、內建模塊。加載的機制是先作路徑分析,分析沒有問題後,開始文件定位,文件定位沒有問題後,就開始編譯執行。
其中,加載文件機制有一個特色,就是優先從緩存中加載。在Node中,每個模塊都是一個對象。
4. 包和npm
包和npm是將模塊鏈接起來的一種機制。Node是對CommomJS規範的一種具體實現,必定程度上解決了變量依賴、依賴關係等代碼組織的問題 。包的出現,則是在模塊的基礎上,進一步組織JS代碼。
5. CommomJS、AMD、CMD
CommonJS是爲後端指定的規範,並不徹底適合前端的應用場景。AMD最終在前端場景中勝出,是由於它是「異步模塊定義」。可是AMD須要在聲明引用模塊的時候,指定全部的依賴;而玉伯提出的CMD則支持動態加載模塊,即在須要依賴模塊時,使用require()引入便可 。