【问题标题】:compile order of node.js modulesnode.js 模块的编译顺序
【发布时间】:2013-08-11 15:24:04
【问题描述】:

问题是我有许多单独的模块,我使用 module.exports 导出它们并且相互依赖。说——

 mongohelper
 transaction
 server
 conhandlr
 appmin

现在,服务器模块包含其他四个模块所需的公共对象。但是,在编译节点应用程序时,其中一些模块是在服务器模块之前编译的,例如通过使用控制台输出我发现顺序是 -

 Compile order-
 mongohelper
 transaction
 server (..the upper modules have undefined common object now)    
 conhandlr 
 appmin 

那么,有没有一种方法可以确保服务器模块首先编译,以便任何依赖模块都没有未定义的对象?

【问题讨论】:

  • 你如何声明他们对server模块的依赖?
  • 它有一个公共对象变量,应该在所有模块之间共享。所以基本上, server.commonVar 需要相同。它的内容在服务器模块中动态更改。服务器模块使用普通的 require() 来使用。如果有任何帮助,我会专门使用“module.exports”而不是“exports”。
  • 你如何“编译”?
  • 编译我的意思是正常的 - node myapp.js 命令...

标签: javascript node.js node-modules


【解决方案1】:

没有任何实际代码,很难理解你真正想知道的内容,但我会尽量让你对节点模块的工作原理有一个基本的了解。

require("module") 是同步调用。在解析器继续下一行代码之前,对完整的模块进行评估/“编译”。这意味着,所有依赖项都按照指定的顺序执行。它们也仅在每个进程中执行一次。这意味着,如果您多次需要同一个模块,它只会在第一次执行,并且它的module.exports 会被缓存。

我建议阅读docs

【讨论】:

  • 为什么这是一个不好的答案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-02
  • 2019-12-23
  • 1970-01-01
  • 2014-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多