是否有任何客户端JavaScript MVC(微)框架?
我有一个相当复杂的HTML表单,它将从MVC模式中受益。
我想一个好的解决方案将提供以下内容:
- 值更改时,模型和视图会更新Controller(观察者模式)
- 页面加载时,从表单数据填充模型
- 当模型更改时,从模型填充表单
Ajax,彗星,JSONP和所有爵士乐都是严重的矫kill过正。
是否有任何客户端JavaScript MVC(微)框架?
我有一个相当复杂的HTML表单,它将从MVC模式中受益。
我想一个好的解决方案将提供以下内容:
Ajax,彗星,JSONP和所有爵士乐都是严重的矫kill过正。
Answers:
骨干是一个很棒的轻量级框架。试试看:http : //backbonejs.org/
JavaScriptMVC是一个出色的解决方案。一切都是插件方法,使您可以仅选择所需的功能。从2.0开始,它基于jQuery。
在逐步增强您的网站时,这取决于用户,因为JMVC仅提供了开发的中间层-取决于您自己选择设计。
但是,由于JavaScriptMVC基于事件委托的强大控制器,因此它只是最佳的通用JavaScriptMVC库。
事件委托使您不必附加事件处理程序,而只需为页面创建规则。
最后,JMVC不仅仅是MVC体系结构。它涵盖了开发周期的所有部分:
Spine具有类似于Backbone的API,但它要小得多。它具有原型继承功能。
确实有:http : //www.javascriptmvc.com/
我想您会发现这足够了!
我认为这看起来像是您应该签出的内容:http : //knockoutjs.com/
(作为Silverlight / WPF程序员,这是使我终于开始学习javascript的库。它基于Model-View-View-Model(MVVM)模式,对我而言,现在看来是个不错的选择!)
有流行的Backbone.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,无论您希望该值出现在何处:
<script type="text/x-handlebars">
The President of the United States is {{MyApp.president.fullName}}.
</script>
如果您的要求真的很简单,则可以编写自己的简单MVC,例如Alex Netkachov一样。
他的示例基于dojo构建(注意:由于缺少dojo.js文件,它们在我的页面上不起作用),但是您可以遵循纯Javascript中的模式。
它可能满足您的需求,但是SproutCore是一个MVC框架,它看起来比JavaScriptMVC或TrimPath的Junction还要重。
不幸的是,这些似乎都没有建立在逐步增强的原则上。
还请签出jquery-claypool。
jquery-claypool是一个小型,快速,可引导的mvc框架,基于我在django,rails,spring等方面的经验,基于jquery构建。它非常轻巧,并且可以在客户端和服务器环境中运行。
它提供了一个干净的mvc,类别日志记录,过滤器(aop),控制器的延迟创建,控制反转,配置约定惯例等路由框架,并且在设计上没有更多内容。
它不执行jquery已经做的任何事情,感觉就像jquery,并且像一个好的框架一样工作:简单。
希望您能检查出来。
Jamal是我见过的最轻巧的产品。它也基于jQuery(奖金)。没用过。
如果您希望将事情控制在非常简单的状态,则可能不需要框架,而只需实现自己的mvc模式即可。只需检查一下这篇文章:Alex Netkachov于2006年编写的带有JavaScript的模型视图控制器(MVC)。
这是人类已知的所有开源JavaScript框架的列表。
http://getopensource.info/explore/javascript/framework/
或仅MVC框架
http://getopensource.info/explore/javascript/mvc/
披露:我是该网站的开发商。
2016年更新:Sammy.js似乎被放弃了。
来自网站的文字:
一个带有类的小型网络框架。
我不会将其称为微框架,但确实看起来很有趣:Cappuccino Web Framework
我对AngularJS进行了投票(完整披露,我以有限的方式参与了angular开发工作),对此感到非常兴奋。我进行了一个并排比较,为一个内部项目使用了一个功能(对不起,没有签名可以共享它)并在AngularJS和Backbone中都实现了。这是一次很棒的练习,最后,我非常倾向于Angular。核心开发人员非常擅长回答问题,他们在内置数据绑定,单元/端到端测试和文档方面做得非常好。它仍处于beta版本,不久将发布1.0版本。Beta非常稳定。
范式有所变化,并且它们使用的方法与大多数方法完全不同。集成您最喜欢的jquery插件需要花费一些精力,但是可行并且已经完成(github上的angular-contrib)。
我会说(这是大多数以js为中心的框架的问题),请确保研究如何使您的内容对SEO友好(如果它对您很重要)。自6月份加入Angular社区以来,我注意到人们的兴趣在增长,许多人在发帖说他们看过Backbone和其他人,但真的很喜欢他们在Angular中看到的东西。
Maverick是一个小型JavaScript MVC框架-http://maverick.round.ee
有一个名为“ Coherent”的键值绑定JavaScript框架,其灵感来自苹果公司的Cocoa Bindings。该框架已被Apple收购,但是在http://github.com/trek/coherentjs/tree/master上仍然有一个旧版本。
另一个又轻又小:http://jqnano.oleksiy.pro/