《三大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的更多相关文章

  1. 前端javascript框架之AngularJS学习笔记

    <!doctype html><html lang="en" ng-app><head><meta charset="utf-8 ...

  2. vue、react、angular三大框架对比 && 与jQuery的对比

    前端当前最火的三大框架当属vue.react以及angular了. 但是在做项目的时候,我们怎么去选择呢?  这里做一个比较,希望大家可以有一个比较清晰的认识. vue与react vue和react ...

  3. 前端三大主流框架的对比React、Vue、Angular

    前端三大主流框架的对比React.Vue.Angular React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站, 并于 2013年 5 月开源.React 拥有较高的 ...

  4. 主流JavaScript框架(Dojo、Google Closure、jQuery、Prototype、Mootools和YUI)的分析和对比

    本文主要选取了目前比较流行的JavaScript框架Dojo.Google Closure.jQuery.Prototype.Mootools和YUI进行对比,主要是根据网上的资料整理而成,希望可以供 ...

  5. vue、react、angular三大框架对比

    前端的三大框架当属vue.react以及angular了,个人比较偏向react,它的社区比较繁荣,有很多丰富的组件 .angular的话感觉编译时间有点长,等待很恼火. vue与react vue和 ...

  6. JavaScript 框架------------AngularJS(上)

    一.简单了解一下AngularJS AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 指令 扩展了 ...

  7. 一款优秀的JavaScript框架—AngularJS

    AngularJS简介 AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.Angular ...

  8. Vue, React, AngularJS, Angular2 我们对流行JavaScript框架们的选择

    转自<奇舞周刊>,好文章mark一下 分割线 一个有趣的事实是:IBM发表的2017年最值得学习的编程语言名单中,JavaScript榜上有名.这位IT巨头指出,JS在网站中惊人地达到94 ...

  9. Vue, React, AngularJS, and Angular2. 我们对流行JavaScript框架们的选择

    2017-08-04 前端大全 (点击上方公众号,可快速关注) 英文:ANTONI ZOLCIAK  译文:众成翻译 www.zcfy.cc/article/vue-react-angularjs-a ...

随机推荐

  1. 【原】移动端vue页面点透事件 - 分析与解决

    近期项目遇到了vue页面事件被带到下一个页面的问题,也就是我们常说的点透事件,主要表现在android机器上,花了不少时间折腾,简单做下总结~ vue页面之间的切换通过Vue Router的route ...

  2. eclipse 鼠标悬停提示

    如果想要关闭鼠标悬停提示,只要把Window --> Preferences... --> Java --> Editor --> Hovers 把 Combined Hove ...

  3. oracle 11g快捷版的安装与使用

    oracle 11g快捷版的安装与使用 [oracle 11g 下载地址(]https://www.oracle.com/technetwork/cn/database/enterprise-edit ...

  4. LeetCode日常小习题

    LeetCode练习题: 1.给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入 ...

  5. 「JSOI2015」salesman

    「JSOI2015」salesman 传送门 显然我们为了使收益最大化就直接从子树中选大的就好了. 到达次数的限制就是限制了可以选的子树的数量,因为每次回溯上来都会减一次到达次数. 多种方案的判断就是 ...

  6. LFTP命令笔记

    安装 因为在OpenWrt命令行下scp传输文件很慢(只有2.5MB/s不到), 于是改用FTP下载. lftp是OpenWrt下的FTP客户端软件. 如果固件中未安装的话, 需要自己安装, 其依赖于 ...

  7. python匿名函数与三元运算

      匿名函数 匿名函数就是不需要显示式的指定函数名 首先看一行代码: def calc(x,y): return x*y print(calc(2,3)) # 换成匿名函数 calc = lambda ...

  8. 不要在mutation回调函数之外,修改vuex仓库里属性的状态

    [vuex] do not mutate vuex store state outside mutation handlers. import * as types from './mutation- ...

  9. Springboot学习:Thymeleaf 语法基础

    详细内容见:Thymeleaf Tutorial 中文翻译,中文文档 参考: thymeleaf官方指南 新一代Java模板引擎Thymeleaf Thymeleaf基本知识 thymeleaf总结文 ...

  10. 吴裕雄 python 神经网络——TensorFlow训练神经网络:不使用隐藏层

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data INPUT_NODE = 784 ...