ES6如何从一个文件中导出所有项目

时间:2016-12-20 07:27:49

标签: javascript ecmascript-6 es6-modules

我想从另一个文件导出文件的所有方法。

目前我正在这样做,而且它有效。如何将下面两个合并为1个导出表达式

import  * as db  from './web/query';
export default db;

我尝试下面写了1行导出但都失败了

export *   from './web/query';  //==error
export *  as default  from './web/query';  //==error
export *  as {default}  from './web/query';  //==error
export from from './web/query'; //== error
export default from './web/query'; //== error

错误表示

import db from '../db/index';
这里未定义

db。然而,第一种方法起作用

文件内部'./web/query'看起来像

export function foo(){}
export function baar(){}

3 个答案:

答案 0 :(得分:6)

你不能在ES2016。要创建模块名称空间对象,您需要在当前模块范围中为其指定标识符(如db),然后重新导出该标识符。没有办法解决它。

然而,第1阶段proposal可以添加您尝试的export * as default from …语法。

答案 1 :(得分:3)

  

如何将以下两个合并为1个导出表达式

你不能。

ES2015(和ES2016)没有提供允许您从文件导入所有命名导出的语法,并在单个语句中将对象(以及它们的属性)导出为默认值。

答案 2 :(得分:1)

您可以使用 export * from '<FILE>'; 导出另一个文件的命名导出。

// a.js
export const one = '1';
export const two = '2';
// b.js
export * from './a.js';

// c.js
import { one, two } from './b.js';