ES6 Module 设计思想
与之前社区规范 CommonJS 和 AMD 相比,ES6 的 Module 设计思想强调静态化
带来的优点
12341.静态加载效率更高(按需加载部分内容)2.未来引入宏、类型检查等特性(静态化)3.前后端统一模块化标准4.未来新的浏览器API和扩展功能(Math等)通过模块提供静态化的要求
1231.只能在顶层作用域完成加载(不允许函数内,分支块内)2.不能在import语句中使用变量3.模块化默认要求严模式(不需要加'use strict')
普通 export import 语法
输出 export:1234567891011//输出必须是变量并且变量必须在大括号中export var lastName = 'Jackson';export {firstName, lastName, year};export lastName //Error!没有大括号!//可以重命名外部接口function v2() { ... }export { v2 as streamV2, v2 as streamLatestVersion};
输入 import:123456//导入变量必须在大括号中,并且与导出名同名import {firstName, lastName, year} from './profile';//导入重命名import { lastName as surname } from './profile';//使用 * 来进行整体加载,将所有加载的变量赋值到一个对象上import * as circle from './circle';
export default 命令
为了快速上手,用户往往没有时间去看文档来学习需要导入的变量名,因此需要通过export default
指令来输出
|
|
本质上是将输出的变量赋值给了一个叫做default
的变量,在导入时,default可以被任意命名
|
|
export 与 import 复合写法
export { foo, bar } from 'my_module';
等价于
import { foo, bar } from 'my_module';
export { foo, bar };