ES6的出口和花括号

dev*_*abe 4 javascript ecmascript-6 es2015

我看到一个代码已经发布在聊天频道中.在他的代码的最后是

export {UserInformation};
Run Code Online (Sandbox Code Playgroud)

有些团体说法语错了.有些人说只要变量存在就可以了.

哪个群体是对的?这是我第一次看到这种语法.我从未见过出口花括号.我只在导入时使用它们.像这样

import {method} from 'someModule';
Run Code Online (Sandbox Code Playgroud)

如果我正在写它,我会把它写成

export default UserInformation;
Run Code Online (Sandbox Code Playgroud)

我不想用错误的信息污染我的大脑.让我知道哪个出口是正确的.

Est*_*ban 16

语法是正确的.这个

export {UserInformation};
Run Code Online (Sandbox Code Playgroud)

是简写

export {UserInformation as UserInformation};
Run Code Online (Sandbox Code Playgroud)

这就像在做

export const UserInformation = {};
Run Code Online (Sandbox Code Playgroud)

当你定义UserInformation.

能够从定义它的不同位置的模块中导出某些东西是有用的(例如,为了便于阅读).

在这种情况下,你会UserInformation像这样导入

import {UserInformation} from 'UserInformation.js';
Run Code Online (Sandbox Code Playgroud)

请注意,export default UserInformation;不是等同于这一点.在这种情况下,您将成为UserInformation默认模块导出.要UserInformation在这种情况下导入,您需要:

import UserInformation from 'UserInformation.js';
Run Code Online (Sandbox Code Playgroud)

这是简写

import {default as UserInformation} from 'UserInformation.js';
Run Code Online (Sandbox Code Playgroud)

这篇博文是关于该主题的精彩读物.

  • 你从'UserInformation.js'中导入UserInformation的第一个例子;`错了; 它应该是来自'UserInformation.js'的`import {UserInformation};`.您导入默认值的第二个示例很好,但通常会写为'UserInformation.js'中的`import UserInformation';`. (3认同)
  • @torazaburo感谢你抓住这个,只是更新了答案.OP请注意torazaburo的评论和答案的更新,这是一个很大的错误. (3认同)