Skip to content

模块化

在有babel时,我们可以直接使用es6模块化

import xxx import xxx from xxx

export xxx export default xxx


CommonJS

CommonJS是Node独有的规范,浏览器中使用就需要用到 broswerify 解析了

对于 CommonJS 和 ES6 中模块化两者的区别是:

  • 前者支持动态导入,也就是 require('${path}/xxx') (import现在也可以动态导入了不过需要借助babel-plugin-import)
  • 前者是同步导入,因为用于服务端,文件都在本地,同步导入即使卡住主线程影响也不大。而后者是异步导入,用于浏览器,需要下载问津啊,若采用同步导入会对渲染有很大影响
  • 前者在导出时都是拷贝,就算导出值变了,导入的值也不会改变,所以想要更新值,必须重新导入一次。后者采用实时绑定方式,导入导出值都指向同一个内存地址,所以导入值会跟随导出值变化
  • 后者会编译成 require/exports 来执行

AMD

AMD是由 RequireJS 提出的

js
// AMD
define(['./a', './b'], function(a, b) {
  a.do()
  b.do()
})
define(function(require, exports, module) {
  var a = require('./a')
  a.do()
  var b = require('./b')
  b.do()
})

共 20 个模块,1301 篇 Markdown 文档。