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

摩托罗拉称部分手机将无法升级到 Android 4.0

根据cellular-news报道,摩托罗拉表示,旗下部分智能手机将无法升级到最新Android 4.0系统或Ice Cream Sandwich操作系统。Motorola在官方博客中表示,该公司与Goolge、手机运营商在每一款软件升级上进行密切合作,并希望新系统能够提升设备性能。如果公司认为升级达不到效果,就不会针对这款设备进行升级。

根据摩托罗拉正式公布公司旗下手机升级Android 4.0的时间表,去年才上市的Motorola Droid 3以及Droid X2将不会升级Android 4.0系统。Droid Razr及Droid Razr MAXX将会在本季获得Android 4.0更新,而同样会在本季升级Android 4.0的还包括Motorola Xoom MZ600。此外,Motorola Droid Bionic、Droid 4等也都会在第三季升级Android 4.0。

另外,在获得中国有关部门最终批准之后,Google宣布完成对摩托罗拉公司的收购,同时任命了摩托罗拉新的管理团队。

Google表示,摩托罗拉现任CEO Sanjay Jha将离职,继任者将是Google前美洲区总裁Dennis Woodside。Woodside之前负责Google对摩托罗拉的收购。不过,Sanjay Jha并不会马上离开摩托罗拉,在过渡期中还将继续负责。美国和欧盟监管部门已于2012年2月批准了这笔交易。

另外,据美国TechCrunch消息人士透露,摩托罗拉有可能进行裁员。Google可能会削减摩托罗拉公司19,000名员工中的30%,即大约削减5,700名员工。Google对此消息拒绝发表评论。

8 个很棒的免费的 C++ GUI 库

现在我们要给开发者分享几个C++GUI库。我希望这些库能帮助开发者开发出更优美的软件。

  • C++是一个多范式,自由编译格式的,对于日常编程应用非常强大的语言。这种语言被认为是一种中间层次的语言。主要是因为他同时包含了底层和高层的语言的特性。
  • C++因为很多原因非常流行。它的领域很广,包括系统软件、设备驱动、应用软件和其他客户端软件以及娱乐软件比如电子游戏。
  • GUI是图形用户界面的缩写,就是说允许用户通过图形的方式而不是通过命令行的方式操作电脑。

1、Qt

QT是一个跨平台的应用程序和用户界面框架。他包括一个跨平台的类库,整合了开发工具盒跨平台的IDE。使用QT,你可以写一次程序而跨平台部署,包括许多桌面平台和嵌入式操作系统。

2、Fltk

FLTK(flltick)是一个跨平台的C++GUI工具,支持的平台有UNIX/Linux(X11)、Windows和MacOS X。FLTK提供了通过基于GLUT的OPENGL支持3D绘图。FLTK设计的小巧,可以以静态库的方式很好的模块化,但是同样可以以动态库的方式运行。FLTK还包括了一个叫做FLUID的优秀的UI构建器,可以再几分钟内创建出优秀的应用程序。

3、Fox Toolkit

FOX是一个基于C++的用于快速高效的开发图形用户界面的工具包。他提供了宽范围的,可扩展的控件集,还支持一些其他效果,例如拖拽,选择等。同样它也可以通过OPENGL提供3D绘图的支持。FOX还实现了图标、图像,状态狼提示,工具提示等非常方面的图形接口。

4、Gpe Phone

GPE Phone Edition 是为了开发在移动Linux设备上,特别是手机上的基于GTK/GPE的软件栈。

5、Lgi

LGI是一个GUI框架,这个框架可以抽象出所有操作系统的依赖,你可以利用它写出可移植的代码。他可以处理所有图形界面的功能,线程、信号量、网络连接和其他的一些小的功能,以此来构建出小巧的快速的可靠的应用程序。

6、Wx Windows

wxWidgets是一个为Windows 、OSX、Linux 和UNIX的C++类库,同事支持32位和64位。他也支持一些移动平台,例如Windows Mobile、iPhone SDK以及嵌入式GTK+。

7、Ultimate++

U++是一个C++跨平台的快速开发应用程序的框架。它包括了一套库包括(GUI、SQL、等等),也有整合的开发环境。

8、Zoolib

Zoolib允许你只处理很少一部分跟平台独立的代码的同时构建出跨平台的原生应用。它使用提供的预处理符号,包括内联通过条件编译等特性食指非常简单易用。

OSCHINA原创翻译/原文链接

Yahoo 加入浏览器大战,发布 Axis 浏览器

据说Yahoo发布Axis是蓄谋已久的事了,去年就在讨论这个浏览器,但直到昨天晚上,Yahoo浏览器终于揭开神秘面纱,虽说Yahoo不管从 节操还是从自身实力上,都是日薄西山,但据说这个浏览器重新定义了搜索与浏览,号称Chrome杀手。下面是Yahoo的公开信:

大家好:

我无比激动的宣布,今晚九点,我们将发布Yahoo Axis,你们是我最珍贵的客户,所以我想把这个好消息第一时间告诉你们,因为直到今夜,Axis才得以正式发布,所以,我希望大家能把这个消息保密到明天。

Yahoo! Axis是一个全新的浏览器,重新定义了搜索与浏览,能为你在iPhone,iPad甚至PC上带来无缝搜索体验,以全然不同的方式,把Yahoo带入另一个世界。下面是Axis的几大亮点:

更智能,搜索更快,设计更丰富:能立即获得答案以及预览效果,以便你能持续不间断的发现并挖掘内容,不离开你的搜索结果页面。

连接体验:不论你上一次搜索是通过PC,iPhone还是iPad,都能记住你搜索的结果,能自动通过你所有设备访问最近访问过的页面,搜索内容,所保存文章,书签。

个性化主页:通过个性化主页,你可以在所有设备上,直接访问你最喜欢的网页与内容。

广告商们,虽然现在还没有为你们提供机会,但我们打算在以后整合广告,当然,到时候会及时通知大家,不过,我们现在的目标仍然就是为您带来搜索基数 与流量,我们坚信,Axis能完成这个使命,现在,在所有设备上扩张搜索量是一个很大的机会,或许最重要的是在手机及平板电脑上。最终结果就是用户与更大 的搜索量变成逐渐增加的流量以及广告价值。

想了解更多?

请访问axis.yahoo.com观看Axis是如何给您带来惊喜的,对了,不要忘记下载Axis或App,不过要在九点以后哦。

谢谢

开源软件的时代来临

在将来的五年中,有一半的IT软件将是开源软件。开源软件引领这云计算,大数据,移动互联网和企业移动时代的发展。在调查中,Michael Skok(North Bridge Venture Partners 合伙人)表示根据目前移动应用和云计算应用的部署情况来看,我们正在进入一个令人激动的开源创新时代。这不仅仅是说开源软件的创新会更快,更是意味着这些软件可以在云端快速的部署,并且作为一项服务被使用。

其他接受调查的人表示,软件的质量是他们选择开源软件的最重要的三个原因之一。他们同时认为软件的成熟度也同样重要。有一半的受访者认为受开源软件影响最大的市场是数据管理(Data Management)市场。

调查显示开源软件产业已经自成体系,并且在企业市场有着举足轻重的部署和应用,虽然企业市场以前一直是抵触开源软件的。在过去的几年中,开源软件迅速的成熟,企业的IT管理者少了很多顾虑,敢于把开源软件应用到核心系统中。从另外一个角度来看,企业2011年在开源软件上的投入达到了6.75亿美元,比2010年上涨了49%。

虽然开源软件越来越重要,但还是面临很多挑战。同样的调查也限时,很多IT专业人士对开源软件解决方案并不熟悉,这也导致了市场上缺乏有经验,能够部署、管理开源应用的工程师。令人欣慰的是,开源软件在大学的计算机课程中占据的比重越来越大,也就是说在不久的将来,开源软件人才的缺乏将会被缓解。

原文链接OSChina 编译