欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ECMAScript 6(26)Module

程序员文章站 2022-06-13 08:01:48
...

1.概述

  1. Module (模块)
  • 简单说就是一些公共js(方法或者对象等),在分别要在多个地方需要使用,但是呢,我们又不想全局引入这些文件(会污染全局变量),于是就有了模块这个概念,模块就是保存了这一系列这些方法,我们需要哪一个取哪一个
  1. CommonJS,AMD,CMD
  2. es6模块化
  • es6模块有以下特点

静态化,加载哪些,可以在编译的时候就确定,而不是只有当运行的时候才确定;
模块内部的作用域是独立的,不同模块即使有同名变量,只要该变量不影响外部,那么也是互不干扰的;
内部自动严格模式

2.export

// 写法一
export var m = 1;

// 写法二
var m = 1;
export {m};

// 写法三 重新命名
var n = 1;
export {n as newn};

3.import

// 写法一
import {m} from './path'

// 写法二 重新命名
import {m as newm} from './path'
  • 引入所有模块 *
// base.js
export var a = 1;
export var b = 2;

// .......
import * as base from './base'
base.a // 1
base.b // 2

4.export default

  • 模块指定默认输出
  • 一个模块只能有一个默认输出,因此export default命令只能使用一次。所以,import命令后面才不用加大括号,因为只可能唯一对应export default命令。
  • export default命令的本质是将后面的值,赋给default变量
// 写法一
export default function foo() {
  console.log('foo');
}

// 写法二

function foo() {
  console.log('foo');
}

export default foo;

// 也可以是值(export default命令的本质是将后面的值,赋给default变量)

export default 1;
  • 其他模块加载该模块时,import命令可以为该匿名函数指定任意名字。
import customName from './export-default';  // customName名字是定义的

5.export 与 import 的复合写法

export { foo, bar } from 'my_module';

// 可以简单理解为
import { foo, bar } from 'my_module';
export { foo, bar };
  • 改名
// 接口改名
export { foo as myFoo } from 'my_module';

// 整体输出
export * from 'my_module';
  • 具名接口改成默认接口
export { es6 as default } from './someModule';

// 等同于
import { es6 } from './someModule';
export default es6;
  • 默认接口改成具名接口
export { default as es6 } from './someModule';
  • 导出所有
export * as ns from "mod";

// 等同于
import * as ns from "mod";
export {ns};

6.import() 提案

参考:阮一峰es6

相关标签: ES6系列 es6