CommonJs 是一種 JavaScript 語(yǔ)言的模塊化規(guī)范,它通常會(huì)在服務(wù)端的 Nodejs 上使用。項(xiàng)目是由多個(gè)模塊組成的,模塊和模塊之間的調(diào)用,需要各個(gè)模塊有相同規(guī)范的 API,這樣一來(lái)在使用的過(guò)程中不會(huì)有那么多的學(xué)習(xí)成本,并且對(duì)于單個(gè)模塊來(lái)說(shuō)是類聚的。
在 CommonJs 的模塊化規(guī)范中,每一個(gè)文件就是一個(gè)模塊,擁有自己獨(dú)立的作用域、變量、以及方法等,對(duì)其他的模塊都不可見。CommonJS規(guī)范規(guī)定,每個(gè)模塊內(nèi)部,module 變量代表當(dāng)前模塊。這個(gè)變量是一個(gè)對(duì)象,它的 exports 屬性(module.exports)是對(duì)外的接口。加載某個(gè)模塊,其實(shí)是加載該模塊的 module.exports 屬性。require 方法用于加載模塊。
//moudle-a.js
moudle.exports = {
a: 1
};
//moudle-b.js
var ma = require('./moudle-a');
var b = ma.a + 2;
module.exports ={
b: b
};
模塊化規(guī)范給項(xiàng)目帶來(lái)極大的好處,在業(yè)務(wù)復(fù)雜,模塊眾多的大型項(xiàng)目中,開發(fā)者都遵循相同的規(guī)則來(lái)開發(fā)各自的模塊,他們通過(guò)規(guī)范來(lái)約束模塊的定義,大家不需要太多的溝通或者大量的文檔來(lái)說(shuō)明自己的模塊使用規(guī)則,成千上萬(wàn)的模塊就這樣生產(chǎn),并能夠容易的使用。它的意義不僅是讓模塊看起來(lái)很規(guī)范,在合作開發(fā)、社區(qū)中傳播中也起到了重大的作用。