是否有JavaScript MVC(微)框架?[关闭]


133

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

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

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

  • 值更改时,模型和视图会更新Controller(观察者模式)
  • 页面加载时,从表单数据填充模型
  • 当模型更改时,从模型填充表单

Ajax,彗星,JSONP和所有爵士乐都是严重的矫kill过正。


2
我是不是错了,或者这只是一个坏主意(或者一个兼容流行词的框架)?

2
我刚开始做某件事是因为我和您有相同的感觉。它是最小的,AMD,而且我也可以做到不受质疑。那意味着没有jQuery等。我知道现在已经关闭,但是我认为这可能是您正在寻找的东西:github.com/Wolfy87/tarmac-最近我没有做太多事情,因为我认为我将是唯一的用户。
Olical 2013年


看一下TodoMVC,它通过实现一个简单的TODO App(几乎)比较了所有可用的JavaScript框架。
koppor

Answers:



33

JavaScriptMVC是一个出色的解决方案。一切都是插件方法,使您可以仅选择所需的功能。从2.0开始,它基于jQuery。

在逐步增强您的网站时,这取决于用户,因为JMVC仅提供了开发的中间层-取决于您自己选择设计。

但是,由于JavaScriptMVC基于事件委托的强大控制器,因此它只是最佳的通用JavaScriptMVC库。

事件委托使您不必附加事件处理程序,而只需为页面创建规则。

最后,JMVC不仅仅是MVC体系结构。它涵盖了开发周期的所有部分:

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

1
+1 for JavascriptMVC-我已经在一些应用程序中使用过它,这非常不错。跳过网站上的代码生成示例。我想那些只是为了安抚Rails迷而已。:)从基本的JQueryMX对象模型开始,然后创建一个控制器。
克里斯·杰恩斯

1
自从发表此评论以来,我已切换为使用Require和Spine。最终,与JMVC相比,它们更小,更优雅且“企业化”。JMVC非常适合我们的Java开发人员团队对JS进行调整,但是一旦您对JS有了更好的了解,JMVC就会停滞不前……
Chris Jaynes,2012年

JMVC的MVC部分现在是can.js
PHearst 2014年

21

Spine具有类似于Backbone的API,但它要小得多。它具有原型继承功能。


2
它也是用CoffeeScript编写的,并使用CoffeeScript的类样式-并不是一个巨大的胜利,但是还不错。
带薪的书呆子

1
我认为这就是为什么它比骨干小吗?Coffeescript代码更紧凑...
Brenden

我爱脊椎。将其与RequireJS结合使用可带来纯正的超赞体验。不要让它成为CoffeeScript的事实也吓,了您,它也可以与普通JS一起使用...
Chris Jaynes,2012年

浏览器支持IE> = 9,因此请检查是否与访问者的个人资料匹配。
理查德

20

AngularJS与jQuery一起可以很好地工作,并且将通过MVC结构和严格的关注点分离为您提供很多帮助。

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

http://angularjs.org上查看


Angularjs是2013年底迄今为止最好的。...我认为....
Tony Bao

15
angular不是一个微型框架:/
iConnor 2014年

1
同意,Angular不是一个微框架。
Vojta 2014年

2
是的,学习曲线也不成比例,与其他框架相比,它的好处是。
vsync 2014年

4
有角度的与微型框架正好相反。这是野兽。
哈森2015年


14

我认为这看起来像是您应该签出的内容:http : //knockoutjs.com/

(作为Silverlight / WPF程序员,这是使我终于开始学习javascript的库。它基于Model-View-View-Model(MVVM)模式,对我而言,现在看来是个不错的选择!)


作为Silverlight / WPF程序员,我评估了淘汰赛,中坚力量和其他几个人。最终,我切换到Angular。它具有绑定功能和更多其他功能。
jonperl 2012年


8

Ember.js

这些是使Ember易于使用的三个功能:

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

绑定

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

2
是烬有利地使用了骨干以任何方式....如果规范不处于初始阶段很清楚..
Bijendra

4
我确实喜欢emberJS,但它不是“微型”的,因为它是一个扁平的框架,它是巨大的
iConnor 2014年

1
不允许在同一句子中使用Ember和microframework。
2015年

8

Stapes.js

全面披露:我是该图书馆的作者:)

如果您正在寻找很小的东西(最小化为1.5kb / gzip压缩),请看看,并告诉我您是否喜欢它。


一见钟情!我喜欢您对原型继承的关注(没有模拟类,也没有令人困惑的new运算符)。什么似乎没有必要是另一个eachmap。我已经在Underscore.jsjQuery中拥有它们。
feklee,2012年

7

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

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


4

它可能满足您的需求,但是SproutCore是一个MVC框架,它看起来比JavaScriptMVC或TrimPath的Junction还要重

不幸的是,这些似乎都没有建立在逐步增强的原则上。


1
JavaScriptMVC的核心MVC组件比Backbone压缩了约1k(同时具有更多功能)。而且JMVC完全能够构建逐渐增强的应用程序。您只需扔掉“模型”层。
贾斯汀·迈尔

3

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


我喜欢它的弹性。简单而强大。
格伦

3

还请签出jquery-claypool

jquery-claypool是一个小型,快速,可引导的mvc框架,基于我在django,rails,spring等方面的经验,基于jquery构建。它非常轻巧,并且可以在客户端和服务器环境中运行。

它提供了一个干净的mvc,类别日志记录,过滤器(aop),控制器的延迟创建,控制反转,配置约定惯例等路由框架,并且在设计上没有更多内容。

它不执行jquery已经做的任何事情,感觉就像jquery,并且像一个好的框架一样工作:简单。

jquery-claypool

希望您能检查出来。


您如何看待Claypool与Backbone的关系?
2011年





2

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

看看Sammy.js

来自网站的文字:

一个带有类的小型网络框架。

  • 萨米(Sammy)的核心只有16K压缩和5.2K压缩并压缩
  • 模块化 Sammy是基于插件和适配器的系统构建的。仅包括您需要的代码。将您自己的代码提取到可重用的插件中也很容易。
  • 清洁整个API的设计易于理解和阅读。Sammy尝试鼓励良好的封装和应用程序设计。
  • FUN什么是发展如果不过瘾真正的问题。Sammy尝试遵循MATZ方法。为开发人员的幸福进行了优化。

请您介绍什么是MATZ?
kstep

红宝石的创造者Yukihiro“ Matz” Matsumoto经常说,他“试图使Ruby变得自然,而不是简单”,其方式与生活相仿。因此,软件应该让用户感到自然。这就是MATZ方法。


1

CorMVC,易于理解,从入门开始,基于jquery,不依赖于任何服务器技术


1

我已经开发了一个非常简单的Javascript MVC框架,称为MCV。它不能完全满足您的要求,但是可以通过助手轻松扩展。无论如何,它绝对是微型的(1.9kb压缩包)。

它的工作原理与Jamal差不多,但是我决定推出自己的产品有两个原因:

  • 删除jQuery依赖项(尽管我大多数时候将其与jQuery一起使用)
  • 使它可以通过助手进行扩展。这些类似于CakePHP的行为,组件和帮助器。


1

我对AngularJS进行了投票(完整披露,我以有限的方式参与了angular开发工作),对此感到非常兴奋。我进行了一个并排比较,为一个内部项目使用了一个功能(对不起,没有签名可以共享它)并在AngularJS和Backbone中都实现了。这是一次很棒的练习,最后,我非常倾向于Angular。核心开发人员非常擅长回答问题,他们在内置数据绑定,单元/端到端测试和文档方面做得非常好。它仍处于beta版本,不久将发布1.0版本。Beta非常稳定。

范式有所变化,并且它们使用的方法与大多数方法完全不同。集成您最喜欢的jquery插件需要花费一些精力,但是可行并且已经完成(github上的angular-contrib)。

我会说(这是大多数以js为中心的框架的问题),请确保研究如何使您的内容对SEO友好(如果它对您很重要)。自6月份加入Angular社区以来,我注意到人们的兴趣在增长,许多人在发帖说他们看过Backbone和其他人,但真的很喜欢他们在Angular中看到的东西。








0

Can.js拥有您所需的一切,并且只有8 KB。它从JavaScriptMVC中获取了最好的信息,并将其提炼成一个小的观察器,包括观察者,小部件,绑定和工作。它与主要框架( jQuery Dojo Toolkit MooTools等)兼容。文档非常好,作者反应迅速。绝对值得一看。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.