export
export 语句用于从模块中导出函数、对象或原始值,以便其他程序可以通过 import 语句使用它们。
命名导出
1 | // test.js |
命名导出可以导出多个值:
或者:
1 | // test.js |
导入方式:
1 | // main.js |
命名导出对导出多个值很有用。在导入期间,必须使用相应对象的相同名称。
默认导出
1 | function print() { |
导出:
1 | import api from './test' |
可以使用任何名称导入默认导出,而且不需要用大括号括起来,但是,只能有一个默认导出。
1 | export default function print() { |
1 | import api from './test' |
注意,不能使用 var、let 或 const 用于导出默认值 export default。
两种方式同时使用
1 | function print() { |
导出:
1 | import api, {url, name} from './test' |
重命名
我们还可以在导出模块时进行重命名:
1 | const url = "http://www.heqiangfly.com" |
导入:
1 | import {webSite, name} from './test' |
import
导入默认值
导入由默认导出(export daulft)方式导出的值,具体例子可看前面的默认导出一节
导入单个导出
import {myExport} from '/modules/my-module.js';
下面通过命名导出三个值:
1 | // test.js |
如果我们不需要全部导入,可以这样做:
1 | import {URL} from './test' |
导入整个模块的内容
使用 import * as name from "module-name"
可以将 module-name.js 文件中导出的所有模块插入当前作用域。
针对上面的test.js代码,可以使用下面的导入方法:
1 | import * as api from './test' |
导入多个导出
import {foo, bar} from '/modules/my-module.js';
在 emport 章节的命名导出一节中已经有所介绍。
重命名导入
import {reallyReallyLongModuleExportName as shortName} from '/modules/my-module.js';
导入时可以重命名导出,可以解决导出命名冲突的问题。
1 | import {person, URL as webSite} from './test' |
导入代码
这将运行模块中的全局代码, 但实际上不导入任何值。
1 | import '/modules/my-module.js'; |
动态导入
可以将关键字 import 称作动态导入模块的函数,当使用它的时候,会返回一个 promise。
1 | import('/modules/my-module.js') |
这种使用方式也支持 await 关键字。
1 | let module = await import('/modules/my-module.js'); |