当前位置: 首页 > 知识库问答 >
问题:

如何将文件夹中的所有文件作为模块导入,并将所有文件作为对象导出?[副本]

凤高澹
2023-03-14

我试图将每个文件作为模块导出到某个文件夹中,作为单个对象导入。我该怎么做?

我用一个长文件制作了一个javascript插件。我现在正试图让它被几个文件分开。我用的是网页包。

在我的插件代码中,有一个名为“fn”的巨大对象,它包含40~50个函数,每个函数有200~300行。为了拆分它们,我创建了一个名为“fn”的文件夹,并将每个函数作为每个文件。每个文件名和函数名都是相同的。因此,名为“foo”的函数默认导出到“fn”文件夹中名为“foo.js”的文件中。

现在我试着把它们全部导入,然后像这样导出为一个对象。

src/fn/foo_or_whatever.js

export default function aFunctionWhichIUse(){
  // return whatever;
}

src/fn/index.js

import foo from './foo';
import bar from './bar';
import fooz from './fooz';
import baz from './baz';
import kee from './kee';
import poo from './poo';
import tar from './tar';
import doo from './doo';
.
.
.
import foo_or_whatever from './foo_or_whatever';

export default {
  foo,
  bar,
  fooz,
  baz,
  kee,
  poo,
  tar,
  doo,
  .
  .
  .
  foo_or_whatever,
}

src/index。js

import fn from './fn'

但我认为这没有意义。现在我必须每四次键入相同的单词,以便在“fn”对象中添加函数。

我发现导入所有文件从文件夹是不支持的导入/导出系统.然后,我应该使用什么,我应该如何写代码做到这一点?

有什么办法可以这样做吗?我不管这种方式是否是导入/导出系统,只要这种方式在网页上有效。

src/index。js

import * as fn from './fn';

共有2个答案

益绯辞
2023-03-14

自动这样做似乎是一个好主意,但有了webpack,它将需要特殊的插件来处理它。

但是另一个选择如果重复部分是你主要关心的问题,我可能会有另一个想法给你。

Webpack也可以处理commonjs模块。所以你能做的就是-

module.exports = {
  foo: require('./foo'),
  bar: require('./bar'),
  fooz: require('./fooz'),
  baz: require('./baz'),
  kee: require('./kee'),
  poo: require('./poo'),
  tar: require('./tar'),
  doo: require('./doo')
};

另一个建议是,如果您想暂时替换baz,您可以将require更改为/baz温度等。

此外,用小写字母命名文件总是一个好主意,所以如果你想包含一个类,自动这样做将是一个问题。但是只要做-

端木志诚
2023-03-14
const fs = require('fs');
const path = require('path');

const basename = path.basename(__filename);
const functions = {}

fs
  .readdirSync("./")
  .filter(file => (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js'))
  .map((file) => {functions[file.slice(0, -3)] = require(path.join(__dirname, file})))

module.exports = functions;

需要帮忙吗?

 类似资料:
  • 我正在对120.csv/.xlsx文件进行一些数据分析。我得把数据隔离开来。我得做下面的手术。 “如何在pandas中每个循环后都在.csv中保存输出而不重写?” 每个文件都有不同的文件名。 我不知道应该使用哪种代码

  • 问题内容: 有人可以为我提供导入整个模块目录的好方法吗? 我有这样的结构: 我尝试通过添加和执行操作将其转换为程序包,但它没有按我希望的方式工作。 问题答案: 列出当前文件夹中的所有文件,并将它们作为变量放入

  • 我得到了一个程序,它应该读取所有的文件存在于一个给定的文件夹,并给出文件的细节,如文件名,文件大小,创建日期和时间,文件位置作为输出。如果在给定的文件夹中有任何子文件夹,那么它也应该geiving该子文件夹中存在的文件的详细信息。

  • < li >我创建了一个扩展名无效的文件(。jjs)从我的粘性键盘。 < li >我删除了这个文件 < li >我的所有文件的所有图标都变成文本图标。我丢失了我的颜色主题,没有变量被突出显示,一切都像一个纯文本文件。 我该怎么解决这个问题?我在帮助文档中找不到任何东西 我目前正在运行IntelliJ 2017.3.2

  • 问题内容: 我想从文件夹导入所有图像,并根据需要使用。但是不能通过以下方法做到这一点。我在做什么?这个: 我在console.log中收到此错误 资料夹结构: 问题答案: 在普通的javascript中这是不可能的,因为导入/导出是静态确定的。 如果您使用的是webpack,请查看require.context。您应该能够执行以下操作: 参考:https : //webpack.js.org/gu

  • 我有一个文件夹系统,有2级深子文件夹。每个文件夹都有一些.docx文件和其他文件。 所以我正在寻找1个linux命令或shell文件脚本,它可以自动执行此操作。 提前道谢。