是否有JavaScript MVC(微)框架?

时间:2008-12-22 17:52:30

标签: javascript model-view-controller forms

是否有任何客户端JavaScript MVC(微)框架?

我有一个相当复杂的HTML表单,它将受益于MVC模式。

我想一个好的解决方案会提供以下内容:

  • 模型和视图在值更改时更新控制器(观察者模式)
  • 在页面加载时从表单数据填充模型
  • 模型更改时从模型中填充表单

阿贾克斯,彗星,JSONP以及所有爵士乐都严重矫枉过正。

30 个答案:

答案 0 :(得分:71)

Backbone是一个很棒的轻量级框架。试试看: http://backbonejs.org/

答案 1 :(得分:33)

JavaScriptMVC是一个很好的解决方案。一切都是插件方法,您只能选择所需的功能。从2.0开始,它基于jQuery。

在逐步增强您的网站时,由于JMVC只为开发提供了一个中间层,这取决于用户 - 您可以自己做出设计选择。

然而,JavaScriptMVC是最好的通用JavaScriptMVC库,因为它具有强大的基于事件委托的控制器。

事件委托可以让您逃脱必须附加事件处理程序,只需为您的页面创建规则。

最后,JMVC不仅仅是MVC架构。它包含了开发周期的所有部分:

  • 代码生成器
  • Selenium和Env.js综合测试
  • 文档引擎
  • 自动Concat +压缩
  • 错误检测和报告

答案 2 :(得分:21)

Spine有一个类似于Backbone的API,但它要小很多。它具有原型继承。

答案 3 :(得分:20)

AngularJS与jQuery结合使用,可以帮助您解决MVC结构和严格分离问题。

包括完整的测试环境和依赖注入......

http://angularjs.org

上查看

答案 4 :(得分:14)

确实有:http://www.javascriptmvc.com/

我认为你会发现这足够了!

答案 5 :(得分:14)

我认为这个看起来像你应该看看的东西:http://knockoutjs.com/

(作为一个silverlight / wpf程序员,这个库让我终于开始学习javascript。它基于模型 - 视图 - 视图 - 模型(MVVM)模式,对我来说现在看起来像是一个很好的选择! )

答案 6 :(得分:9)

有流行的Backbone.js

答案 7 :(得分:8)

Ember.js

这三个功能让Ember很高兴使用:

  1. 绑定
  2. 计算属性
  3. 自动更新模板
  4. 绑定

    使用绑定来保持两个不同对象之间的属性同步。您只需声明一次绑定,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"
    

    Bindings允许您使用MVC(模型 - 视图 - 控制器)模式构建应用程序,然后轻松地知道数据将始终从一层到另一层正确流动。

    计算属性

    计算属性允许您将属性视为属性。 计算属性很有用,因为它们可以使用绑定,就像任何其他属性一样。

    自动更新模板

    Ember使用Handlebars,一个语义模板库。要从JavaScript应用程序中获取数据并将其放入DOM中,请创建一个标记并将其放入HTML中,无论您希望显示哪个值:

    <script type="text/x-handlebars">
      The President of the United States is {{MyApp.president.fullName}}.
    </script>
    

答案 8 :(得分:8)

Stapes.js

完全披露:我是这个图书馆的作者:)

如果您正在寻找非常小的东西(1.5kb缩小/ gzip)看看,并告诉我您是否喜欢它。

答案 9 :(得分:7)

如果您的要求真的简单,您可以编写自己的简单MVC,例如Alex Netkachov

他的示例是基于dojo构建的(注意:由于缺少dojo.js文件,它们在他的页面上不起作用),但是您可以在普通Javascript中遵循该模式。

答案 10 :(得分:4)

对于你需要的东西来说可能有些过分,但 SproutCore 是一个MVC框架,它看起来不比 JavaScriptMVC 或TrimPath的 Junction

不幸的是,这些似乎都不是建立在progressive enhancement的基础上的。

答案 11 :(得分:3)

最近流行的ActionScript MVC框架PureMVC已移植到JavaScript。我还没有机会尝试一下,但我相信这很好。

答案 12 :(得分:3)

请结帐jquery-claypool

jquery-claypool是一个基于jquery的小型,快速,可扩展的mvc框架,基于我对django,rails,spring等的经验。它非常轻巧,可在客户端和服务器环境中运行。

它为干净的mvc,类别记录,过滤器(aop),控制器的延迟创建,控制反转,配置约定提供了一个路由框架,而不是设计更多。

它没有做任何jquery已经做过的事情,感觉像jquery,并且像一个好的框架一样工作应该:简单。

jquery-claypool

希望你看看。

答案 13 :(得分:2)

以下列出了人类已知的所有开源JavaScript框架。

http://getopensource.info/explore/javascript/framework/

或者只有MVC框架

http://getopensource.info/explore/javascript/mvc/

披露:我是本网站的开发者。

答案 14 :(得分:2)

试试kitty。它只有1.4KB,它唯一的依赖是EJS。

答案 15 :(得分:2)

2016年更新:Sammy.js似乎被抛弃了。

查看Sammy.js

网站上的文字:

带有类的小型webframework。

  • SMALL Sammy的核心只有16K压缩和5.2K压缩和gzip
  • MODULAR Sammy构建于插件和适配器系统之上。仅包含您需要的代码。将自己的代码提取到可重用的插件中也很容易。
  • CLEAN 整个API旨在易于理解和阅读。 Sammy试图鼓励良好的封装和应用程序设计。
  • FUN 如果它不愉快,那么真正的发展点是什么? Sammy试图遵循MATZ方法。它针对开发人员的快乐进行了优化。

答案 16 :(得分:2)

如果你想让事情得到控制并且非常简单,你可能不需要框架,但只需实现自己的mvc模式。 请查看本文:Alex Netkachov在2006年的Model-View-Controller (MVC) with JavaScript

答案 17 :(得分:2)

贾马尔是我见过的轻量级人物。它也基于jQuery(奖金)。没用过。

http://jamal-mvc.com/

答案 18 :(得分:1)

我开发了一个名为MCV的非常简单的Javascript MVC框架。它并不完全符合您的要求,但它可以通过帮助程序轻松扩展。无论如何,它绝对是微型的(1,9kb打包)。

它或多或少像Jamal一样,但我决定推出自己的原因有两个原因:

  • 删除jQuery依赖项(虽然我大部分时间都与jQuery一起使用)
  • 使用帮助程序使其可扩展。这些类似于CakePHP行为,组件和帮助程序。

答案 19 :(得分:1)

只是为了使列表更完整: ActiveJS

答案 20 :(得分:1)

CorMVC,易于理解和开始,基于jquery并且不依赖于任何服务器技术

答案 21 :(得分:1)

我不会称之为 micro -framework,但它确实看起来很有趣:Cappuccino Web Framework

答案 22 :(得分:1)

我赞成了AngularJS(完全披露,我通过角度开发工作以有限的方式参与)并且非常兴奋。我做了一个并排比较,为内部项目提供了一个功能(抱歉没有签收共享它)并在AngularJS和Backbone中实现它。这是一个很棒的练习,最后,我非常倾向于Angular。核心开发人员非常善于回答问题,他们在内置数据绑定,单元/ e2e测试和文档方面做得非常好。它仍处于测试阶段,不久的将来会推出1.0。测试版非常稳定。

有一种范式转换,他们使用的方法与大多数人截然不同。集成您最喜欢的jquery插件需要花费一些精力,但是可行并且已经完成(在github上使用angular-contrib)。

我会说(这对于大多数以js为中心的框架来说都是一个问题),请务必调查如何使您的内容对SEO友好(如果它对您很重要)。自从六月加入角度社区以来,我注意到兴趣在增长,很多人都在发帖说他们看过Backbone和其他人,但他们真的很喜欢他们在Angular看到的东西。

答案 23 :(得分:0)

又一个,轻巧而小巧:http://jqnano.oleksiy.pro/

答案 24 :(得分:0)

Can.js 拥有您需要的一切,重量仅为8 KB。它取自JavaScriptMVC的最佳位,并将其提炼为一个小的,但是带有观察者,小部件,绑定和工作的kickass框架。它与主要框架(jQueryDojo ToolkitMooTools等)兼容。文档非常好,作者也很敏感。绝对值得一看。

答案 25 :(得分:0)

另一个:MooTools-MVC

答案 26 :(得分:0)

答案 27 :(得分:0)

我也要在这里进行管道 - AFrameJS适用于jQuery,MooTools和Prototype。

答案 28 :(得分:0)

Maverick是一个小型的JavaScript MVC框架 - http://maverick.round.ee

答案 29 :(得分:0)

有一个名为“Coherent”的键值绑定JavaScript框架,其灵感来自Apple的Cocoa Bindings。 Apple已经购买了该框架,但http://github.com/trek/coherentjs/tree/master还有一个旧版本。