尝试造了个工具类库,名为 Diana
2018-03-30 16:54
阅读目录(Content)
- CommonJS
-
CommonJs 是服务器端模块的规范,
Node.js 采用了这个规范
。这些规范涵盖了模块、二进制、Buffer、字符集编码、I/O流、进程环境、文件系统、套接字、单元测试、服务器网关接口、包管理等。 -
根据 CommonJS 规范,一个单独的文件就是一个模块。加载模块使用
require
方法,该方法读取一个文件并执行,最后返回文件内部的exports
对象。 -
CommonJS 加载模块是同步的。像 Node.js 主要用于服务器的编程,加载的模块文件一般都已经存在本地硬盘,所以加载起来比较快,不用考虑异步加载的方式,所以 CommonJS 规范比较适用。但如果是浏览器环境,要从服务器加载模块,这是就必须采用异步模式。所以就有了 AMD、CMD 解决方案。
AMD、CMD-
AMD 是 RequireJS 在推广过程中对模块定义的规范化产物。AMD 推崇提前执行。
// AMD 默认推荐的是define(['./a', './b'], function(a, b) { a.doSomething() b.doSomething() ...})
-
CMD 是 SeaJS 在推广过程中对模块定义的规范化产物。CMD 推崇依赖就近。
// CMDdefine(function(require, exports, module) { var a = require('./a') a.doSomething() var b = require('./b') b.doSomething() ...})
UMDUMD 是 AMD 和 CommonJS 的结合。因为 AMD 是以浏览器为出发点的异步加载模块,CommonJS 是以服务器为出发点的同步加载模块,所以人们想出了另一个更通用的模式 UMD,来解决跨平台的问题。
diana 库 选择了以 umd 方式进行输出,来看下 UMD 做了啥:
(function (root, factory) { if (typeof exports === 'object' && typeof module === 'object') { // UMD 先判断是否支持 Node.js 的模块(exports)是否存在,存在则使用 CommonJS 模式 module.exports = factory() }
-