12 款优秀的 JavaScript MVC 框架评估

在最近的几个月中,作者(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

来自: Web App Trend

从网易首页变化看互联网15年变化

网站首页的变化不仅是一家互联网企业的“门面”,对“历史悠久”的网站来说,更能反映出互联网的变化,网易就是其中之一。本文将从网易首页15年来的变化,回顾15年来中国互联网发展历程。

1998年——网易带您遨游中文网络世界
卢松松:从网易首页变化看互联网15年变化

1998年的网易首页,网站标题是“网易带您遨游中文网络世界”。

网易在1998年推出了163.com为域名的免费邮件服务,“163”是当时最常见的拨号上网的号码,那时候中文网站少的可怜,一个网页导航就能涵盖中国几乎所有的网站。你没看错,这就是14年前网易的样子。

1999——WelcometoNetease!
卢松松:从网易首页变化看互联网15年变化

1999年的网易首页,网站标题是“WelcometoNetease!”

这一年只要提到“个人主页”、“电子邮件”、“虚拟社区”已经成为网易代名词,网易个人空间服务刚刚推出不久,人们疯抢注册的火暴,也正是网易的个人空间服务,成就了如今中国互连网多少英雄站长,对中国的互连网个人创业激情的推动可谓贡献不小。

这一年网易开始从软件公司转向“门户”,开始模仿yahoo做起了密密麻麻文字,门户在这一年初见端倪。

2000年——什么是“虚拟社区”
卢松松:从网易首页变化看互联网15年变化

2000年的网易首页,网站标题是“WelcometoNetease!”

2000 年1月18日,晚10点45分,网易北京社区576人,广州614人,上海64人,网易聊天室2403人。丁磊自豪地称:“网易虚拟社区绝对第一,而且没 有作假,有些公司一个人断线一个小时了都不将他去掉,我们3分钟就将他去掉了。网易提出虚拟社区概念,多少中国网站跟在我们后面用‘虚拟社区’这四个字, 是我告诉他们,这叫做‘虚拟社区’。”

这一年的网易已经纳斯达克上市,已经逐渐形成门户的雏形,后来跟随新浪和搜狐,推出了门户网站服务。

2001年——Welcome to Netease–网易
卢松松:从网易首页变化看互联网15年变化

2001年的网易首页,网站标题是“Welcome to Netease–网易”

随后的2002—2003年,网易的首页没有太多变化,这一年,www.163.com单日页面浏览量突破1亿,互联网泡沫破灭,让网易股价一度降到低于一美元,并因涉嫌财务欺诈被停牌。

经历财务风波后,网易开拓了包括无线增值和网络游戏在内的新业务。可谁又知道,《大话西游》连续8年成为中国最流行网络游戏之一,到今天已经成为名符其实的网游巨头。

2004年——网络记忆2004
卢松松:从网易首页变化看互联网15年变化

2004年的网易首页,网站标题是“网易”

这一年,网易的首页风格大改版,也逐渐形成沿用至今的浅蓝色调而且信息量越来越大。这一年网易的年度策划给了我很深的印象,在新浪搜狐都乐于做“大新闻”,反映寰球宇内的大事件,大动向的时候。只有网易新闻对“民生”特别重视。

2007——小李和局长
卢松松:从网易首页变化看互联网15年变化

2007年的网易首页,网站标题是“网易”

这个界面与我们今天看到的网易首页很像了,而且信息量更大。而最具特色的是网易的跟帖审核机制,往往只有少量的评论能够正常显示,但与其他门户网站相比, 这也是个明显的优势了。久而久之,有了一批相对固定的跟帖者和像我这样的只看不回的潜水者,竟然也形成了一种跟帖文化,出现了一些网易跟帖才有也只有经常 去逛的人才明白的的专门词语,如“小李”、“局长”、“网易大楼”、“老衲”。

2010——有态度?
卢松松:从网易首页变化看互联网15年变化

2009—2010年的网易首页,网站标题是“网易—有态度”

2009年,网易再度发力门户业务。网易的立场是自由主义的,自称为“有态度的新闻”,所谓南方系的一员 虽然网易不能自己播发新闻,但在新闻标题的设定及其官方评论中,清楚的表面了其立场。但也因此有人质疑新闻能不能有态度?

2012——该页无法显示

2012年,不仅仅是网易,门户网站会有更多“该页无法显示”。

预测网易新版首页
预测网易新版首页

文/卢松松

微评国内云计算平台

1. 阿里云,阿里战略级支持力度。以 Amazon 云计算平台为师,开发人员不少,但内部团队相对混乱动荡。对开发者友好程度一般。产品主要由万网销售,价格几乎是国内最贵,服务响应一般,云市场捆绑的软件多数都是关系户

2. 盛大云,不确定是否目前是盛大战略级支持。以 Amazon 云计算平台为师,开发人员目前偏少,内部团队相对动荡。对开发者友好程度一般。产品由盛大自行销售,价格合适,入手使用较为容易,服务响应较好。期待盛大 能做后续投入,并且继续改进产品体验。

3. 新浪 SAE,目前不是新浪战略级支持,起码听不到曹会计的念叨。几乎是目前国内最好的 PaaS 平台,开发人员目前偏少,团队相对稳定。对开发者友好相对较好。价格合适,入手使用较为容易,服务响应较好,口碑不错。

4. 华为云,像是华为战略级支持的方向,到底要做成什么样子…不知道。技术上总体偏差,用户体验糟糕,安全性一般,开发人员…海量,有人觉得华为能做成,但我真不看以做硬件做软件的思路来做互联网。

5. 百度 BAE ,跟 SAE 类似,也是 PasS 。目前是百度「概念」上战略级支持,较为特别的是,还支持 Java 环境,看起来,以后可能要面向密集计算,不过稳定性还需改进,内部团队规模不知。对开发者友好程度一般。#微评云计算#

6. 功能型的云服务 ,比如 UpYun,面向解决「图片」存储问题,规模小,但 API 丰富,对开发者支持较好,服务响应不错。其他也有人在做面向垂直行业的云计算解决方案,个人表示看好。

7. 结束语 国内的云计算平台,如果做不到开发者买账的话,永远都是废柴。完全照搬 Amazon 或是 Google App Engine 也是没有出路的事情,摸清用户的需求,解决用户的问题,远比炒作概念更为重要。未来18个月,国内云计算服务会更加成熟,个人表示,乐观看好。

本文作者:丁香园(DXY.com) 技术负责人 冯大辉 (微博)

Mozilla 将推 Webmaker 项目 让普通人都能开发WebApp

Mozilla为了实现“全民学代码”的目标,为了鼓励更多的人加入到学习代码开发程序的热潮中,为了能帮助普通人都写出应用程序,推出了Mozilla Webmaker项目。 该项目在Tumblr, Creative Commons和旧金山公众实验室的帮助下为全球的对开发感兴趣但是没有技术的人提供技术支持。

Mozilla Coding Party

该工程集成了Mozilla已经开发好的简单易用的开发工具,当然还有几家合作单位的开发工具,降低了开发程序的门槛,对代码感兴趣的用户提供了一个开放自由的学习环境。据悉Webmaker项目将于今年的6月6日正式对外界发布。

JRuby 核心成员跳槽到红帽公司

JRubyConf 2012 会议上爆出了 JRuby 的两位核心成员 Thomas Enebo 和 Charles Nutter 将从 Engine Yard 公司跳到开源巨头红帽公司。

该消息已经由 Nutter 的微博上确认:in a tweet:

Engine Yard 称他们将继续与 Charles 和 Tom 紧密合作,同时也和红帽紧密合作继续 JRuby 的进一步开发和完善。

JRuby 刚刚发布了 1.7 首个预览版本,详情请看这里