export和import的用法

export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。

1、输出变量:

第一种:

export var firstName = 'Michael';
export var lastName = 'Jackson';
export var year = 1958;

第二种:(应该优先考虑使用这种写法。因为这样就可以在脚本尾部,一眼看清楚输出了哪些变量)

var firstName = 'Michael';
var lastName = 'Jackson';
var year = 1958;

export {firstName, lastName, year};
import {firstName, lastName, year} from './profile.js';

如果想为输入的变量重新取一个名字,import命令要使用as关键字,将输入的变量重命名。

import { lastName as surname } from './profile.js';

import命令输入的变量都是只读的,因为它的本质是输入接口。也就是说,不允许在加载模块的脚本里面,改写接口。

import {a} from './xxx.js'

a = {}; // Syntax Error : 'a' is read-only;

上面代码中,脚本加载了变量a,对其重新赋值就会报错,因为a是一个只读的接口。但是,如果a是一个对象,改写a的属性是允许的。

import {a} from './xxx.js'

a.foo = 'hello'; // 合法操作

2、functionclass的输出

// 报错
function f() {}
export f;

// 正确
export function f() {};

// 正确
function f() {}
export {f};

export命令可以出现在模块的任何位置,只要处于模块顶层就可以。

export default 和 export的不同

// 第一组
export default function crc32() { // 输出
  // ...
}

import crc32 from 'crc32'; // 输入

// 第二组
export function crc32() { // 输出
  // ...
};

import {crc32} from 'crc32'; // 输入

上面代码的两组写法,第一组是使用export default时,对应的import语句不需要使用大括号;第二组是不使用export default时,对应的import语句需要使用大括号。

export default命令用于指定模块的默认输出。显然,一个模块只能有一个默认输出,因此export default命令只能使用一次。所以,import命令后面才不用加大括号,因为只可能唯一对应export default命令。

猜你喜欢

转载自blog.csdn.net/lbPro0412/article/details/81286224