转载于: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.   使用了单例控制器。

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

转载于:https://www.cnblogs.com/JoannaQ/archive/2012/08/31/2664734.html

10种顶级javascript框架比较-The Top 10 Javascript MVC Frameworks相关推荐

  1. javascript 框架_我们仍然需要JavaScript框架吗?

    javascript 框架 by Luke Joliat 卢克·乔里亚特(Luke Joliat) 我们仍然需要JavaScript框架吗? (Do we still need JavaScript ...

  2. 2020年用于前端开发的顶级JavaScript框架

    Front-end developers might know this game already: you type "top JavaScript frameworks" in ...

  3. OWASP top 10漏洞原理及防御(2017版官方)

    文章目录 一.OWASP top 10简介 二.OWASP top 10详解 A1:2017-注入 A2:2017-失效的身份认证 A3:2017-敏感数据泄露 A4:2017-XML外部实体(XXE ...

  4. 全球10大顶级开源ERP系统

    企业资源规划(ERP)和客户关系管理(CRM)系统现在已经成为各种组织和企业的必需品,通过它们,可以轻松实现企业的信息数据标准化.系统运行集成化.业务流程合理化.绩效监控动态化.管理改善持续化. 本文 ...

  5. java8 创建list方式_Java 8 创建 Stream 的 10 种方式,我保证你受益无穷!

    今天来分享下在 Java 8 中创建 Stream 的 10 种方式,我就整理了 10 种,其实还有更多,仅供大家参考学习下. 1.Stream.of 可变参数 Stream<String> ...

  6. 区块链游戏常见的 10 种分类

    区块链游戏表面上与现有的游戏玩法并无二致,但是有了区块链的加持,玩家能够拥有独一无二的真正属于自己的数字资产,并且更加安全. 现阶段大体可以将区块链游戏分为四大类:以太坊游戏.链克游戏.公有链游戏和私 ...

  7. JavaScript 框架之jQuery

    目录 一.JavaScript 框架之jQuery 二.JavaScript - 测试 jQuery 引用 jQuery jQuery 描述 测试 jQuery 一.JavaScript 框架之jQu ...

  8. 陀螺问答一周TOP 10榜单:Libra落地之路一波三折

    近日,陀螺财经App推出了全新功能"陀螺问答",为用户首创向KOL单独提问的机会,一对一问答,满足用户个性化深度交互的需求. 截止目前,"陀螺问答"已接收到10 ...

  9. 你必须知道的10种国产编程语言

    你必须知道的10种国产编程语言 你必须知道的10种国产编程语言 --一个老程序员的心声:我们必须要有国产的编程语言 众所周知,编程语言是外国人的天下,我们一入行,就失去了 ...

最新文章

  1. projecteuler_problem10
  2. 分页请求json数据_pyspider抓取虎嗅网文章数据
  3. TensorFlow Wide And Deep 模型详解与应用
  4. 成功解决AttributeError: type object 'scipy.interpolate.interpnd.array' has no attribute '__reduce_cython
  5. 用Python拼图发一个高逼格的朋友圈
  6. (十四)深入浅出TCPIP之初识UDP理解报文格式和交互流程
  7. python waitkey_python中VideoCapture(),read(),waitKey()的使用
  8. Butter knife 原理
  9. Junit4所需jar包
  10. gerrit配置replication插件
  11. SpringCloud Eureka 高可用
  12. 离线版Google Chrome Frame下载
  13. mysql 报ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUT
  14. 微信小程序的总结(我学到了什么?我有了哪些成就?)
  15. 一步步教您搞定讯飞语音识别 | 寻找C站宝藏
  16. 在2003服务器上预览时出现:您未被授权查看该页 您不具备使用所提供的凭据查看该目录或页的权限
  17. 如何用数据说话-《数据化决策(美)道格拉斯·W.哈伯德》笔记与心得
  18. PDF文件太大,有哪些方法可以减小PDF
  19. 用于自然语言理解的多任务深度神经网络
  20. android qq登录分析,[原创]对QQ手游授权登录的一点分析

热门文章

  1. c语言蓝牙接收6,终于搞定了通过两路蓝牙接收数据
  2. oracle按照指定顺序读取,oracle按照指定顺序进行排序
  3. 如何自己塑封_全球市场三足鼎立,国内半导体封测业如何实现可持续发展?
  4. Java操作——获取文件扩展名,去掉文件扩展名
  5. 神奇的x -x,Lowbit函数的实现方式!
  6. leetcode292. Nim 游戏
  7. 双向循环链表【数据结构】
  8. GCC中常用的优化的参数
  9. 算法(27)-最大系列
  10. LeetCode - Medium - 264. Ugly Number II