# 模块化

模块化就是将复杂的系统分解成多个独立模块的代码组织方式,它大大提高了项目的可维护性、可拓展和可协作性

通常,我们在 浏览器中使用 ES6 的模块化支持,在 Node 中使用 CommonJS 的模块化支持,但是为了前端生态,会使用打包工具统一打包成 CommonJS 的模块

# 分类

  • esm:import / export
  • cjs:require / module.exports / exports
  • amd:require / defined

# require 和 import 的区别

  • require 支持 动态导入,import 不支持,正在提案(babel 下可使用)

  • require 是 同步 导入,import 属于 异步 导入

  • require 是 值拷贝,导出值变化不会影响导入值;import 指向 内存地址,导入值会随导出值变化而变化