我使用 Spine.js 和 CoffeeScript 研究 JavaScript MVC 已经有一段时间了。我开发 Ruby on Rails 有一段时间了,所以我了解模型、视图和控制器应该分别处理什么(基于我对它的适度经验)。但是在 Rails 中,我们已经知道(一般来说)每个控制器基本上都是控制一堆视图(或页面)并一次处理一个或多个模型的东西。(也许,如果我错了,请纠正我,因为我不是专业人士,但我必须承认)。
然而,我在架构方面发现了一个与 Spine 完全不同的概念。我阅读了它的文档并深入研究了它的示例应用程序。不幸的是,所有 Spine 示例应用程序都展示了如何处理单页应用程序,而在现实世界中“更大”的应用程序将不再是这种情况。(如果 Spine 只能用于“单页应用程序”,请纠正我)。
假设有一个网站(或应用程序)由许多页面/部分/模块组成,如下所示:
1 - 主页,例如显示基于缩略图的列表 2 - 联系人页面 3 - 当前用户的个人资料管理页面(普通 CRUD)
每个页面都具有与标题相同的主要结构(或布局),带有指向上述页面的链接、搜索输入字段和注销链接(我已经知道登录页面应该是分开的,所以我不会问认证在这里)。
这里棘手的部分是我无法真正弄清楚如何将整个部分联系在一起,我一直在问自己一些问题,在 Google 和 StackOverflow 上进行了搜索,但没有明确的答案。
1 - “必须”一个脊椎应用程序应用程序只在一页中?我的意思是,固定页眉和页脚,但有一个动态内容 DIV,它根据用户在页眉上单击的选项卡加载和卸载视图?还是应该将每个页面视为独立的脊椎应用程序?
2 - 我在一页中有多个控制器吗?比如app主控制器和导航控制器(header)?
3 - 每个控制器是否应该处理一个模型或与之关联的模型?(在示例中,它们之间始终存在一对一的关系,例如任务模型和任务控制器)。
4 - 我应该在我的应用程序中的哪里存储与接口相关的状态变量。我是否应该创建一个“记住”当前用户的模型,或者例如突出显示哪个选项卡以供进一步参考?或者我应该将它们存储到控制器中吗?
5 - 如果它是一个单页应用程序(但有很多部分或模块),我应该为这个页面内的每个加载部分都有一个控制器吗?
我知道这些对于更有经验的程序员来说可能是微不足道的问题,但我真的不知道从哪里开始。因此,如果有人能引导我走上正确的道路,那就太棒了。
提前致谢!
DD