是否有任何客户端JavaScript MVC(微)框架?
我有一个相当复杂的HTML表单,它将受益于MVC模式.
我想一个好的解决方案将提供以下内容:
模型和视图在值更改时更新控制器(观察者模式)
在页面加载时从表单数据填充模型
在模型更改时从模型填充表单
阿贾克斯,彗星,JSONP和所有爵士乐都是严重的矫枉过正.
Backbone是一个很好的轻量级框架.试一试:http: //backbonejs.org/
JavaScriptMVC是一个很好的解决方案.一切都是插件方法,您只能选择所需的功能.从2.0开始,它基于jQuery.
在逐步增强您的网站时,由于JMVC只为开发提供了一个中间层,这取决于用户 - 您可以自己做出这样的设计选择.
但是,JavaScriptMVC是最好的通用JavaScriptMVC库,因为它具有强大的基于事件委托的控制器.
通过事件委派,您可以避免附加事件处理程序,只需为页面创建规则即可.
最后,JMVC不仅仅是MVC架构.它包含了开发周期的所有部分:
代码生成器
Selenium和Env.js综合测试
文档引擎
自动Concat +压缩
错误检测和报告
Spine有一个类似于Backbone的API,但它要小很多.它具有原型继承.
AngularJS与jQuery很好地配合使用,可以帮助你很多MVC结构和严格的关注点分离.
完整的测试环境和依赖注入包括......
请查看http://angularjs.org
确实有:http://www.javascriptmvc.com/
我想你会发现这个足够了!
我觉得这个看起来像你应该看看的东西:http://knockoutjs.com/
(作为一个silverlight/wpf程序员,这个库让我终于开始学习javascript.它基于模型 - 视图 - 视图 - 模型(MVVM)模式,对我来说现在看起来像是一个很好的选择!)
有流行的Backbone.js
Ember.js
这三个功能使Ember成为一种乐趣:
绑定
计算属性
自动更新模板
使用绑定来保持两个不同对象之间的属性同步.您只需声明一次绑定,Ember将确保更改在任一方向传播.
以下是在两个对象之间创建绑定的方法:
MyApp.president = Ember.Object.create({ name: "Barack Obama" }); MyApp.country = Ember.Object.create({ // Ending a property with 'Binding' tells Ember to // create a binding to the presidentName property. presidentNameBinding: 'MyApp.president.name' }); MyApp.country.get('presidentName'); // "Barack Obama"
绑定允许您使用MVC(模型 - 视图 - 控制器)模式构建应用程序,然后轻松地知道数据将始终在层与层之间正确地流动.
计算属性允许您将属性视为属性.计算属性很有用,因为它们可以使用绑定,就像任何其他属性一样.
Ember使用Handlebars,一个语义模板库.要从JavaScript应用程序中获取数据并将其放入DOM中,请创建一个标记并将其放入HTML中,无论您希望显示哪个值:
Stapes.js
完全披露:我是这个图书馆的作者:)
如果你正在寻找一些非常小的东西(1.5kb缩小/ gzip)看看,并告诉我你是否喜欢它.
如果您的要求非常简单,您可以像Alex Netkachov那样编写自己的简单MVC .
他的例子是基于dojo构建的(注意:由于缺少dojo.js文件,它们在他的页面上不起作用),但你可以按照普通Javascript中的模式.