提问者:小点点

从MDN文档导入ES6中的报表


我正在浏览火狐导入语句。

他们展示了像这样的某些导入声明

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 { export1 , export2 as alias2 , [...] } from "module-name";
import defaultExport, { export [ , [...] ] } from "module-name";
import defaultExport, * as name from "module-name";
import "module-name";

但是没有添加示例来帮助区分某些示例,并且他们的示例也有些模糊。

从文件来看,有很多事情对我来说没有意义..例如,名称与默认导出有何不同

虽然默认导出对我来说有意义,但是名称的定义有点难以理解

他们给出的解释:

name参数是“模块对象”的名称,它将用作一种命名空间来引用导出。

从上面的语法:< code > import " module-name ";

第二:

import { export as alias } from "module-name";

此外,如果假设我们有多个需要导出的函数

function abc1 () {
}

function abc2 () {
} 

这是正确的出口方式吗?

export abc1;
export abc2; 

然后,如果我们导入,我们将如何附加变量?这就是这样的说法吗?

import { export as alias } from "module-name";

共2个答案

匿名用户

给定这个模块module-name

// module-name.js
export default function foo(){ console.log("foo");}
export function bar(){ console.log("bar");}
console.log("hello world");

考虑以下情况,这些情况已经在node.js v9.11.1中使用命令< code > node-experimental-modules some-importer . mjs 进行了测试:

// import defaultExport from "module-name";
import fizzbuzz from "module-name";

只有默认导出可用,因此:

  • fizzbuzz(即foo)可用
  • 不可用
  • 将运行console.log(helloworld)
import * as name from "module-name";

所有导出都可用,但附加到标识为<code>name</code>的对象:

    < li>foo不可用 < li>不可用 < li>name.foo不可用(尽管您认为它应该可用) < li>name.bar可用 < Li > < code > console . log(hello world)将已运行
// import { export } from "module-name";
import { bar } from "module-name"

只有已识别的出口可用:

  • foo不可用
  • bar可用
  • 控制台. log(hello world)将已运行
// import { export as alias } from "module-name";
import { bar as mybar } from "module-name";

只有已标识的导出可用,并且只能作为已标识的别名:

    < li>foo不可用 < li>不可用 < li>mybar(即< code>bar)可用 < Li > < code > console . log(hello world)将已运行
// import defaultExport, * as name from "module-name";
import fizzbuzz, * as name from "module-name";

模块中的默认项目可以作为< code>defaultExport引用,所有其他导出的项目都附加到< code>name上

    < li>fizzbuzz(即< code>foo)可用 < li>不可用 < li>name.bar可用 < Li > < code > console . log(hello world)将已运行
import "module-name";

模块已加载,但导入的模块中实际上没有任何可用内容。这意味着文件运行但没有任何东西暴露

    < li>foo不可用 < li>不可用 < Li > < code > console . log(hello world)将已运行

匿名用户

名称默认导出有何不同?

name 是一个对象,它将所有导出的值保存为导出的键/值,但默认导出除外,默认导出将位于 defaultExport。如果要从文件导出以下内容:

export default function main() {}
export function helper1() {}
export function helper2() {}

然后,您可以导入< code>main作为默认导入:

import main from "file";

这不会导入助手。为此,您将使用*as

import * as helpers from "file";
helpers.helper1();

然后如果我们导入,我们将如何将变量附加到它上?

它们附加到导出时使用的相同名称,因此仅导入上述帮助程序之一:

import { helper1 } from "file";
helper1();

如果要重命名该导入,因为它是误导/冲突,则 as 语法会出现:

import { helper1 as someOther } from "file";
someOther();