是否可以使用通配符从目录中的所有文件导入模块?

新手上路,请多包涵

使用 ES6,我可以从这样的文件中导入多个导出:

 import {ThingA, ThingB, ThingC} from 'lib/things';

但是,我喜欢每个文件有一个模块的组织。我最终得到这样的进口:

 import ThingA from 'lib/things/ThingA';
 import ThingB from 'lib/things/ThingB';
 import ThingC from 'lib/things/ThingC';

我希望能够做到这一点:

 import {ThingA, ThingB, ThingC} from 'lib/things/*';

或类似的东西,每个文件都包含一个默认导出,并且每个模块的名称与其文件相同。

这可能吗?

原文由 Joe Frambach 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 570
2 个回答

我认为这是不可能的,但是模块名称的解析取决于模块加载器,因此可能有一个加载器实现支持这一点。

在那之前,你可以在 lib/things/index.js 使用一个中间“模块文件”,它只包含

export * from 'ThingA';
 export * from 'ThingB';
 export * from 'ThingC';

它会让你做

import {ThingA, ThingB, ThingC} from 'lib/things';

原文由 Bergi 发布,翻译遵循 CC BY-SA 3.0 许可协议

节点?这样做:

使用 index.js 创建一个文件夹,在索引文件中添加:

 var GET = require('./GET');
 var IS = require('./IS');
 var PARSE = require('./PARSE');
 module.exports = { ...GET, ...IS, ...PARSE};

并且,在文件 GET.js 或 IS.js 中正常导出:

 module.exports = { /* something as you like */}

现在,您只需要包含 index.js,例如:

 const Helper = require('./YourFolder');

Helper 将包含 YourFolder 中的所有功能。

再会!

原文由 Jamviet.com 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题