我正在浏览火狐导入语句。
他们展示了像这样的某些导入声明
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";
给定这个模块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>的对象:
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";
只有已标识的导出可用,并且只能作为已标识的别名:
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上
fizzbuzz
(即< code>foo)可用
< li>栏
不可用
< li>name.bar
可用
< Li > < code > console . log(hello world)将已运行import "module-name";
模块已加载,但导入的模块中实际上没有任何可用内容。这意味着文件运行但没有任何东西暴露
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();