【发布时间】:2012-11-19 08:14:03
【问题描述】:
我目前正在编写一个 Backbone Marionette 应用程序,该应用程序最终包含大约 6 个不同的“屏幕”或页面,它们经常共享内容,我不确定如何最好地构建和访问区域。
我正在使用此处描述的应用程序/模块设置:StackOverflow question 11070408: How to define/use several routings using backbone and 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 方法。那么从子应用访问和更改这些区域的最佳做法是什么?
提前致谢!
【问题讨论】:
-
抱歉耽搁了,根据我得到的两个答案,我一直在争论 AMD 与非 AMD。对于长期计划,尽管我觉得我花更多的时间来管理依赖项而不是我的应用程序的功能,但走 AMD 路线会更好。
标签: backbone.js marionette singlepage regions single-page-application