一、 什么是 CommonJs?
JavaScript 是一個強大面向對象語言,它有很多快速高效的解釋器。 然而, JavaScript
標准定義的 API 是為了構建基於瀏覽器的應用程序。並沒有制定一個用於更廣泛的應用程序
的標准庫。 CommonJS 規范的提出,主要是為了彌補當前 JavaScript 沒有標准的缺陷。 它的終
極目標就是: 提供一個類似 Python, Ruby 和 Java 語言的標准庫,而不只是停留在小腳本程序
的階段。用 CommonJS API 編寫出的應用, 不僅可以利用 JavaScript 開發客戶端應用, 而且
還可以編寫以下應用。
•服務器端 JavaScript 應用程序。( nodejs)
•命令行工具。
•桌面圖形界面應用程序。
CommonJS 就是模塊化的標准, nodejs 就是 CommonJS( 模塊化) 的實現。
二、 Nodejs 中的模塊化
Node 應用由模塊組成,采用 CommonJS 模塊規范。
2.1 在 Node 中,模塊分為兩類:
一類是 Node 提供的模塊,稱為核心模塊;另一類是用戶編寫的模塊,稱為文件模塊。
• 核心模塊部分在 Node 源代碼的編譯過程中,編譯進了二進制執行文件。在 Node 進
程啟動時,部分核心模塊就被直接加載進內存中,所以這部分核心模塊引入時,文件定位和
編譯執行這兩個步驟可以省略掉,並且在路徑分析中優先判斷,所以它的加載速度是最快的。
如: HTTP 模塊 、 URL 模塊、 Fs 模塊都是 nodejs 內置的核心模塊,可以直接引入使用。
• 文件模塊則是在運行時動態加載,需要完整的路徑分析、文件定位、編譯執行過程、
速度相比核心模塊稍微慢一些,但是用的非常多。 這些模塊需要我們自己定義。 接下來我
們看一下 nodejs 中的自定義模塊。
2.2 CommonJS( Nodejs) 中自定義模塊的規定:
1.我們可以把公共的功能抽離成為一個單獨的 js 文件作為一個模塊, 默認情況下面這
個模塊里面的方法或者屬性, 外面是沒法訪問的。如果要讓外部可以訪問模塊里面的方法或
者屬性, 就必須在模塊里面通過 exports 或者 module.exports 暴露屬性或者方法。
2. 在需要使用這些模塊的文件中, 通過 require 的方式引入這個模塊。這個時候就可以
使用模塊里面暴露的屬性和方法。
2.3 定義使用模塊:
// 定義一個 tools.js 的模塊 //模塊定義 var tools = { sayHello: function() { return 'hello NodeJS'; }, add: function(x, y) { return x + y; } }; // 模塊接口的暴露 // module.exports = tools; exports.sayHello = tools.sayHello; exports.add = tools.add;
var http = require('http'); // 引入自定義的 tools.js 模塊 var tools= require('./tools'); tools.sayHello(); //使用模塊
三、 npm init 生成 package.json
npm init --yes