10种顶级javascript框架比较The Top 10 Javascript MVC Frameworks

摘要:
4.Spine.jsBasedonthename,Spine.jsisobviouslyheavilyinfluencedbybackbone.Likebackbone,itisverylightweightandfollowsasimilarmodel.优点pros:Lightweightwithgooddocumentation.轻量级,文档很完备;Cons:Fundamentallyflawed.Acoreconceptofspineis“isasynchronousUIs.Inanutshell,thismeansthatUIsshouldideallyneverblock”.Havingbuiltaseriousnon-blockingrealtimeapplicationinthepast,Icansaythisisentirelyunrealisticunlessthebackendhassomethinglikeoperationaltransformation.它的核心概念“spine”是异步的用户界面,这意味着理想状况用户界面永远不会发生堵塞,而这个基础有缺陷。

转载于:http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/

Gordon L. Hempton是西雅图的一位黑客和设计师,他花费了几个月的时间研究和比较了12种流行的JavaScript MVC框架,并在博客中总结了每种框架的优缺点,最终的结果是,Ember.js胜出。

Framework

UI Bindings

UI绑定

Composed Views

复合视图

Web Presentation Layer

Web表现层

Plays Nicely With Others

与其他框架良好协作

Backbone.js
SproutCore 1.x
Sammy.js
Spine.js
Cappuccino
Knockout.js
Javascript MVC
Google Web Toolkit
Google Closure
Ember.js
Angular.js
Batman.js

1. Backbone.js

Backbone.js 是web人士的最爱和首选. GroupTalent.

优点pros: 良好的兼容性. Underscore.js (也比较大量地使用) 则是另一个很好框架. 强大的社区,强劲的势头

缺点Cons: Lacks strong abstractions and leaves something to be desired. The entire framework is surprisingly lightweight and results in lots of boilerplate. The larger an application becomes, the more this becomes apparent. 抽象较弱,很多功能亟待增加

2. SproutCore 1.x

SproutCore is what Apple used on its iCloud initiative. Despite having a horrible name, it is actually an extremely well thought out framework. It is also one of the largest frameworks.

优点pros:Bindings support. Solid community. Tons of features. 对绑定的支持,可靠的社区,大量特性;

缺点Cons: Overly prescriptive. Hard to decouple from unneeded features. Forces a native-like paradigm. I have a serious problem with any framework which discourages using html for layout. 过度规范,难以和不需要的特性解耦。

3. Sammy.js

Sammy.js was a smaller framework that I stumbled upon. Due to its simplicity, it almost didn’t make this list. It’s core feature is a routing system to swap out areas of an application with AJAX.

优点pros:Simple learning curve. Easier to integrate with an existing server side app. 易于学习,更容易和现存的服务端应用程序整合

缺点Cons: Too simple. Not sufficient for larger applications. 过于简单,无法应用于大型应用程序中。

4. Spine.js

Based on the name, Spine.js is obviously heavily influenced by backbone. Like backbone, it is very lightweight and follows a similar model.

优点pros:Lightweight with good documentation. 轻量级,文档很完备;

Cons: Fundamentally flawed. A core concept of spine is “is asynchronous UIs. In a nutshell, this means that UIs should ideally never block”. Having built a serious non-blocking realtime application in the past, I can say this is entirely unrealistic unless the backend has something like operational transformation. 它的核心概念“spine”是异步的用户界面,这意味着理想状况用户界面永远不会发生堵塞,而这个基础有缺陷。

5. Cappuccino

Cappuccino is one of the more unique frameworks, coming with its own language Objective-J. Cappuccino tries to emulate Cocoa in the browser.

优点pros: Large thought-out framework. Good community. Great inheritance model. 大型深思熟虑后的框架,良好的社区,很棒的继承模型;

缺点Cons: Out of all the languages you could emulate in javascript, Objective-C would be my last choice. This is coming from an iOS developer. I simply can’t get past the idea of programming Objective-J in the browser. 由iOS开发者创建,使用JavaScript模拟Objective-C。

6. Knockout.js

Knockout.js is an MVVM framework that receives lots of praise from its supporters. It stresses declarative UI bindings and automatic UI refresh.

优点pros: Binding support. Great documentation and amazing tutorial system. 对绑定的支持,完备的文档和教程;

缺点Cons:Awkward binding syntax and lacks a solid view component hierarchy. I want to be able to reuse components easily. I also feel like identifying as an MVVM framework is deleterious. Hardly any of these frameworks are MVC, but are of the MV* variety (MVP, MVVM, etc). 绑定语法拙劣,缺少统一的视图组件层级关系。

7. Javascript MVC

Javascript MVC, in the interest of full disclosure, is a framework that I didn’t spend very much time evaluating.

优点pros: Solid community and legacy. 可靠的社区;

缺点Cons: Awkward inheritance model based on strings. Controllers are too intimate with views and lack bindings. The name is way too generic - the equivalent would be if RoR was called “Ruby Web Framework”. 基于字符串的继承模型很差,控制器与视图关系过密而缺少绑定。

8. Google Web Toolkit

GWT is a serious client-side toolkit that includes more than just a framework. It compiles Java to Javascript, supporting a subset of the standard java library. Google used it internally for Wave.

优点pros: Comprehensive framework with great community. Solid Java-based component inheritance model. Great for behemoth client-side applications. 全面的框架,良好的社区,可靠的基于Java的组件继承模型;

缺点Cons:Despite what Google says, GWT is not going to stand the test of time. With initiatives like DART its clear that Java is not the future of the web. Furthermore, the abstraction of Java on the client is slightly awkward. 可能无法经受时间的考验,另外,Java在客户端上的抽象有些笨拙。

9. Google Closure

Google Closure is more of a toolkit than simply a javascript framework. It comes bundled with a compiler and optimizer.

优点pros: Use by Google for many of their major apps. Nice component-based ui composition system. 很好的基于组件的UI组合系统。

缺点Cons: Lack of UI-binding support. 缺少UI绑定支持。

10. Ember.js

Ember.js (formerly Amber.js SproutCore 2.0) is one of the newest contenders. It is an attempt to extricate the core features from SproutCore 2.0 into a more compact modular framework suited for the web.

优点pros:Extremely rich templating system with composed views and UI bindings. 很丰富的模板系统,拥有复合视图和UI绑定;

缺点Cons: Relatively new. Documentation leaves lots to be desired. 相对较新,文档不够完备。

11. Angular.js

Angular.js is a very nice framework I discovered after I originally posted this review. Developed by Googler’s, it has some very interesting design choices.

优点pros: Very well thought out with respect to template scoping and controller design. Has a dependency injection system (I am a big fan of IOC). Supports a rich UI-Binding syntax to make things like filtering and transforming values a breeze. 对模板范围和控制器设计有很好的考虑,拥有依赖注入系统,支持丰富的UI绑定语法。

缺点Cons:Codebase appears to be fairly sprawling and not very modular. Views are not modular enough (will address this in more detail in the cons of Batman.js). 代码的模块性不强,视图的模块化也不够。

12. Batman.js

Batman.js, created by Shopify, is another framework in a similar vein to Knockout and Angular. Has a nice UI binding system based on html attributes. The only framework written in idiomatic coffeescript, it is also tightly integrated with Node.js and even goes to the extent of having its own (optional) Node.js server.

优点pros:Very clean codebase. Has a nice simple approach to binding, persistence, and routing. 代码清晰,绑定、持久化的方法简单;

缺点Cons: I very much dislike singletons, let alone the idea of enforcing singleton controllers. Suffers from the same ailments as Knockout and Angular with regards to nested components. I want to be able to declaratively reuse more than just templates. What Ember has over these frameworks is a way to declaratively re-use entire components that are backed by their own (possibly controller-level) logic. 使用了单例控制器。

(注解:英语水平有限,慢慢来翻译)

免责声明:文章转载自《10种顶级javascript框架比较The Top 10 Javascript MVC Frameworks》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Redis主从同步、哨兵模式、集群模式配置Jenkins部署到远程(Linux服务器)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Javascript诞生与历史

基本常识 Brendan Eich在1995年4月入职Netscape Communications Corporation(网景通信公司)。并于1995年5月用10天时间发明了Javascript。 Javascript语言特点 借鉴c语言的基本语法 借鉴Java语言的数据类型和内存管理 借鉴Scheme语言,将函数提升到“第一等公民”(first c...

JavaScript异步编程 ( 一 )

1. 异步编程   Javascript语言的执行环境是"单线程"(single thread)。所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览...

JavaScript-Runoob:JavaScript 数据类型

ylbtech-JavaScript-Runoob:JavaScript 数据类型 1.返回顶部 1、 JavaScript 数据类型 值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。 引用数据类型:对象(Object)、数组(Array)、函数(Fu...

仿华为 USB mode 实现方法

极力推荐文章:欢迎收藏Android 干货分享 阅读5分钟,每日十点、和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一、实现效果 二、主要实现思路 三、主要实现代码 四、在Framework 层添加资源的方法 一、实现效果 仿华为USB Mode弹窗实现效果如...

JS和JSP的区别

js是javascript的缩写。以下是JSP与baiJS的区别和联系:du 名字:JS:JavaScript JSP:Java Server Pages 执行过程:zhiJSP先翻译,翻译成Servlet执行如: test.jsp 要变成 test_jsp.java 然后dao编译成 test_jsp.class而 test_jsp.java 本身就是一...

关于JAVASCRIPT中的DATASET

DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,比如父子关系的数据,所以...