https://segmentfault.com/a/1190000015991869

作用:为了解决js文件之间不确定的依赖关系

目前JavaScript领域广泛使用的模块化规范包括,commonJs规范、AMD规范,CMD规范。

commonJs(同步加载)

允许模块通过require方法来同步加载所要依赖的其他模块,然后通过exports或module.exports来导出需要暴露的接口。

image.png

总结场景:
require 同步加载方式不适合在浏览器环境中使用,同步意味着阻塞加载,浏览器资源是异步加载的,require 适合在服务器端模块使用

原因:
因为模块都放在服务器端,对于客户端来说因为模块都在服务器端,加载的时间还取决于网速的快慢等因素,如果国漫造成堵塞

exports 与 module.exports

优先使用 module.exports

image.png

ES6模块化

ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。

优点:一开始可以确定模块依赖关系

image.png

  1. 导入时,可以通过关键字 as 对导入的符号进行重名
  2. 导入时使用的符号时常量,不可修改
  3. 可以使用 * 号导入所有的基本导出,形成一个对象
  1. import * as Api from '@/api' //将所有请求集合成一个Api对象