编程语言
首页 > 编程语言> > javascript-了解ES6命名导入

javascript-了解ES6命名导入

作者:互联网

我正在阅读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";

两者难道不完全一样吗?我们不导入默认导出,因此必须导入命名导出.

为什么它们有两个单独的语法定义?

为什么第二个有这个:

from "module-name/path/to/specific/un-exported/file";

解决方法:

import { export1 , export2 } from "module-name";
import { foo , bar } from "module-name/path/to/specific/un-exported/file";

Why are they two separate syntax definitions?

可能只是为了说明绝对模块名称也可以包含路径这一点.

然后,将根据通常的模块解析规则来解析“模块名称”,然后从该模块中包含的某些文件中导入foo和bar.

这样,您可以访问未从模块主文件导出的内容.

但是,许多模块作者认为只有模块主文件的导出才构成公共API.其他所有内容,包括文件名和路径,都是一个实现细节,对于每个发行版,其更改都可能以不可预测且不兼容的方式进行.

标签:es6-modules,ecmascript-6,javascript
来源: https://codeday.me/bug/20191108/2008016.html