Modules 模塊

2018-07-11 10:05 更新

Node 使用CommonJS 的模塊系統(tǒng)。 Node 同時也擁有一個簡單的模塊加載系統(tǒng)。在Node 的世界里,文件和模塊是一一對應(yīng)的,比如,以下的程序 foo.js 會向大家演示加載同一目錄下的circle.js 模塊。

The contents of foo.js: foo.js 的代碼:

var circle = require('./circle');
console.log( 'The area of a circle of radius 4 is '
+ circle.area(4));

The contents of circle.js: cirle.js 的代碼:

var PI = 3.14;
exports.area = function (r) {
return PI * r * r;
};
exports.circumference = function (r) {
return 2 * PI * r;
};

模塊circle.js 有兩個方法area()和circumference()。為了使其對外可見,將其導(dǎo)出到一個特殊的對象exprots(還 可以用this 來替代exports)。此模塊中的本地變量是私有的。在這個例子中,PI 便是circle 模塊的似有變量,puts() 方法則是引用自系統(tǒng)自帶模塊'sys'。沒有'./'前綴的模塊都是寫內(nèi)建的。我們將會詳細(xì)講解這個特性。

使用'./'前綴加載的模塊必須和加載模塊的文件位于同一文件夾下,所以將circle.js 和foo.js 放在同一目錄下。 如果不用'./'前綴,比如require('assert'),那么則會在require.paths 數(shù)組指定的路徑下尋找,require.paths 在我的機(jī) 器上輸出如下:

[ '/home/ryan/.node_libraries' ] [ '/home/ryan/.node_libraries' ] 所以當(dāng)呼叫require('assert')是,系統(tǒng)會沿著如下路徑尋找該模塊:

  • 1: /home/ryan/.node_libraries/assert.js
  • 2: /home/ryan/.node_libraries/assert.node
  • 3: /home/ryan/.node_libraries/assert/index.js
  • 4: /home/ryan/.node_libraries/assert/index.node

有'.node'后綴的模塊是Node 系統(tǒng)的二進(jìn)制模塊:可以參考'Addons'來得到更多信息。'index.js'允許我們把一個模塊 作為一個目錄打包。

require.paths 可以在運(yùn)行時修改或者在類UNIX 系統(tǒng)下通過修改NODE_PATH 環(huán)境變量來達(dá)到同樣的目的。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號