Appearance
CommonJS 规范
服务端 JS 模块化规范,来源于 NodeJS
特点:
- 同步
关键表达式
js
// 导入模块A
var moduleA = require("./xxx.js")
// 导出
module.exports = {
moduleB,
}
//
exports.moduleB = 1
CommonJS 的本质
栗子:
js
// main.js
console.log("this is commonjs")
var module_a = require("./module_a")
var module_b = require("./module_b")
;(function(params) {
console.log(`this is a ${module_a.a}`)
console.log(`this is b ${module_b.b}`)
})()
js
// module_a.js
console.log("this is module_a")
const a = [1]
module.exports = {
a,
}
js
// module_b.js
var modulea = require("./module_a")
console.log("this is module_b")
const b = modulea.a
module.exports = {
b,
}
js
// module_c.js
var modulea = require("./module_a")
console.log("this is module_c")
const c = modulea.a.concat([2])
module.exports = {
c,
}
js
// module_d.js
var modulea = require("./module_a")
console.log("this is module_d")
const d = modulea.a.concat([2])
exports.d = d
可以分析出: 从入口 main.js 执行开始,遇到require("xxx")
就会加载并执行此文件,其中如果之前已加载过此文件那么就不会重复执行。
那么一个文件的本质是什么?
js
;(function(exports, require, module, __filename, __dirname) {
// 文件体
})()