Nodejs中的Require规则

时间:2013-12-10 12:25:49

标签: node.js

最近我正在研究新的Nodejs项目并找到一些像这样的代码:

function a(){
   var http = require('http');
   var fs = require('fs');
}

function b(){
   var path = require('path');
   var http = require('http');
}

function c(){
  var fs = require('fs');
 }

所以我对这样的编码有一些疑问:

  • 是否需要有一些使用它的规则?
  • 在代码之上使用rquire或者在需要时调用它是否很好。
  • 编码就像这样冲突

3 个答案:

答案 0 :(得分:3)

何时致电require的一些规则:

  • 默认情况下,在文件开头一次全局要求一个模块,不要重新分配require结果的变量。

  • 如果要求模块已经被证明会显着影响性能(可能它有需要很长时间才能运行的初始化例程)并且它没有在整个文件中使用,那么在需要的函数内部需要它它

  • 如果必须在函数中计算模块的名称,请在本地加载。

如果您在问题中显示的代码全部在一个文件中并且意图用于制作,那么我会问制作它的编码人员以这种方式使用require进行保证,如果是好的话由证据支持的实质性原因无法制定,我告诉这个编码器将require调用移到文件的开头。

答案 1 :(得分:2)

你绝对应该在生产中避免这些。模块确实被缓存,因此它只会在初始调用require时影响性能,但它仍然可以。此外fshttppath是内置模块,因此require - 它们不涉及从磁盘读取,只涉及代码编译和执行,但如果如果你使用非内置模块,你也会在从磁盘读取时阻止事件循环。

一般情况下,如果你使用任何sync函数,包括require,你应该只在第一次打勾时使用它们,因为无论如何还没有服务器在监听。

答案 2 :(得分:0)

Manning出版有一本关于节点的好书,名为 Node.js正在运行这就是节点模块需要规则描述它的方式。
 enter image description here