如何将整个模块导出为默认模块?

时间:2016-04-28 21:46:50

标签: ecmascript-6

e.g。

// lib.js
export function f1() {}
export function f2() {}
export * as default; // invalid syntax

然后在另一个文件中:

// app.js
import lib from './lib.js';
lib.f1();

有没有办法在不明确导出每个函数的情况下执行此操作? e.g。

export default {f1, f2}; // tedious

PS:我知道我可以import * as lib from './lib.js'

3 个答案:

答案 0 :(得分:2)

import * as lib from './lib';
export default lib;

应该足够了。因此模块会导入所有自己的导出,然后将自身导出为默认导出。

我是第二个Bergi的答案,但从API设计的角度来看,这并不是很好,而且可能会慢一点。如果某些东西正在使用你的模块并需要从中导入,它应该知道它的导入内容,或者单独询问它们,你的模块不应该为它们做。

答案 1 :(得分:1)

  

我知道我可以import * as lib from './lib.js'

你真的应该。不要让你的API比它需要的更混乱。

如果您仍想要默认导出自己的模块命名空间对象,也可以执行

export * as default from "./lib.js"; // self-reference

答案 2 :(得分:0)

继承人另一个选择:

lib.js

export default {
   someFunctionOne: () =>  {

   },

   someFunctionTwo: () =>  {

   },


   someFunctionThree: () =>  {

   }
};

app.js

import lib from './lib';

lib.someFunctionOne();