【问题标题】:Named export vs exporting an object命名导出与导出对象
【发布时间】:2017-05-08 02:44:06
【问题描述】:

为什么会这样:

const str = 'stuff';
export {
  str
};

但不是这个:

export default {
  str: 'stuff'
};

我想将其导入如下:

import { str } from 'myLib';

我想直接在导出中分配值,而不需要事先创建变量。

当我尝试时:

export {
  str: 'stuff'
};

我得到错误:

SyntaxError: /home/karlm/dev/project/ex.js: Unexpected token, expected , (41:5)
  39 | 
  40 | export {
> 41 |   str: 'stuff'
     |      ^
  42 | };
  43 | 

【问题讨论】:

标签: javascript ecmascript-6


【解决方案1】:

ES6 中有两种导出方式——named 导出和default 导出。命名导出使用如下语法导出:

export const str = 'stuff';
// or
const str = 'stuff';
export { str };

默认导出如下:

const obj = { str: 'stuff' };
export default obj;
// or 
export default {
  str: 'stuff'
};

导入时会显示差异。对于第一个,您需要包含大括号:

import { str } from 'myModule'; // 'stuff', from the first example

不带大括号,导入默认导出:

import myModule from 'myModule'; //  {str: 'stuff'}, from the second example

【讨论】:

  • 更新了我关于你的第一部分的问题,我收到一个错误。
  • 对不起,我的错。已编辑。
  • 实际上不能默认导出变量声明。 export default const str = 'stuff'; 无效。
  • 全错了。没有正常导出。两种类型都是正常的。它是 default 导出或 named 导出。此外,正如@Qwerty 所注意到的 - 您不能默认导出声明。
【解决方案2】:

export statement 的主要原因是用于从给定文件(或模块)中导出函数、对象或原语。

但是您需要一个标识符才能导出(以便可以在另一个脚本中通过import 导入)。

你可以这样做:

export const obj = {
  str: 'stuff'
};

import 期间,您将可以使用同名obj 来引用相应的值。

然后像这样导入它:

import { obj } from 'myLib';

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2019-09-07
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多