Skip to content

ES6模块

概述

历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。

在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。

ES6 Module使用

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

模块中导出数据

js
// module2.js
export var firstName = 'Michael';
export var lastName = 'Jackson';
export var year = 1958;
// module2.js
function say() {}
function eat() {}

export default {
  say,
  eat
}

导入模块

js
import {firstName, lastName, year} from './module1.js';
import myModule from './module2.js';

浏览器中Module的应用

下列浏览器版本或以上版本已经开始支持 Module:

  • Safari 10.1
  • Chrome 61
  • Firefox 54 打开 about:config启用 dom.modules.enabled
  • Edge 15 打开 about:flags启用“实验性 Java 功能”

浏览器加载 ES6 模块,也使用<script>标签,但是要加入type="module"属性。