木偶 - 应用程序和模块之间的关系

ela*_*anh 8 javascript backbone.js marionette

我们目前正在构建基于木偶的应用程序.基本上,我们有一个木偶应用程序,它上面定义了多个区域.每个区域将充当不同模块的容器以显示其视图.我希望每个模块完全控制它的容器中显示的内容,但我希望应用程序分配这些区域.为简单起见,我们假设每个模块都有一个简单的ItemView.

我正在考虑使用模块视图填充这些区域的两种方法.

第一种方法是,当每个模块初始化时,它将创建其视图,并将调用应用程序以在指定区域中显示其视图,例如:

var app = new Marionette.Application();
app.addRegions({
    regionA: "#regionA",
    regionB: "#regionB"
});

app.module("moduleA", function(moduleA, app, ...){
    moduleA.on("start", function(){
        var viewA = new MyViewA();
        app.regionA.show(viewA);
    }
});

app.module("moduleB", function(moduleB, app, ...){
    moduleB.on("start", function(){
        var viewB = new MyViewB();
        app.regionB.show(viewB);
    }
});
Run Code Online (Sandbox Code Playgroud)

第二种方法是每个模块都应该公开一些返回其视图的函数.应用程序将在准备好时调用该函数,并将视图粘贴到指定区域.

我不确定哪种方法更好,并且很乐意听取意见.

mar*_*308 7

我肯定会采用第二种方法,在过去采用第一种方法之后,我现在正在采用这种方法的局限性并转向第二种方法.我在这里写了一篇关于它的博客文章