Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将文件夹中的所有文件作为模块导入,并将所有文件作为对象导出?_Javascript_Webpack_Ecmascript 6 - Fatal编程技术网

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

Javascript 如何将文件夹中的所有文件作为模块导入,并将所有文件作为对象导出?,javascript,webpack,ecmascript-6,Javascript,Webpack,Ecmascript 6,我试图将每个文件作为模块导出到某个文件夹中,作为单个对象导入。我该怎么做 我用一个长文件制作了一个javascript插件。我现在正试图让它被几个文件分开。我用的是网页包 在我的插件代码中,有一个巨大的对象名为fn,它包含40~50个函数,每个函数有200~300行。为了拆分它们,我创建了一个名为fn的文件夹,并将每个函数作为每个文件。每个文件名和函数名都是相同的。因此,名为foo的函数默认导出到fn文件夹中名为foo.js的文件中 现在我试着把它们全部导入,然后像这样导出为一个对象 src/f

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

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

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

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

src/fn/foo_或_which.js

src/fn/index.js

src/index.js

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

我发现导入/导出系统不支持从文件夹导入所有文件。那么,我应该使用什么以及如何编写代码来实现这一点呢

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

src/index.js


自动这样做似乎是一个好主意,但有了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 temp等


另外,用小写字母命名文件总是一个好主意,所以如果您想包含一个自动命名的类,那么这将是一个问题,。但是只需执行->Foo:require./Foo'就可以了。

自动执行这项操作似乎是个好主意,但有了webpack,它将需要特殊的插件来处理它

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;
但是另一个选择如果重复部分是你主要关心的问题,我可能会有另一个想法给你

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 temp等

另外,用小写字母命名文件总是一个好主意,所以如果您想包含一个自动命名的类,那么这将是一个问题,。但是只要做->Foo:require./Foo就可以了

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;
需要帮忙吗


是否需要此帮助?

您可以尝试使用此处描述的babel通配符插件:@KrzysztofKrzeszewski它真的很有帮助。谢谢。您可以尝试使用巴贝尔通配符插件,如这里所述:@KrzysztofKrzeszewski,它真的很有帮助。谢谢。我可以在网页中使用fs吗?我正在处理的东西不是在WebServer上运行的,我可以在webpack中使用fs吗?webpack只是一个节点包,所以如果你可以运行webpack,你可以运行上面的代码。@keith不是真的。@Jonaswills不确定你的意思,你是说你不再需要节点来运行webpack?@Jonaswills我不确定上面的内容是海报在运行时运行的,而是他可以用来制作.js文件的代码。我可以在webpack中使用fs吗?我正在处理的东西不是在WebServer上运行的,我可以在webpack中使用fs吗?webpack只是一个节点包,所以如果你可以运行webpack,你可以运行上面的代码。@keith不是真的。@Jonaswills不确定你的意思,你是说你不再需要节点来运行webpack?@Jonaswills我不确定上面的内容是海报在运行时运行的,但是,他可以使用代码来创建.js文件,使之能够更改其名称是很好的。但在我的情况下,我需要一些不需要处理的东西。能够更改它的名称是很好的。但就我而言,我需要一些不需要处理的东西。
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')
};
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;