阅读更多

5顶
1踩

Web前端

转载新闻 12 款优秀的 JavaScript MVC 框架评估

2012-05-23 10:42 by 副主编 MnouW 评论(7) 有86751人浏览
在最近的几个月中,作者(Gordon L.Hempton)一直在寻求哪种MVC框架最为完美,他将目前能获取到的所有框架都粗略地试了试,然后在文章中列出了每一种框架的情况概要,在文末分享了作者经过对比之后最终的推荐产品。

首先要特别说明一下,作者认为以下四个功能是十分重要的:

  • UI Bindings(UI绑定):作者想说的不仅仅是模板,而是想谈一种在底层模型出现变化时,视图层能够自动相应地更新的陈述性方法。一旦您用过了支持UI Binding的框架(例如Flex)就很难放手回头了。
  • Composed Views(模块化视图):与所有的软件开发者一样,作者也喜欢编写模块化、可重用的代码。基于这样的原因,当给UI编程的时候,作者喜欢使用视图的方法来创作(个人更偏好在模板层时使用),当然这样也就需要拥有足够丰富的视图组件来支持。关于这一点有一个可重用的页面小工具的范例。
  • Web Presentation Layer(web表示层):我们是在为web编写程序,最不想要的就是Native风格的小工具;但是也没有什么理由来为一个web框架来创建它自己的布局管理器。HTML和CSS是目前解决样式与布局的最好的方法,他们被这样应用着,框架也应该以这一点为核心。
  • Play Nicely With Others(兼容,友好):不得不承认,jQuery是十分犀利的。作者不喜欢那种绑定着一个sub-par jQuery副本的框架,而直接推荐使用jQuery的那种框架才是作者需要的。

候选方案

下面这个表格列出了12个框架对于上述几种特性的支持关系,在后面的部分会详细叙述,您也可以在之后的文章中点击相应的链接来获取更多的信息。



1.  Backbone.js

Backbone.js是web最火的框架,如果不了解它将寸步难行,众多知名品牌均支持该框架,令人印象深刻,自然地成为作者最先进行尝试的框架。作者用它来建造了一个Group Talent内部用行政管理方面功能的feature应用。

优点:强大的社区,还有大量的实力支持。例如它本身就较多地使用了Underscore.js(也是一个强大的框架)。

缺点:抽象功能不够强,以及一些需要的功能还没实现。整个框架十分轻量级,产出的结果是一大堆引用文件和样板:而且应用的规模越大这一点就会越明显。

2.  SproutCore 1.x

SproutCore最开始是苹果公司用于其iCloud上面的。除了名字起得很不好之外,它实际上是一个非常优秀的框架,也是最大的框架之一。

优点:支持绑定,忠实的社区粉丝,优秀的feature很多。

缺点:过于死板,难以去除无用的feature,强制使用一种Native风格的范例,严重的问题在于该框架不允许使用HTML来做布局。

3.  Sammy.js

Sammy是作者偶然发现的一个比较小的框架,因为它太简化了,基本不能占据列表的席位。其核心feature是一个路由系统,让应用与AJAX进行交换。

优点:简单的学习曲线,与服务器端的app集成更加容易。

缺点:太过于简单,对于大型应用就有些捉襟见肘。

4.  Spine.js

器如其名,Spine显然是受到Backbone的强烈影响,像Backbone一样也是一个非常轻量级的框架,遵循相似的模型。

优点:轻量级,文档做得很好。

缺点:从根本上就有缺陷。Spine的一个核心概念是“一个坚果外壳中的一堆异步的UI集,这意味着UI应该是在理想化条件下永远不会阻塞的”。而做了一系列的非阻塞式实时应用之后,作者可以说这简直是不现实的,除非后端是像Operational Transformation之类的。

5.  Cappuccino

Cappuccino是一款更加独特的框架,自带编程语言Objective-J,还能尝试着在浏览器中仿真Cocoa。

优点:大型的构想出的框架,良好的社区环境,强大的继承模型。

缺点:在您所有能用Javascript仿真的语言之外,Objective-C是作者最不想选用的。它起源一位iOS开发人员,作者到现在还没想明白用浏览器编写Objective-J是什么意思。

6.  Knockout.js

K.O.是一个MVVM框架,受到其支持者的大量好评。它强调陈述式UI绑定和自动UI刷新。

优点:支持绑定,文档做得出色,引导系统超级赞。

缺点:绑定语法晦涩,缺乏坚实的视图组件层次结构。作者希望能够轻松地重用组件,也觉得定义成一个MVVM框架是有害的。这些框架中基本没有MVC,但都是(MVP,MVVM之类的)的变种。

7.  Javascript MVC

作者的兴趣是充分地披露各种框架,对Js MVC并没有花太多时间来评估。

优点:坚实的社区基础和积累。

缺点:基于Strings的继承模型很尴尬,控制器太接近视图又缺乏绑定机制。命名方式太不受保护了,相当于这样的情况:如果RoR可以说是“Rudy web Framework”的简写。

8.  Google Web Toolkit

GWT是一系列的客户端工具包,除了框架之外还包含很多其他工具。它可以把java语言编译成Javascript,支持标准Java库的一个子集,最初是Google公司使用在Wave上面的。

优点:综合宽泛的框架,拥有强大的社区支持。基于Java的坚实组件继承模型,在巨型客户端应用上表现出色。

缺点:除了Google说的之外,GWT将经不住时间的检验。就好像最初DART那样,很明显Java不是web的未来。更严重的是,客户端对于Java的抽象有一点不合适。

9.  Google Closure

如果说Google Closure仅仅是一个js框架,倒不如说更像是一个工具包。附带编译器和优化器。

优点:由Google用在其很多主流app上面。良好的基于组件的UI编写系统。

缺点:不支持UI绑定。

10.  Ember.js

Ember(之前是SproutCore 2.0)是竞争者中的新丁。它是一个尝试:从SproutCore2.0中抽取分离其核心feature并转变成为一个更加紧凑的模型框架,更加适合web。

优点:特别丰富的模板系统,拥有可编写的视图和UI绑定。

缺点:由于太新,文档跟不上。

11.  Angular.js

Angular是在作者发布评估结果之后才发现的一个很好的框架,由Googler开发,包含了很多有趣的设计选择。

优点:关于模板的范围和控制器的设计考虑的很周到。具有依赖注入系统(作者本人是一个iOS粉丝)。支持丰富的UI绑定语法,从而使得过滤和转换这样的工作开销很小。

缺点:代码库很不健全,也不够模块化。视图也不够模块化(关于这点在Batman.js的缺陷中讨论的更加细致)

12.  Batman.js

Batman由Shopify创作,是另一款与Knockout和Angular具有相似脉络的框架。Batman拥有良好的UI绑定系统,是基于HTML属性的。Batman是唯一的一款使用惯用语法Coffeescript编写的框架,并且紧密地与NODE.Js集成在一起,甚至可以到拥有其(可选的)Node.js服务器的程度。

优点:代码库十分清晰,绑定方法优良又简单,耐用,流程化。

缺点:作者非常不喜欢这种“独行侠”式的作风,更不用说这种加强单一控制器的主意了。与Knockout和Angular一样,在组件嵌套的时候遭受同样的折磨。作者需要的不仅仅是模板,还更想要陈述式的可重用的模板框架。相比,Ember在框架之上拥有的是一个基于EMBER他们自己的逻辑(可能是在控制器层上的)的整套组件能陈述式重用的方法。

赢家

最终,Ember.js是能满足作者全部需求的唯一一款框架。最近作者将一个小的Backbone应用转换成了Ember来实验,除了一些性能方面的小问题之外,作者对于产生的代码库更为欣慰。由Yehuda Katz支持,整个围绕Ember.js技术讨论社区也十分奇妙:这一定会是一个值得期待的好框架。

当然这个列表还是不够全面。几乎所有这些框架都被发现被人骂得臭名昭著体无完肤,或者被Hacker News点名。

你用的MVC框架是哪一款呢?

原文:The Top 10 Javascript MVC Frameworks Reviewed
  • 大小: 66.9 KB
来自: Web App Trend
5
1
评论 共 7 条 请登录后发表评论
7 楼 integrater 2015-09-22 12:13
不是原作者胡扯就是翻译在胡扯
6 楼 lliiqiang 2015-04-24 10:37
通常程序员指出View显示和model数据层,框架用controller层复杂逻辑讲它们连接起来.
5 楼 fzbk 2012-10-24 12:01
Backbone.js适合用来整合,非常灵活;
Angular.js确实太棒了
4 楼 wooui 2012-06-16 14:35
翻译得太差了,-----Spine的一个核心概念是“一个坚果外壳中的一堆异步的UI集,这意味着UI应该是在理想化条件下永远不会阻塞的”--------这句的原文是---- A core concept of spine is “is asynchronous UIs. In a nutshell, this means that UIs should ideally never block”. -----真怀疑是不是用翻译工具直接转过来的文章。
3 楼 骨之灵魂 2012-05-28 17:23
都没Ext呀
2 楼 witcheryne 2012-05-24 11:19
Backbone.js 扩展很多, 从代码库的代码量来看是轻量的. 在开发中使用,属于重量级,管理大量JS代码效果很好.

Backbone.js核心可以使用jQuery或者zepto.js(移动平台的jQuery). 模板引擎可以随意更换.

BackBone.js国内豆瓣在用
http://www.slideshare.net/lvting/mvc-8569518



1 楼 shiren1118 2012-05-23 13:38
至少对 Cappuccino 的评价是错误的,,,,,,非常不敢苟同。。。。。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 20170109想实现的3个想法

    希望通过学习编程实现的3个想法第一个想法做一个编码读写的软件 实现的功能有: 读取二维码或者条形码一类的信息,并进行查询; 生成包含物件身份信息的二维码或者条形码,并打印标准条码; 实现对登记物件身份信息的管理。 可能是个数据库啥的,目前没想好实现路径。第二个想法建立基于北斗短报文功能做一个分布式频谱监测平台 实现的功能有: 现场频谱信息的标准化,用XML格式; 基于北斗短报文功能开发嵌入式设

  • 8wei素教面试题

    积极乐观者 1. 当你面对部门不公平任务分工的时候,你会怎么办? 答:什么是公平?什么是不公平?表面上或许是自己做的任务比其他人多,承担的任务比其他人重,但是我们也知道我们的个人能力也是在不断的解决问题的过程中提升最快的,所以做的事情越多,个人能力提升越快,越能尽快实现个人的职业规划,这是好事。 在公司工作,领导在任务分工的时候不可能把每个人的工作都分得很均等,能多做些就多做一些,能多帮别人一些就多帮一些,毕竟多做一些事情没有坏处,自己还得到了锻炼和提高。如果能比其他人分到的任务多而且重要,那说明这是领导对

  • 项目中的一些想法

    <br /><br />在Android skd 文件里面其实有很多例子供我们学习的<br /> <br />比如说按钮背景图片,获得焦点之后换一个背景图片,不用在source里面set,在你Drawable里面写一个效果文件也可以达到的。<br />我的Android SDK放在D盘里面<br />效果文件路径:D:/android-sdk-windows/platforms/android-1.5/data/res/drawable找到btn_check.xml,还有button的。<br />当然我这

  • 关于项目实施的一些想法

    <br />1、项目实施概述<br /> <br />   项目实施是软件系统开发中必不可少的一部分,是确保系统能够在客户方正常运行的重要保证,在很大程度上影响着软件系统的成败。因此,对项目实施工作进行有效的规划和合理的安排,确保项目实施工作顺利完成是十分必要的。<br /> <br />2、项目实施过程及主要内容<br /> <br /><br />一般说来,项目实施主要分为实施前、实施中、实施后三个步骤。每个步骤的主要任务如下图所示:<br /> <br /><br /> <br />3、关于项目实施的

  • 【题解】搬书-C++

    搬书 Description 陈老师桌上的书有三堆,每一堆都有厚厚的一叠,你想逗一下陈老师,于是你设计一个最累的方式给他,让...

  • 【转】12 款优秀的 JavaScript MVC 框架评估

    作者(Gordon L.Hempton)一直在寻求哪种MVC框架最为完美,他将目前能获取到的所有框架都粗略地试了试,然后在文章中列出了每一种框架的情况概要,在文末分享了作者经过对比之后最终的推荐产品。 首先要特别说明...

  • 12 款优秀的 JavaScript MVC 框架评估(转)

    在最近的几个月中,作者(Gordon L.Hempton)一直在寻求哪种MVC框架最为完美,他将目前能获取到的所有框架都粗略地试了试,然后在文章中列出了每一种框架的情况概要,在文末分享了作者经过对比之后最终的推荐产品。...

  • 12个JavaScript MVC框架评估

    导读:在最近的几个月中,作者一直在寻求哪种 MVC 框架最为完美:将目前能获取到的所有框架都粗略地试了试,然后在文章中列出了每一种框架的情况概要,在文末分享了作者经过对比之后最终的推荐产品。 首先要特别...

  • 12个JavaScript MVC框架评估 (转)

    12个JavaScript MVC框架评估 (转) http://www.l99.com/EditText_view.action?textId=493420&amp;src= 点燃圣火! Ember.js 的初学者指南 ...

  • 把blog搬过来了

    原来的空间服务商有严重点人品问题,所以还是找个大点的门户网站做靠山比较放心,呵呵以后boboya就会把这里当作我的窝了,呵呵,感谢您对boboya的关注,boboya我尽快在5。1前正式推出自己的域名的。 :)

  • 陈老师搬书

    【问题描述】 陈老师喜欢网购书籍,经常一次购它个百八十本,然后拿来倒卖,牟取暴利。前些天,高一的新同学来了,他便像往常一样,兜售他的书,经过一番口舌,同学们决定买他的书,但是陈老师桌上的书有三堆,每一堆都有厚厚的一叠,他要想个办法用最轻松的方式把书拿下来给同学们.但是你想逗一下陈老师,于是,请你设计一个最累的方式给他. 若告诉你这三堆分别有i,j,k本书,以及每堆从下到上书的重量.每次取书只能...

  • NOIP2015模拟赛(三) 试题及详解

    模拟赛 问题 文件名 输入 输出 内存限制 时限 分值 海宝玩具 haibao.pas/dpr/c/cpp haibao.in haibao .out 256M 2s 100 半数集问题 set.pas/c/cpp

  • 连陈老师都出来了

    从上午到现在。。。 刚才在梦中,我梦见初中的陈明老师了。应该是新学期开学一段时间了,而自己才回到学校,回到教室,还是放学后,收拾课桌,当中很自然地将一本写着System Design的课本放进了书包。。接着梦醒了。 现在连陈老师都出来了,还不坚持吗!

  • JavaScript MVC 框架技术选型

    也许你的JavaScript代码是如此的杂乱无章,以致于你很想在下一个项目上尝试下JavaScript MVC库和框架,却苦于没有头绪?我正在撰写一本单页面应用的书,所以我阅读了大量网上的相关资料。在这里我尝试提供一些看法,...

  • 【JavaScript】对比12 款优秀的JavaScript MVC/MVVC框架 你最喜欢Backbone or Ember

    http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/ ...作者(Gordon L.Hempton)一直在寻求哪种MVC框架最为完美,他将目前能获取到的所有框架都粗略地试了试,然后在文章中...

  • 一文盘点主流JavaScript框架的优缺点

    本文将会介绍主流的JavaScript前端框架:Vue.js、React、Angular等,并对它们的优劣势进行评估,帮助您做出最佳的选择。1、ReactReact是一个用于构建用户界面的JavaScript库。它由Facebook和一...

  • 多款优秀的 JS MVC 框架对比

    正如之前说的,产品生产有...体验经济的到来,说明前端的技术要求越来越高,完成功能是不行的,还要有优秀的体验。 所以类似原来的jquery时代类似于传统的汇编或者是C时代的编程,这个阶段已经不work了。前端的技...

  • 检测到目标站点存在javascript框架库漏洞

    “检测到目标站点存在javascript框架库漏洞” 这个漏洞是因为jquery的版本问题,我们又不能将jquery替换为最新的(版本升级导致有些使用的地方不兼容、出错等)。做如下修改:将源文件中凡是有版本标识的地方都改为...

Global site tag (gtag.js) - Google Analytics