我有一个Backbone.js SmartTV应用程序,可以提供视频点播和直播电视内容。目前正如您所期望的那样 - 顶部导航,子导航和下面的主要内容区域显示给定类别的资产。
+----------------------------------------------------+
| Top Nav |
| |
+----------------------------------------------------+
| Sub Nav |
+----------------------------------------------------+
| Content |
| +------+ +------+ +------+ +------+ +------+ |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| +------+ +------+ +------+ +------+ +------+ |
| +------+ +------+ +------+ +------+ +------+ |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| +------+ +------+ +------+ +------+ +------+ |
+----------------------------------------------------+
内容由单独托管的Rails应用程序提供(构成管理方面)。应用程序在启动时向Rails API发出一个大的JSON请求,将所有内容解析为Backbone模型,然后在页面上呈现此内容。然后客户端应用程序定期查询服务器以检查更新。
在某些时候,我需要从管理方面实施主题,以便客户可以标记他们的电视体验。我能想到的最基本的方法是允许管理员从一系列选项(徽标,颜色,大小等)中进行选择。这看起来很容易,因为这些选项可以简单地在初始JSON有效负载中传递给客户端。但问题是他们仍然会被粘在相同的基本布局上。
我真正需要弄清楚的是如何让用户彻底改变布局。例如,将导航移动到屏幕左侧或底部,或根本没有高级导航(只是屏幕上的一组资产)。
我不确定如何在Backbone应用程序中实现这一点,因为这不仅仅是改变CSS。它需要完全不同的远程导航逻辑,完全不同的Backbone视图等等。
我想知道是否有人遇到过与Backbone类似的要求,或者你将如何处理这样的结构。
我的直觉告诉我,我可以按照以下方式重构我的应用程序:
然而,这似乎接近为每个单独的主题编写一个全新的应用程序,唯一的共享代码在各种模型/模块中。是否有更优雅的方法来解决这个问题?