首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Browserify Babel ES2015 Knockout协同依赖模

Browserify Babel ES2015 Knockout协同依赖模
EN

Stack Overflow用户
提问于 2016-02-16 13:30:33
回答 2查看 267关注 0票数 0

我已经创建了一组单例模块,这些模块可以加载各种敲除组件,并为它们各自的功能区域提供一个中央“命令和控制”。我们叫他们FooModule和BarModule

所以一个典型的淘汰赛组件

代码语言:javascript
复制
const ko = require('knockout'),
    FooModule =require('../Singletons/FooModel'),
    BarModule =require('../Singletons/BarModel');

这似乎工作得很好,每个模块都支持各种可观察性和功能。

问题是,我需要FooModel来要求BarModel,而BarModel需要FooModel。

如果不是Singleton (例如Class),这可能并不重要,但是我不能在每个组件中有一个单独的类,否则我将失去跨组件通信的能力(每个页面通常有3-7个组件,其中一些组件是重复的,但数据不同)。

当前,FooModel需要BarModel,反之亦然,但结果对象是{},这大概是Browserify处理彼此需要的文件的方式

目前,每个单例模块都等同于:

代码语言:javascript
复制
FooModel...
    const ko = require('knockout');
    const BarModel = require('./BarModel');
    let hiddenVariable = 42 ;
    const FooModel = {
       FooMonitor : ko.observable(false),
       FooFunction : (variable) => { functionFoo(variable) }
    }
    const functionFoo = (variable) => {
        return variable === hiddenVariable ;
    };
    module.export FooModel ;


BarModel...
    const ko = require('knockout');
    const FooModel = require('./FooModel');
    let hiddenVariable = 24 ;
    const BarModel = {
       BarMonitor : ko.observable(false),
       BarFunction : (variable) => { functionBar(variable) }
    }
    const functionBar = (variable) => {
        return variable === hiddenVariable ;
    };
    module.export BarModel ;

每个淘汰制组件都很高兴地需要FooModel & BarModel,但是如果我添加

代码语言:javascript
复制
console.info(BarModel)

在FooModel模块中,浏览器获取{} (空对象)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-16 13:52:54

如果FooModel需要BarModelBarModel就不能要求FooModel。这是一个模块绑定器的限制。

Browserify将自动删除未使用的依赖项。这就是为什么当您开始使用来自{}的BarModel时,模块输出才会被剥离到FooModel。

合并来自@spender的注释--当您发现循环依赖关系时,是时候更改架构了。事件是将模型解耦的好方法(在本例中,使用KO.postbox可以很好地工作)。

票数 1
EN

Stack Overflow用户

发布于 2016-02-16 16:45:20

我想你想要一个同时需要Foo和Bar的控制模块。然后您可以通过传入Bar来初始化Foo,并通过传入Foo来初始化Bar。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35433968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档