Commonjs
commonjs模块规范,规定了Nodejs中模块规范,二进制规范,网络规范等。CommonJS是一种规范,NodeJS是这种规范的实现。
exports
- exports是
module.exports
的别名,两者等价 - 切断引用
//module.exports是老大
module.exports = function () {};
exports.a = "yf";
require加载规则
- 优先从缓存加载
- 核心模块
- 自定义模块
- 第三方包
- 包可能包含多个模块
- 找node_modules
- 默认在该文件同级找
- 找不到向上找
- 在引包的时候,过程如下
- 找node_modules
- 找moment目录
- 找package.json
- 找main属性
- 找main属性对应的文件
- 如果有任一环节出错,会在该目录找index.js
UMDjs
Universal Module Definition work everywhere
- 兼容多种javascript模块规范
- 在nodejs中可以作为第三方包
- 在require中可以作为模块加载
- 在js原生中可以使用script引入
- 这种代码与环境无关
//先检查是不是服务端环境
//不是,就检查是不是requirejs,其中define不仅要是函数,而且要有环境
//如果还不是,那么有一个全局对象moment
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
global.moment = factory()
}(this,(function () {}))