03_Node js 模組化 CommonJS

Web前端開發小K發表於2019-02-17

一、什麼是 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
複製程式碼

03_Node js 模組化 CommonJS

期待您的關注!

相關文章