ES6模块化具有以下的特点

  1. 使用依赖预声明的方式导入模块

    1. 依赖延迟声明(commonjs 使用的就是依赖延迟声明)
      1. 优点:某些时候可以提高效率
      2. 缺点:无法在一开始确定模块依赖关系(比较模糊)

    commonjs使用的就是延迟声明

    1. 依赖预声明 (AMD 就是预声明)
      1. 优点:在一开始可以确定模块依赖关系
      2. 缺点:某些时候效率较低
  2. 灵活的多种导入导出方式
  3. 规范的路径表示法:所有路径必须以./或../开头


阐述模块化(非ES6模块化)应用到浏览器端需要解决哪些问题,如何解决?

  1. 浏览器读取JS文件是异步,如何使用异步的方式获取一个模块
  2. 如何避免模块中的全局代码污染全局变量

针对第一个问题,可以使用回调或Promise的方式解决
针对第二个问题,可以手动的将模块放入到函数环境中,避免全局变量的污染

ES6模块化和CommonJS模块化有哪些区别?

  1. CommonJS是依赖延迟声明,ES6是依赖预声明
  2. CommonJS最终只能依靠module.exports导出,ES6可以有基本导出和默认导出两种方式
  3. CommonJS没有绑定再导出的功能,而ES6可以使用 export … from … 进行绑定再导出