ES6 导出现有对象

riv*_*riv 2 javascript ecmascript-6

我怎么会写

export { function1, function2 };
Run Code Online (Sandbox Code Playgroud)

但我不会写

const funcs = { function1, function2 };
export funcs;
Run Code Online (Sandbox Code Playgroud)

它在语义上不是一回事吗?

有没有办法从一个对象中导出所有属性而不一一列出它们?我希望能够将模块作为一个整体(即import Utils from './utils')和作为单个函数(import { function1 } from './util')导入,但它不会让我使用我的默认导出对象进行正常导出:

const Util = {
   ...
};

export ???; // <- what do I put here? do I really have to list every field in Util?
export default Util;
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 5

export { function1, function2 };不导出对象。它是简写

export {
  function1 as function1,
  function2 as function2
};
Run Code Online (Sandbox Code Playgroud)

它将模块范围中的function1function2变量导出为命名导出。

有没有办法从一个对象中导出所有属性而不一一列出它们?

不。只是不要从对象开始,而是单独导出函数(使用命名export function …(…) {…}语法)。不要创建const Utils = {…}.

我希望能够将模块作为一个整体导入(即import Utils from './utils'

为此,您不需要默认导出中的对象。只需导入模块命名空间对象:

import * as Utils from './utils';
Run Code Online (Sandbox Code Playgroud)