有没有JavaScript MVC(微)框架?
有没有客户端的JavaScript MVC (微)框架?
我有一个相当复杂的HTML表单,它将受益于MVC模式。
我想一个好的解决scheme将提供以下内容:
- 模型和视图在值更改时更新控制器(观察者模式)
- 在页面加载时从表单数据填充模型
- 在模型更改时从模型填充表单
Ajax,彗星, JSONP和所有的爵士乐都是严重的过火。
骨干是一个很好的轻量级框架。 试试看: http : //backbonejs.org/
JavaScriptMVC是一个很好的解决scheme。 这一切都是一个插件的方法,使您只能select您需要的function。 从2.0开始,它基于jQuery。
逐步增强您的网站,这是留给用户的JMVC提供了一个中间层的发展 – 这是由你自己做出的deviseselect。
但是,由于其强大的基于事件委托的控制器,JavaScriptMVC只是最好的通用JavaScriptMVC库。
事件委托可以让你不必附加事件处理程序,只需为你的页面创build规则。
最后,JMVC不仅仅是一个MVC架构。 它涵盖了开发周期的所有部分:
- 代码生成器
- selenium和Env.js集成testing
- 文档引擎
- 自动Concat +压缩
- 错误检测和报告
AngularJS和jQuery一起工作良好,并且会在MVC结构和严格的问题分离方面帮助你很多。
完整的testing环境和dependency injection包括…
Spine有一个类似于Backbone的API,但它要小得多。 它具有原型inheritance。
确实有: http : //www.javascriptmvc.com/
我想你会发现这足够的!
我认为这一个看起来像你应该检查: http : //knockoutjs.com/
(作为silverlight / wpf程序员,这是使我最终开始学习javascript的库,它基于Model-View-View-Model(MVVM)模式,对我来说现在好像是一个很好的select!
有stream行的Backbone.js
Ember.js
这些是Ember使用的三大特点:
- 绑定
- 计算属性
- 自动更新模板
绑定
使用绑定来保持两个不同对象之间的属性同步。 你只需声明一次绑定,Ember将确保更改在任一方向传播。
以下是如何在两个对象之间创build绑定的方法:
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(模型 – 视图 – 控制器)模式构build您的应用程序,然后轻松地知道数据将始终正确地在层之间stream动。
计算属性
计算属性允许你像一个属性一样处理一个函数。 计算属性是有用的,因为它们可以像绑定一样工作,就像任何其他属性一样。
自动更新模板
Ember使用Handlebars,一个语义模板库。 要从您的JavaScript应用程序获取数据并将其放入DOM,请创build一个标记并将其放入HTML中,无论您希望显示哪个值:
<script type="text/x-handlebars"> The President of the United States is {{MyApp.president.fullName}}. </script>
Stapes.js
充分披露:我是这个图书馆的作者:)
如果你正在寻找一个非常小的东西(1.5kb缩小/ gzipped)看看,并告诉我,如果你喜欢它。
如果你的要求很简单,你可以写自己的简单的MVC像Alex Netkachov那样。
他的例子是build立在dojo上的(注意:由于dojo.js文件丢失,他们不能在他的页面上工作),但是你可以按照纯JavaScript模式。
这可能是矫枉过正的,但SproutCore是一个MVC框架,它看起来没有比JavaScriptMVC或TrimPath的Junction更重要。
不幸的是,这些似乎都不是build立在逐步提高的原则之上的。
stream行的ActionScript MVC框架PureMVC最近被移植到JavaScript。 我还没有机会尝试,但我相信这是好的。
请同时结帐jquery-claypool 。
jquery-claypool是一个build立在jquery上的小型,快速,可用的mvc框架,基于我对django,rails,spring等的经验。它非常轻便,可以在客户端和服务器环境中运行。
它提供了一个清洁mvc,类别日志logging,filter(aop),控制器的懒惰创build,控制反转,约定configuration的路由框架,并没有多lessdevise。
它不会做jquery已经做的任何事情,感觉像jquery,并且像一个好的框架应该工作:简单地说。
jQuery的克莱普尔
希望你看看。
贾马尔是我见过的最轻的。 它也基于jQuery(奖金)。 没用过。
如果你想保持控制和简单,你可能不需要一个框架,但只是实现自己的mvc模式。 只需在2006年查阅这篇文章: 模型 – 视图 – 控制器(MVC)与由Alex Netkachov的JavaScript 。
以下是人类已知的所有开源JavaScript框架列表。
http://getopensource.info/explore/javascript/framework/
或者只有MVC框架
http://getopensource.info/explore/javascript/mvc/
披露:我是这个网站的开发者。
尝试小猫 。 它只有1.4KB,唯一的依赖是EJS。
更新2016年:Sammy.js似乎被放弃。
看看Sammy.js
来自网站的文字:
与类的小型webframework。
- 小萨米的核心是只有16K压缩和5.2K压缩和gzipped
- 模块 Sammybuild立在一个插件和适配器系统上。 只包含你需要的代码。 将自己的代码提取到可重用的插件中也很容易。
- 清理整个API被devise为易于理解和阅读。 Sammy试图鼓励良好的封装和应用程序devise。
- 如果不愉快,真正的发展点是什么? Sammy试图遵循MATZ方法。 它为开发者的幸福而优化。
我不会称之为微型框架,但它确实看起来很有趣: 卡布奇诺Web框架
CorMVC,易于理解和开始,基于jQuery和不依赖于任何服务器技术
我开发了一个叫做MCV的非常简单的Javascript MVC框架。 它并不完全符合你的要求,但是它可以很容易地用佣工来扩展。 无论如何,这绝对是微型(1,9kb包装)。
它或多或less像贾马尔,但我决定推出自己的理由有两个:
- 删除jQuery的依赖(虽然我大部分时间和jQuery一起使用它)
- 使其与助手可扩展。 这些与CakePHP行为,组件和帮助类似。
只是为了使列表更完整: ActiveJS
我提出了AngularJS(完全公开,我以一种有限的方式参与了angular度的开发),对此我感到非常兴奋。 我做了一个内部项目的并行比较(对不起没有签名分享),并在AngularJS和Backbone中实现。 这是一个很好的练习,最后我非常倾向于Angular。 核心开发人员擅长回答问题,他们在内置数据绑定,单元/ e2etesting和文档方面做得非常好。 它在1.0版本还在不久的将来。 testing版非常稳定。
有一个范式的转变,他们使用了一个比大多数不同的方法。 整合你最喜欢的jquery插件需要一点努力,但是可行的,已经完成(angular-contrib on github)。
我会说(这对于大多数以js为中心的框架来说是一个问题),请确保调查如何使您的内容对search引擎友好(如果它对您很重要)。 自从六月份joinangular色社区以来,我注意到了这个兴趣越来越大,许多人发帖说他们已经看了Backbone和其他人,但是真的很喜欢他们在Angular看到的东西。
Maverick是一个小型的JavaScript MVC框架 – http://maverick.round.ee
我也会在这里讨论 – AFrameJS与jQuery,MooTools和Prototype一起工作。
另外一个: MooTools-MVC
有一个名为“Coherent”的键值绑定JavaScript框架,它受到了苹果cocoa绑定的启发。 这个框架已经被苹果收购了,但是在http://github.com/trek/coherentjs/tree/master还有一个旧的版本。;
试试这个基于jQuery的javascript MVC框架 。
另外,轻量级和微小的: http : //jqnano.oleksiy.pro/
Can.js拥有您需要的所有内容,重量只有8 KB。 它从JavaScriptMVC中取得了最好的成果,并将其融入到一个小小的kickass框架中,并带有观察者,小工具,装订和作品。 它与主要框架( jQuery , Dojo Toolkit , MooTools等)兼容。 文档是优秀的,作者是响应。 这绝对值得一看。