分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

nodejs ?a和b文件相互引用

发布时间:2023-09-06 01:22责任编辑:蔡小小关键词:jsnodejs

//取自于node中文网 http://nodejs.cn/api/modules.html

当循环调用 require() 时,一个模块可能在未完成执行时被返回。

例如以下情况:

a.js:

console.log(‘a 开始‘);exports.done = false;const b = require(‘./b.js‘);console.log(‘在 a 中,b.done = %j‘, b.done);exports.done = true;console.log(‘a 结束‘);

b.js:

console.log(‘b 开始‘);exports.done = false;const a = require(‘./a.js‘);console.log(‘在 b 中,a.done = %j‘, a.done);exports.done = true;console.log(‘b 结束‘);

main.js:

console.log(‘main 开始‘);const a = require(‘./a.js‘);const b = require(‘./b.js‘);console.log(‘在 main 中,a.done=%j,b.done=%j‘, a.done, b.done);

当 main.js 加载 a.js 时,a.js 又加载 b.js。 此时,b.js 会尝试去加载 a.js。 为了防止无限的循环,会返回一个 a.js 的 exports 对象的 未完成的副本给 b.js 模块。 然后 b.js 完成加载,并将 exports 对象提供给 a.js 模块。

当 main.js 加载这两个模块时,它们都已经完成加载。 因此,该程序的输出会是:

$ node main.jsmain 开始a 开始b 开始在 b 中,a.done = falseb 结束在 a 中,b.done = truea 结束在 main 中,a.done=true,b.done=true

需要仔细的规划, 以允许循环模块依赖在应用程序内正常工作.

nodejs ?a和b文件相互引用

原文地址:http://www.cnblogs.com/feifeifei666/p/7783451.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved