模块化规范
- commonjs 规范:node 中的模块化规范就是 commonjs 规范(node 自己实现的),CommonJS 模块输出的是一个值的拷贝
- esmodule 规范(import export):ES6 模块输出的是值的引用
- umd 规范(统一模块规范,如果浏览器不支持 commonjs requirejs,直接将变量放到 window 上)
- amd 规范(requirejs):采用异步方式加载模块,推崇依赖前置、提前执行
- cmd 规范(seajs,过时了):推崇依赖就近、延迟执行。
commonjs 规范
- 可以把复杂的代码拆分成小的模块,方便管理代码和维护
- 每个模块之间的内容都是相互独立的,互不影响(解决变量冲突的问题),解决方案:使用单例模式不能完全解决,可以使用自执行函数来解决
规范的定义:
- 每个文件都是一个模块
- 如果你希望模块中的变量被别人使用,可以使用
module.exports
导出这个变量 - 如果另一个模块想使用这个模块导出的结果,需要使用
require
语法来引用(同步)
模块的分类
- 核心模块、内置模块:不是自己写的,也不是安装来的,而是 node 中自己提供的,可以直接使用,比如:
require("fs")
- 第三方模块:别人写的模块,通过
npm install
安装过来的,不需要有路径,比如:require("commander")
- 自定义模块:自己定义的模块就是自己写的模块,引用时需要增加路径(相对路径,绝对路径),比如:
require("./6/kaimo-promise.js")