什么是模块
浏览器开发中的模块,在浏览器开发中为了避免命名冲突,方便维护等等,我们采用类或者立即执行函数的方式来封装 JS 代码,来避免命名冲突和提升代码的维护性,其实这里的一个类或者是一个立即执行的函数就是浏览器开发中的一个模块,如下所示:
let obj = {
模块中的业务逻辑代码
};
;(function(){
模块中的业务逻辑代码
window.xxx = xxx;
})();
如上的方式存在的问题,没有标准没有规范
NodeJS开发中的模块
NodeJS 采用了 CommonJS
规范实现了模块系统
CommonJS规范
CommonJS 规范规定了如何定义一个模块,如何暴露(导出)模块中的变量函数,以及如何使用定义好的模块
- 在 CommonJS 规范中一个文件就是一个模块
- 在 CommonJS 规范中每个文件中的变量函数都是私有的,对其他文件是不可见的,也就是其它文件访问不到的
- 在 CommonJS 规范中每个文件中的变量函数必须通过
exports
暴露(导出)之后其它文件才可以使用 - 在 CommonJS 规范中想要使用其它文件暴露的变量函数必须通过
require()
导入模块才可以使用
例如如下所示:
a.js 内容如下
let name = "";
function sum(a, b) {
return a + b;
}
exports.str = name;
exports.fn = sum;
b.js 内容如下
let aModule = require("./06-a");
console.log(aModule);
console.log(aModule.str);
let res = aModule.fn(10, 20);
console.log(res);