栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

节点模块可以互相要求吗

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

节点模块可以互相要求吗

查看http://nodejs.org/api/modules.html#modules_cycles,了解如何在node中进行处理。

您可以通过多种方式解决问题,例如将依赖项传递给实例(也称为 依赖项注入)

// user.jsvar User = function (Room) { this.Room = Room; };User.prototype.test = function () {  return new this.Room();};module.exports = User;// room.jsvar Room = function (User) { this.User = User; };Room.prototype.test = function () {  return new this.User();};module.exports = Room;// index.jsvar User = require('./user.js');var Room = require('./room.js');var user = new User(Room);var room = new Room(User);

另一种方法是仅在需要时才需要文件

// user.jsvar User = function () {};User.prototype.test = function () {  var Room = require('./room');  return new Room();};module.exports = User;// room.jsvar Room = function () {};Room.prototype.test = function () {  var User = require('./user');  return new User();};module.exports = Room;// index.jsvar User = require('./user.js');var Room = require('./room.js');var user = new User();var room = new Room();

这样,您的出口就由您需要的时间定义。

但是通常,如果您具有循环依赖关系,那么您做错了事情,应该考虑一下您的体系结构。如果

User
需要创建新的东西,
Rooms
并且
Room
需要创建新的东西
Users
,似乎他们都负有太多责任。可能您需要第三个组件,该组件负责创建正确的实例并将其传递给
Room
and
User
,而不是让它们直接实例化它们。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372127.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号