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 模块不是对象,它的对外接口只是一种静态定义,在代码静态解析阶段就会生成。


参考:

Javascript模块化编程——使用AMD,CommonJS,ES Harmony

results matching ""

    No results matching ""