CommonJS模块化规范
- 加载时机:
- 服务器端: 模块的加载是运行时同步加载的,node.js实现了模块化规范
- 浏览器端: 模块需要提前编译打包处理,需使用Browserify编译打包,推荐使用ESM
- 暴露模块:module.exports、exports
- 导入模块:require
模块导出
- module.exports = 任意数据 (字符串、整数、布尔值、对象)
- exports.模块名 = 任意数据 (字符串、整数、布尔值、对象),相当于
exports={模块名: 任意数据}
- module.exports 与 exports 的关系:
- 在模块内部存在一种隐式关系:
exports = module.exports = {}
- 模块最终取的是module.exports的值
exports只能是引用类型数据
,不能使用exports = 基本类型的数据。如果 exports = ‘abc’,不会改变模块返回的结果,因为module.exports为{},所以模块返回的是{}
- 在模块内部存在一种隐式关系:
模块导入
-
使用require方法导入文件:
- 自定义的模块:路径建议
写相对路径 const m = require('./m.js');
,并且不能省略
- 自定义的模块:路径建议