引用网址:https://github.com/nswbmw/N-blog/blob/master/book/2.1%20require.md
CommonJS规范: 使用require引入模块,使用module.exports/exports导出接口。
简单概括以下几点:
setTimeout(() => {
  module.exports = { a: 'hello' }
}, 0)
require 这个文件得到的是空对象 {}
循环引用(或循环依赖)简单点来说就是 a 文件 require 了 b 文件,然后 b 文件又反过来 require 了 a 文件。我们用 a->b 代表 b require 了 a。
简单的情况:
a->b
b->a
复杂点的情况:
a->b
b->c
c->a
循环引用并不会报错,导致的结果是 require 的结果是空对象 {},原因是 b require 了 a,a 又去 require 了 b,此时 b 还没初始化好,所以只能拿到初始值 {}。当产生循环引用时一般有两种方法解决:
c->a
c->b
总的来说,循环依赖的陷阱并不大容易出现,但一旦出现了,对于新手来说还真不好定位。它的存在给我们提了个醒,要时刻注意你项目的依赖关系不要过于复杂,哪天你发现一个你明明已经 exports 了的方法报 undefined is not a function,我们就该提醒一下自己:哦,也许是它来了。
官方示例: https://nodejs.org/api/modules.html#modules_cycles
以上就是nodejs中require理解的详细内容,更多关于nodejs中require理解的资料请关注九品源码其它相关文章!