在 ES6 中使用导入
Node.js 是针对现代版本的 V8 构建的。通过及时了解该引擎的最新版本,我们确保及时向 Node.js 开发人员提供 JavaScript ECMA-262 规范的新功能,以及持续的性能和稳定性改进。
所有 ECMAScript 2015(ES6)
功能分为三组,用于发货,暂存和进行中的功能:
V8 认为稳定的所有运输功能在 Node.js 上默认打开,不需要任何类型的运行时标志。分阶段的功能,几乎完成的功能,V8 团队认为不稳定,需要运行时标志: - 和谐。正在进行的功能可以通过各自的和声标志单独激活,但除非出于测试目的,否则这是非常不鼓励的。注意:这些标志由 V8 公开,并且可能会在没有任何弃用通知的情况下更改。
目前 ES6 原生支持 import 语句。请参阅此处
所以,如果我们有一个名为 fun.js
的文件……
export default function say(what){
console.log(what);
}
export function sayLoud(whoot) {
say(whoot.toUpperCase());
}
…如果有另一个名为 app.js
的文件,我们想要使用我们之前定义的函数,有三种方法可以导入它们。
导入默认值
import say from './fun';
say('Hello Stack Overflow!!'); // Output: Hello Stack Overflow!!
导入 say()
函数,因为它被标记为源文件中的默认导出(export default …
)
命名为导入
import { sayLoud } from './fun';
sayLoud('JS modules are awesome.'); // Output: JS MODULES ARE AWESOME.
命名导入允许我们准确导入我们实际需要的模块部分。我们通过明确命名它们来做到这一点。在我们的例子中,通过在 import 语句中用大括号命名 sayLoud
。
绑定导入
import * as i from './fun';
i.say('What?'); // Output: What?
i.sayLoud('Whoot!'); // Output: WHOOT!
如果我们想要拥有一切,那么这就是要走的路。通过使用语法* as i
,我们有 import
语句为我们提供了一个对象 i
,它将我们的 fun
模块的所有导出保存为相应命名的属性。
路径
请记住,即使要导入的文件与使用 ./
导入的文件位于同一目录中,也必须将导入路径明确标记为相对路径。从没有固定的路径导入,如
import express from 'express';
将在本地和全局 node_modules
文件夹中查找,如果找不到匹配的模块,将抛出错误。