命名导出vs导出对象

时间:2016-12-22 12:58:43

标签: javascript ecmascript-6

为什么这样做:

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 | 

我收到错误:

$pdo= new PDO("mysql:host=$host; dbname=$dbname", $user, $pass);

2 个答案:

答案 0 :(得分:9)

ES6有两种出口方式 - "普通"导出和默认导出。正常导出使用以下语法导出:

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

默认导出如下:

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

导入时会显示差异。首先,你需要包括大括号:

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

没有大括号,它会导入默认导出:

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

答案 1 :(得分:0)

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

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

您可以这样做:

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

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

然后导入它:

import { obj } from 'myLib';