此方案是一次将MVC的思想引入客户端的尝试. 结合AJAX , 并借鉴了一些ASP.NET MVC的实现模式.
示例是一个简单的事件管理系统, 只有一个页面, 用户可以提交事件(post), 回复(reply). 页面打开时列表方式展现事件及回复.
Controller公开一系列action 给调用方.
action主要做三类事:
1. 使用ajax方式与服务器端通信(ajax) 2. 维护viewModel实例的状态 3. 刷新页面的局部视图
Controller定义如下:
Controller引用着一个ViewModel的实例, ViewModel的定义如下:
调用示例:
这个示例是jquery版的, DOM中也能看到jTemplates的影子(一个jquery插件), 但从思想到实现, 这个方案并不依赖于jquery, Controller中的两处外部依赖($.ajax和renderTemplate)完全可以寻找其他等价物替代.
此示例项目选用jquery和jTemplates完全是项目选型决定, 实现上只是借用了现成的便利.
(DOM中 <textarea class="template">... </textarea>是一个 jTemplates 模板)