【发布时间】:2019-04-07 18:40:40
【问题描述】:
我正在阅读 MDN docs 上的 ES6 import 语句。
我大致了解它的工作原理,但想深入了解,我不了解语法的一个方面。
正如MDN syntax of import 中所述,这些都是将代码导入当前模块/范围的不同方式:
import defaultExport from "module-name";
import * as name from "module-name";
import { export } from "module-name";
import { export as alias } from "module-name";
import { export1 , export2 } from "module-name";
import { foo , bar } from "module-name/path/to/specific/un-exported/file";
import { export1 , export2 as alias2 , [...] } from "module-name";
import defaultExport, { export [ , [...] ] } from "module-name";
import defaultExport, * as name from "module-name";
import "module-name";
var promise = import("module-name");
我想了解的是这两行之间的区别:
import { export1 , export2 } from "module-name";
import { foo , bar } from "module-name/path/to/specific/un-exported/file";
这两个不是完全相同吗?我们没有导入默认的export,因此我们必须导入名为exports。
为什么它们是两个独立的语法定义?
为什么第二个有这个:
from "module-name/path/to/specific/un-exported/file";
【问题讨论】:
-
我认为它们在第一行被导出,而在第二行它们根本没有被导出。
-
我想这是为了表明您可以指定模块内文件的路径,而不仅仅是模块名称
-
@Badrush 但是如果关键是它们都可以
import对象,那么为什么要将它们分成单独的语法呢?第二个有什么不同? -
我认为这是因为 foo 和 bar 在第二个中没有导出。第一个,我很确定该文件有多个导出。
标签: javascript ecmascript-6 es6-modules