在 ES6 中导入带或不带大括号 [重复]

Posted

技术标签:

【中文标题】在 ES6 中导入带或不带大括号 [重复]【英文标题】:Import with or without curly brackets in ES6 [duplicate] 【发布时间】:2018-03-16 17:41:42 【问题描述】:

有什么区别:

import Title from './title.js'

import  Title  from './title.js'

?

我认为它与export default Title;export const Title; 有一些联系,但我不知道。

【问题讨论】:

当您使用导出默认标题时,您不需要 我在猜测,但有对此的解释吗? developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 这个问题不是angularjs特有的,而是和ES6及以上相关的 【参考方案1】:

一个模块可以声明多个导出。例如export const Title;export const SubTitle;。当您import 这样的模块时,您会得到一个Object,其键是您声明的exports。

然后您可以使用函数参数对象解构(ES6 中提供的一项功能)从对象中仅选择您需要的导出。

请注意,如果您使用export default,则参数解构不可用,因为import 不一定会返回一个对象,除非您导出的是该对象。

【讨论】:

【参考方案2】:

developer.mozilla.org 中给出的

可以有一个默认导出(无论是对象, 函数、类等)。然后可以使用 import 语句 导入此类默认值。

最简单的版本直接导入默认:

import myDefault from '/modules/my-module.js';

参考文献:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

【讨论】:

以上是关于在 ES6 中导入带或不带大括号 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

React:带大括号的参数与不带大括号的参数之间的区别

如何删除字典外部大括号或将其不带大括号附加到列表中?

带/不带大括号的 C# Switch 语句....有啥区别?

c#不带大括号的记录

for,if循环语句可以不带大括号吗?在可以不带的情况下我的循环有错误吗?

LaTeX源代码中的括号使用?