【问题标题】:Export an imported module导出导入的模块
【发布时间】:2015-12-23 22:49:41
【问题描述】:

我有两个如下所示的 javascript 模块:

// inner/mod.js
export function myFunc() {
   // ...
}

// mod.js
import * as inner from "./inner/mod";

我想从mod.js 导出myFunc。我怎样才能做到这一点?

编辑:我应该澄清该函数正按预期从inner/mod.js 导出,但我还想从外部mod.js 导出函数。

对于那些要求澄清的人,我想做到这一点:

// SomeOtherFile.js
import * as mod from "mod"; // NOT inner/mod

mod.myFunc();

【问题讨论】:

  • 您遇到错误了吗?
  • 不,我没有收到错误消息。但我也没有从mod 导出任何东西。请注意,没有导出语句。
  • 您能否详细说明您希望如何在其他地方使用它?从你的问题中我不清楚你想要达到什么目的..
  • 我已更新问题以提供示例。

标签: javascript ecmascript-6


【解决方案1】:

我相信你正在寻找的是

export * from './inner/mod';

这将重新导出./inner/mod 的所有导出。 spec 实际上有非常好的表格,列出了所有可能的 importexport 变体。

【讨论】:

  • 唯一可行的方法是import mod from "./inner/mod"; export {mod}。使用export * from './inner/mod'; 似乎不起作用。
  • 实际上,它确实有效。但是,如果 inner/mod 导出默认函数,则它不起作用。
  • 是的,这将只涵盖命名导出。您可以使用export {default} from './inner/mod'; 显式导出默认导出。
  • 带有firebase云功能,在打字稿中:文件A(子文件)export const api = functions.https.onRequest(app);文件B(索引)export * from './api';
【解决方案2】:
// inner/mod.js
export function myFunc() {
   // ...
}

// mod.js
import { myFunc } from "./inner/mod";
export { myFunc };

尽量明确你导入的内容,越少越好,因为我已经更改了你在 mod.js 中的导入。如果您 import *,则定义一个变量,该变量将作为从您导入的模块导出的所有名称的对象。

再出口与制作自己的东西并出口是一样的。

【讨论】:

  • 是否可以导出整个对象?我想要一个导出所有子模块的index 模块。
  • 哦,是的,您可以导出任何静态、对象、数组、字符串、数字等。发生的情况是,导出的所有内容都进入了键值对象。关键是导出的名称,值是 .. 当然是你要导出的东西。你不能导出表达式。
  • 我正在使用 babel 将 es6 转换为 es5。使用您的示例,我在export myFunc 上得到了一个意外的令牌。
  • 更新了代码,这样行吗?我自己才使用这种语法几天,2ality.com/2014/09/es6-modules-final.html 是一个了不起的资源。
  • export {myFunc as myFunc}; 可以写成export {myFunc};
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-17
  • 2017-06-29
  • 1970-01-01
  • 2021-11-06
  • 2015-05-08
  • 2021-08-21
  • 2018-07-16
相关资源
最近更新 更多