CJS:Commonjs
Node.js 和基于 Node.js 的其他工具(如 webpack & gulp)采用的就是 Commonjs 规范
为什么浏览器不支持 Commonjs 呢?原因是这个规范是基于 Node.js 的四个环境变量:
- module
- exports
- require
- global
而浏览器并没有这四个变量。所以只要你提供了这四个变量,就能在浏览器上实现 Commonjs 规范。
所以有了 browserify。browserify 帮助你将 Commonjs 规范的代码编译成浏览器能理解的代码。
ESM: ECMAScript Modules
从 ES6 开始,ECMAScript 制定了 JavaScript 的模块化规范。但说实现,兼容性真不理想,除了 Chrome 之外,其他主流浏览器产商都不买账.....所以使用时需要借助外部工具的帮助了,如当下流行的构建工具 webpack。
irstName,lastName,year} from './profile.js';
具体使用方法阮一峰的《ECMAScript 6 入门》里写的很详细,查看更多
上面代码的实质是从fs
模块加载 3 个方法,其他方法不加载。这种加载称为“编译时加载”或者静态加载,即 ES6 可以在编译时就完成模块加载,效率要比 CommonJS 模块的加载方式高。
AMD: Asynchronous Module Definition
require.js
- 提前执行(从 2.0 开始可以延迟执行)
- 依赖前置
CMD: Common Module Definition
sea.js
- 延迟执行
- 依赖就近
UMD: 对 CommonJS 和 AMD 的兼容写法
由于 CommonJS 和 AMD 太常见了,有些库为了同时支持两种规范,则会用一种比较兼容的写法,来导出自己的方法,这种写法就叫 UMD
参考资料
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。