我目前正在编写一个 Backbone Marionette 应用程序,该应用程序最终相当于大约 6 个不同的“屏幕”或页面,它们经常共享内容,我不确定如何最好地构建和访问区域。
我正在使用此处描述的应用程序/模块设置:StackOverflow 问题 11070408:如何使用主干和 require.js 定义/使用多个路由。这将是一个应用程序,它将随着时间的推移添加新的功能和内容,并且需要可扩展(并且显然尽可能可重用)
我正在构建的单页应用程序在每个屏幕上都有 4 个主要部分:页眉、主要内容、次要内容、页脚。
所有页面的页脚将保持一致,其中 3 个页面的页眉将相同,并在其余 3 个页面上稍作修改(使用大约 80% 的相同元素/内容)。“更多内容”区域将可在各个页面中重复使用。
在我的 app.js 文件中,我正在定义我的区域,如下所示:
define(['views/LandingScreen', 'views/Header', 'router'], function(LandingScreen, Header, Router) {
"use strict";
var App = new Backbone.Marionette.Application();
App.addRegions({
header: '#mainHeader',
maincontent: '#mainContent',
morecontent: '#moreContent',
footer: '#mainFooter'
});
App.addInitializer(function (options) {
});
App.on("initialize:after", function () {
if (!Backbone.History.started) Backbone.history.start();
});
return App;
});
现在,回到前面提到的帖子中的应用程序设置,处理区域的最佳方式是什么。我会在每个子应用程序中独立地重新声明每个区域吗?这似乎是保持模块尽可能独立的最佳方式。如果我走那条路,在子应用程序之间打开/关闭或隐藏/显示这些区域的最佳方式是什么?
或者,我是否保留 app.js 中声明的区域?如果是这样,那么我将如何最好地从子应用程序中更改和协调这些区域的事件?在 app.js 文件中定义区域似乎与将模块和核心应用程序相互了解的内容保持在最低限度有悖常理。另外,我看到的每个示例在主应用程序文件中都有 appRegions 方法。那么从子应用访问和更改这些区域的最佳实践是什么?
提前致谢!