三大JavaScript框架对比——AngularJS、BackboneJS和EmberJS
《三大JavaScript框架对比——AngularJS、BackboneJS和EmberJS》
本文转载自 作者:chszs,博客主页:http://blog.csdn.net/chszs
如果有心搜索的话,你能找出上百种JavaScript框架。当我们要开发一个现代化的、敏捷酷炫的网站时,JavaScript是必备的基础技术。那么问题来了,如何在这么多JavaScript框架中选取最能满足我们需求的框架?这是一个难题。而且还有很多挑战,比如要让网站在不同的客户端浏览器上表现出一致的行为和外观,这也很不容易。选择最适合的JavaScript库来辅助我们的开发,简化开发难度和减少开发耗时。
最流行的JavaScript库是jQuery,它提供了一套JavaScript函数,减少了很多开发工作。但是jQuery只是一个辅助库,真正要在前端MVC模式上有大作为的库,还是要数下面的三个JavaScript库:AngularJS、BackboneJS和EmberJS。下面我将对这三个JavaScript库做对比。
一、介绍
1、AngularJS
AngularJS是一个开源的JavaScript框架,由Google发明并负责演进和维护。AngularJS基于MVC架构,目标是使得开发和测试更富有效率、更加容易。AngularJS扩展了传统的HTML代码,使得动态内容能够和页面元素进行双向绑定。AngularJS是一个独立的框架,这意味着它不依赖于任何别的JavaScript框架。
2、BackboneJS
BackboneJS是一个开源的、轻量级的MVC框架。它诞生于2010年,发展的非常迅速,很快就成长为一种替代笨重的、全功能MVC架构(比如ExtJS)的JavaScript框架。这使得很多国外互联网公司开始采用它来构建自己的应用服务。比如Pinterest、Flixster、AirBNB等公司。BackboneJS库提供了一种键值绑定、自定义事件的模型,使得Web应用富有结构化,而且还有一套带枚举函数和视图的丰富API的集合。BackboneJS库可以通过RESTful风格的JSON接口来连接你现有的API。BackboneJS库依赖于Underscore.js库。
BackboneJS以数据为模型,可以对模型进行创建、验证、销毁、保存到服务器端等操作。视图用于显示模型的状态,当属性发生了改变时,能被触发,视图可以做出相应的反应,并重现新信息。BackboneJS是在一套最小的数据结构(模型和集合)和用户界面(视图和URL)原语之间的一个尝试,对于构建JavaScript的Web应用非常有用。
3、EmberJS
EmberJS要追述源头得回到2007年,它源于SproutCore MVC框架,SproutCore框架最初是由SproutIt公司开发,后来由Apple接手并演进和维护。直到2011年,Yehuda Katz(他是jQuery项目和Ruby on Rails项目的核心贡献者)发起了EmberJS项目。值得注意的是,EmberJS库的用户包括雅虎、Groupon和ZenDesk等互联网公司。
EmberJS允许开发者创建可扩展的单页Web应用。它提供了一套丰富的Handlebars.js库,功能包括:提供了对象模型、声明式的两路数据绑定、可计算的属性、自动化更新的模板,还提供了一个路由器来管理应用程序的状态。
作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs
二、比较
1、社区
选择框架的一个重要因素是框架社区的规模和开发者的数量和活跃度。三者相比,AngularJS社区规模最大、发展更快、社区也最有活力。而且AngularJS在GitHub的跟随者也更多,在StackOverflow的问答也更多。
2、框架的大小
页面加载时间是Web应用成功的关键因素之一。用户需要能快速地访问信息,影响页面加载时间的两个因素:JavaScript框架的大小和启动它所需的时间。
比较这三个框架的压缩版:AngularJS 1.2版有105KB,EmberJS 1.9.1版有97KB,BackboneJS 1.1.2版有65KB。但是,AngularJS框架无任何依赖,BackboneJS框架依赖于Underscore.js库(52KB),EmberJS框架和BackboneJS框架通常需要jQuery库(82KB)来简化操作。因此,AngularJS框架的大小才是真正最小的。
3、模板
AngularJS框架和EmberJS框架都包含了一个模板引擎。而BackboneJS框架无模板引擎,开发者需要选择一个第三方模板引擎集成到项目中。当然,对于BackboneJS框架来说,Underscore.js库就包含了模板引擎,可以用它。
4、灵活性
有很多JavaScript插件可以完成很多专门的工作。这是非常有用的,因为每一种框架都无法做到面面俱到。所以,对于框架来说,支持插件、支持扩展就很重要了。三者相比,BackboneJS框架是最灵活的框架,因为它的约定最少,开发者在使用时可以自己做很多决定。EmberJS框架和AngularJS框架在某种程度上来说是灵活的,但不够灵活。
5、学习曲线
AngularJS框架的开发者可以快速构建Web应用,快速使用双向绑定,基本上无需学习。但是要深入掌握AngularJS框架,就需要学习一些专业术语,学习曲线也比较陡峭。EmberJS框架的学习曲线就比AngularJS平滑一些。
BackboneJS框架更容易学习,但是要掌握它还需学习Underscore.js库
三大JavaScript框架对比——AngularJS、BackboneJS和EmberJS的更多相关文章
- 前端javascript框架之AngularJS学习笔记
<!doctype html><html lang="en" ng-app><head><meta charset="utf-8 ...
- vue、react、angular三大框架对比 && 与jQuery的对比
前端当前最火的三大框架当属vue.react以及angular了. 但是在做项目的时候,我们怎么去选择呢? 这里做一个比较,希望大家可以有一个比较清晰的认识. vue与react vue和react ...
- 前端三大主流框架的对比React、Vue、Angular
前端三大主流框架的对比React.Vue.Angular React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站, 并于 2013年 5 月开源.React 拥有较高的 ...
- 主流JavaScript框架(Dojo、Google Closure、jQuery、Prototype、Mootools和YUI)的分析和对比
本文主要选取了目前比较流行的JavaScript框架Dojo.Google Closure.jQuery.Prototype.Mootools和YUI进行对比,主要是根据网上的资料整理而成,希望可以供 ...
- vue、react、angular三大框架对比
前端的三大框架当属vue.react以及angular了,个人比较偏向react,它的社区比较繁荣,有很多丰富的组件 .angular的话感觉编译时间有点长,等待很恼火. vue与react vue和 ...
- JavaScript 框架------------AngularJS(上)
一.简单了解一下AngularJS AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 指令 扩展了 ...
- 一款优秀的JavaScript框架—AngularJS
AngularJS简介 AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.Angular ...
- Vue, React, AngularJS, Angular2 我们对流行JavaScript框架们的选择
转自<奇舞周刊>,好文章mark一下 分割线 一个有趣的事实是:IBM发表的2017年最值得学习的编程语言名单中,JavaScript榜上有名.这位IT巨头指出,JS在网站中惊人地达到94 ...
- Vue, React, AngularJS, and Angular2. 我们对流行JavaScript框架们的选择
2017-08-04 前端大全 (点击上方公众号,可快速关注) 英文:ANTONI ZOLCIAK 译文:众成翻译 www.zcfy.cc/article/vue-react-angularjs-a ...
随机推荐
- SQL Server不同服务器不同数据库间的操作
什么是跨服务器操作? 跨服务器操作就是可以在本地连接到远程服务器上的数据库,可以在对方的数据库上进行相关的数据库操作,比如增删改查. 为什么要进行跨服务器操作 随着数据量的增多,业务量的扩张,需要在不 ...
- 安装Anaconda3时出现conda不是内部或者外部命令
在win10,64位,python版本为3.7的环境下安装anaconda3的时候,无法在命令行执行conda命令,一直提示conda不是内部或者外部命令,参考网上的修改环境变量,修改完后还是没有用, ...
- dfs序与求子树子节点(染了色)的个数
https://blog.csdn.net/hpu2022/article/details/81910490 https://blog.csdn.net/qq_39670434/article/det ...
- 谈谈一些有趣的CSS题目-- 从倒影说起,谈谈 CSS 继承 inherit
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你 ...
- Python学习笔记(01)
参考书:<Python编程:从入门到实践> 还有其他 Chapter01 print print(a,b,sep="|") sep规定输出间的间隔 print(“Pyt ...
- 【Android】网络通信
https://www.bilibili.com/video/av78497129?p=4 本文为此视频笔记 1.一些标准设定 (读头部和内容) --->运行,出现权限警告: --->运行 ...
- IIS 部署 web service
1.在控制台检查 IIS 功能是否已经全部启用 2.重新注册IIS 3.设定程序池的正确版本
- Linux - Shebang(#!)
1. Shebang这个符号通常在Unix系统的脚本中第一行开头中写到,它指明了执行这个脚本文件的解释程序.
- Fluent_Python_Part4面向对象,11-iface-abc,协议(接口),抽象基类
第四部分第11章,接口:从协议到抽象基类(重点讲抽象基类) 接口就是实现特定角色的方法集合. 严格来说,协议是非正式的接口(只由文档约束),正式接口会施加限制(抽象基类对接口一致性的强制). 在Pyt ...
- python opencv:代码执行时间计算
t1 = cv2.getTickCount() # ...... t2 = cv2.getTickCount() # 计算花费的时间:毫秒 time = (t2-t1) / cv2.getTickFr ...