Nodejs:只使用 index.js 导出的好习惯?

新手上路,请多包涵

我在我继承的一些代码上看到了一种模式。每个目录都有它的 JS 文件,但还有一个 index.js,它实际上从其他一个或多个 JS 文件导出项目。

我认为这样做是为了让您可以准确地看到您正在导出的内容,因为主要导出在 index.js 中,而主要代码在其他一个或多个 js 文件中。

这个对吗?这种模式叫什么?

我应该继续使用这种模式吗?

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

阅读 714
1 个回答

假设我有以下目录结构:

 MyApp
├── app.js
├── test.js
├── package.json
├─┬ controllers
│ ├── index.js
│ ├── signIn.js
│ └── signOut.js
└─┬ views
  ├── index.js
  ├── signIn.js
  └── signOut.js

将以下代码放入 index.js 文件中…

 // index.js
module.exports = {
  signIn: require('./signIn')
, signOut: require('./signOut')
};

…允许您 require 整个目录,例如…

 // test.js
describe('controllers', () => {
  // ~/controllers/index.js
  const controllers = require('./controllers');

  it('performs a sign-in', () => {
    ...
  });
  it('performs a sign-out', () => {
    ...
  });
});

另一种方法是 require 每个文件单独。

不需要目录中有 index.js 。您可能 require 目录中的文件没有 index.js 都是一样的。

 // app.js
const signOut = require('./controllers/signOut.js')

但是,随着应用程序的增长,它会变得乏味。我使用像 require-directory 这样的包,因为在目录中输入每个文件也很乏味并且容易出错。

 // index.js
module.exports = require('require-directory')(module);

/*

This yields the same result as:

module.exports = {
  signIn: require('./signIn')
, signOut: require('./signOut')
, ...
};

*/

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

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