一、什麼是 CommonJS?
CommonJS 就是為 JS 的表現來制定規範,因為 JS 沒有模組系統,標準庫較少,缺乏包管理工具,所以 CommonJS 應運而生,它希望 JS 可以在任何地方執行,而不只是在瀏覽器中,從而達到 Java、C#、PHP 這些後端語言具備開發大型應用的能力。
二、CommonJS 的應用
- 伺服器端 JavaScript 應用程式(Node.js)。
- 命令列工具。
- 桌面圖形介面應用程式。
三、CommonJS 與 Node.js 的關係?
CommonJS 就是模組化的標準,Node.js 就是 CommonJS(模組化)的實現。
四、Node.js 中的模組化?
在 Node 中,模組分為兩類:
-
一是 Node 提供的模組,稱為核心模組,例如 http 模組、url 模組、fs 模組。
-
二是使用者編寫的模組,稱為檔案模組,比如接下來要新建一個 js 檔案,並在裡邊新增的工具模組,通過 exports 或者 module.exports 將模組匯出,並通過 require 引入這些模組。
五、例項
首先新建一個 js 檔案,在裡邊新增工具模組,並暴露模組。
暴露模組的方式有兩種:
- exports
- module.exports
module.exports 是真正的介面,exports 是一個輔助工具。
如果 module.exports 為空,那麼所有的 exports 收集到的屬性和方法,都賦值給了 module.exports,如果 module.exports 具有任何屬性和方法,則 exports 會被忽略。
1、exports 使用方法:
let str = "learning CommonJS";
exports.str = str; // {str: "learning CommonJS"}
複製程式碼
2、module.exports 使用方法:
暴露出 tools 工具模組,通過 require 匯入使用(與 url 模組和 http 模組的引入方式相同)。
在下面程式碼中我們是用 module.exports 方式來暴露模組。
tools.js
const tools = {
length: (...numbers) => {
return numbers.length;
},
sum: (...numbers) => {
let sum = 0;
for (let number in numbers) {
sum += numbers[number]
};
return sum;
}
};
module.exports = tools;
複製程式碼
接下來再新建一個 js 檔案,並引入剛編寫的模組。
CommonJS.js
const tool = require('./tools.js')
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((request, response) => {
if (request.url != '/favicon.ico') {
console.log(tool.length(1,2,3));
console.log(tool.sum(1,2,3));
};
response.statusCode = 200;
response.setHeader('Content-Type', 'text/plain;charset=utf-8');
response.end('CommonJS,調取了 tool.js 工具模組中的 length() 和 sum() 兩個方法。');
});
server.listen(port, hostname, () => {
console.log(`伺服器執行在 http://${hostname}:${port}`);
});
複製程式碼
執行 node CommonJS.js,訪問:127.0.0.1:3000/
3
6
複製程式碼