Tag: 循环依赖

Typescript / NodeJS – 与工厂合作时的循环依赖

对于Typescript和NodeJS来说,我很新,我正尝试使用工厂在运行时创build对象。 作为一个例子,下面的对象有属性types的文本,现在在运行时得到,我想创build一个TextContainer的实例: { type: "Text", name: "Title" } 我的工厂看起来像这样: import {BaseContainer} from "../Containers/BaseContainer"; import {TextContainer} from "../Containers/TextContainer"; /** * Used to dynamically create objects with different container classes * in runtime */ export class ContainerFactory { // Object containing all class names and types private dictionary: Object; /** * Initializes factory dictionary */ constructor() { […]

CommonJS singelton模块中的循环依赖

我想知道是否和如何以下是可能的: CommonJS环境,用于节点和/或浏览器的模块(带有Browserify )。 两个(或更多)模块,每个返回一个singelton需要在应用程序的不同部分/模块中可用。 他们也应该能够互相呼叫,所以有一个循环依赖的情况。 我知道这是可能的某种dependency injection,但我想要避免一个代码结构,我需要调用类似this.dependencies.ModuleName当从其他的一个Singeltons调用方法。 我希望能够直接调用由require-statements返回的对象的方法。 我意识到这是不可能的直接由两个CommonJS模块出口instanciated singelton对象(因为循环依赖)。 所以我希望可以使用一个共同的代码来做一些魔术。 就像是: var Magic = require('./magic'); module.exports = Magic.createSingelton({ // … }); Browserify由于循环依赖性而失败的示例: (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ var a = require('./class-a'), b = require('./class-b'); a.printSomething(); b.printSomething(); },{"./class-a":2,"./class-b":3}],2:[function(require,module,exports){ var […]

使用CoffeeScript中的Node.js需求和类来解决循环依赖关系

我想知道是否有一种方法可以在使用CoffeeScript类和super时候习惯性地避免Node.js require循环依赖的问题。 鉴于以下简化的CoffeeScript文件: 一杯咖啡: C = require './c' B = require './b' class A extends C b: B someMethod: -> super module.exports = A b.coffee: C = require './c' A = require './a' class B extends C a: A someMethod: -> super module.exports = B 第一个显而易见的问题是,A和B之间存在循环依赖关系。无论哪个先评估,都将作为另一个参考。 为了在一般情况下解决这个问题,我可能会尝试在每个方面做这样的事情: 一杯咖啡: C = require './c' class A extends […]