【问题标题】:Javascript export destructuring default keywordJavascript 导出解构默认关键字
【发布时间】:2020-06-09 20:15:57
【问题描述】:

我有以下代码:export { default } from 'app'; 并且我无法确定 default 关键字是否意味着导出正在定义默认导出,或者 app 有一个名为 default 的导出正在被解构,然后export 正在导出一个名为 default 的对象?基本上我对这条线很困惑,希望能得到一些解释。

【问题讨论】:

  • 您不能使用默认值,因为默认值是 js 中的规范。请看这里的例子developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • "导出定义了一个默认导出,或者该应用程序有一个名为 default 的导出" - 这是同一回事。不,它不是一个对象,这里没有解构。它是export { default as default } from 'app'; 的缩写。
  • @HalilÇakar 你可以在那个地方使用default
  • 据我所知你不能真正使用默认作为名称
  • @HalilÇakar 您可以随意命名您的导出。使用名称 default 导出甚至还有额外的语法糖。

标签: javascript ecmascript-6 es6-modules


【解决方案1】:

导出正在定义默认导出,或者app 有一个名为 default 的导出

这也是一样的。不,它不是一个对象,这里没有解构。简称

export { default as default } from 'app';

并将app 的默认导出重新导出为当前模块的默认导出。在两行中,明确说明并引入本地 app 绑定,它将是

import { default as app } from 'app';
export { app as default }

第二行与更流行的export default app 相似(但不完全相同!)。

【讨论】:

  • 您介意详细说明一下吗?因为我认为如果你在appexport default default,那会抛出一个错误
  • @ABGR 在export default … 之后必须跟随一些值表达式,例如export default 42;。该位置的保留名称default 将是一个变量标识符,并且确实是一个错误。
  • 我所看到的只是import ... from 'app'; export ...from 'app' 对我来说是新的。
  • 是的,请详细说明,我仍然不明白那条线在做什么。也许还包括一个分成两行的等效代码将有助于阐明它在做什么。
  • @Max888 在不引入额外标识符的情况下,实际上不可能将其分成多行。但是,它类似于import { default as app } from 'app'; export { app as default }。或者,打破别名(实时参考)import app from 'app'; export default app;
【解决方案2】:

default 是语言的一部分,当你导出某些东西并想在不进行重组的情况下导出它时,你使用export default,除非你不使用 es6 模块,否则没有它是没有办法的。

【讨论】:

  • 如果您有疑问,请提供指向有人告诉您使用此导入的链接
【解决方案3】:

关键字不能用作变量/函数的标识符,因为它们对语言具有特殊意义。你需要重命名它。

但是,要在解构时重命名属性,这里是:

export { defaultName as newName} from 'app';

【讨论】:

  • 出口不需要是标识符。
  • 哦,对不起,我的错。我认为这是一个导入...导出:export defaultName;export default defaultName;.
  • 如果需要导出,您仍然可以使用解构
  • as 没有解构。
  • as 不是解构,但{ property1 } = object1 是。但我明白了你的意思......谢谢你的澄清;)我正在混合......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-11
  • 1970-01-01
  • 2014-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多