17.1 ES6模块与CommonJS模块的差异
commonJS是服务器端的模块化规范,但是浏览器前端是不能直接用的,需要有browserify等工具的配合。
var $ = require("jquery");
// 方法
function myFunc(){};
// 暴露公共方法(一个)
module.exports = myFunc;
讨论 Node 加载 ES6 模块之前,必须了解 ES6 模块与 CommonJS 模块完全不同。
它们有两个重大差异。
- CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。
- CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。
第二个差异是因为 CommonJS 加载的是一个对象(即module.exports
属性),该对象只有在脚本运行完才会生成。而 ES6 模块不是对象,它的对外接口只是一种静态定义,在代码静态解析阶段就会生成。
参考: