【问题标题】:Where should I put a require for in this particular case?在这种特殊情况下,我应该在哪里提出要求?
【发布时间】:2023-01-20 02:29:21
【问题描述】:

我有我的节点应用程序的 index.js 文件,它需要一次这个文件,传入应用程序对象。

我应该在函数内还是函数外要求“http”?

// this file is required once by index.js

// ...put it here
function exported(app) {
  const http = require('http'); // ...or put it here
  return http.createServer(app).listen(process.env.PORT || 3000, () => {
    console.log('DEBUG: express:  started');
  });
}

module.exports = exported;

它可以双向工作,但首选哪种方式或最佳做法?

【问题讨论】:

  • 除非有特殊原因,否则将所有导入 (require) 放在文件顶部
  • 只是好奇文件何时实际运行。整个文件是在我每次需要时运行还是仅在我第一次需要时运行? require('my_file');

标签: javascript node.js


【解决方案1】:

通常认为最好的做法是在文件顶部要求模块,在任何其他代码之前。这使得代码具有哪些依赖关系变得清晰,并且还允许模块在第一次被需要后由 Node.js 缓存,从而提高性能。所以在这种情况下,最好将 require('http') 语句放在函数之外,放在文件的顶部。

【讨论】:

    【解决方案2】:

    最佳做法是将所有导入放在文件的顶部。这样一来,您就可以一目了然地看到给定文件具有哪些依赖项,并且还可以使一些测试更容易——如果您需要模拟一个模块,那么如果保证该模块在其余部分之前加载,那么这样做会更简单该文件被执行。在您可能需要在更高层使用相同模块的情况下,您不需要移动导入(如果执行顺序不同,则没有在导入之前尝试使用模块的风险)。

    它也更加一致,当您不是唯一一个在代码库上工作的人时,一致性就变得非常重要。

    【讨论】:

    • 只是好奇文件何时实际运行。整个文件是在我每次需要时运行还是仅在我第一次需要时运行? require('my_file');
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 2017-12-17
    • 2015-05-24
    • 2016-03-15
    • 1970-01-01
    相关资源
    最近更新 更多