12种JavaScript常用的MVC框架比较分析


Posted in Javascript onNovember 16, 2015

本文详细讲述了12种JavaScript常用的MVC框架。分享给大家供大家参考,具体如下:

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

此次比较针对的特性标准有四种,分别是:

① UI绑定(UI Bindings)
② 复合视图(Composed Views)
③ Web表现层(Web Presentation Layer)
④ 与其他框架良好协作(Plays Nicely with Others)

对于各种JavaScript MVC框架,Gordon都总结了优缺点:

1. Backbone.js ——优点:强大的社区,强劲的势头;缺点:抽象较弱,很多功能亟待增加。

2. SproutCore ——优点:对绑定的支持,可靠的社区,大量特性;缺点:过度规范,难以和不需要的特性解耦。

3. Sammy.js ——优点:易于学习,更容易和现存的服务端应用程序整合;缺点:过于简单,无法应用于大型应用程序中。

4. Spine.js ——优点:轻量级,文档很完备;缺点:它的核心概念“spine”是异步的用户界面,这意味着理想状况用户界面永远不会发生堵塞,而这个基础有缺陷。

5. Cappuccino ——优点:大型深思熟虑后的框架,良好的社区,很棒的继承模型;缺点:由iOS开发者创建,使用JavaScript模拟Objective-C。

6. Knockout.js ——优点:对绑定的支持,完备的文档和教程;缺点:绑定语法拙劣,缺少统一的视图组件层级关系。

7. Javascript MVC ——优点:可靠的社区;缺点:基于字符串的继承模型很差,控制器与视图关系过密而缺少绑定。

8. GWT(Google Web Toolkit) ——优点:全面的框架,良好的社区,可靠的基于Java的组件继承模型;缺点:可能无法经受时间的考验,另外,Java在客户端上的抽象有些笨拙。

9. Google Closure ——优点:很好的基于组件的UI组合系统。缺点:缺少UI绑定支持。

10. Ember.js ——优点:很丰富的模板系统,拥有复合视图和UI绑定;缺点:相对较新,文档不够完备。

11. Angular.js ——优点:对模板范围和控制器设计有很好的考虑,拥有依赖注入系统,支持丰富的UI绑定语法。缺点:代码的模块性不强,视图的模块化也不够。

12. Batman.js ——优点:代码清晰,绑定、持久化的方法简单;缺点:使用了单例控制器。

经过对以上各种Javascript MVC框架特性的比较,Gordon认为只有Ember.js能够完全满足他的要求,从而成为他最终选用的框架。

你是否也使用过某些JavaScript MVC框架呢?欢迎参与讨论。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript入门教程(10) 认识其他对象
Jan 31 Javascript
jQuery 属性选择器element[herf*='value']使用示例
Oct 20 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
May 06 Javascript
jquery获取选中的文本和值的方法
Jul 08 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
May 09 Javascript
Jquery获取第一个子元素简单实例
Jun 02 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
Nov 11 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
Jan 21 Javascript
vue组件name的作用小结
May 23 Javascript
ES6 如何改变JS内置行为的代理与反射
Feb 11 Javascript
JS实现简单省市二级联动
Nov 27 Javascript
正则表达式基础与常用验证表达式
Jun 16 Javascript
跟我学习javascript的函数和函数表达式
Nov 16 #Javascript
使用JQuery FancyBox插件实现图片展示特效
Nov 16 #Javascript
uploadify多文件上传参数设置技巧
Nov 16 #Javascript
跟我学习javascript的var预解析与函数声明提升
Nov 16 #Javascript
跟我学习javascript的全局变量
Nov 16 #Javascript
浅析JavaScript访问对象属性和方法及区别
Nov 16 #Javascript
跟我学习javascript的基本类型和引用类型
Nov 16 #Javascript
You might like
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
PHP新手上路(十)
2006/10/09 PHP
php error_log 函数的使用
2009/04/13 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
如何通过50行Python代码获取公众号全部文章
2019/07/12 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
Python self用法详解
2020/11/28 Python
用python制作个音乐下载器
2021/01/30 Python
高中自我鉴定范文
2013/11/03 职场文书
环境卫生标语
2014/06/09 职场文书
机关领导查摆四风思想汇报
2014/09/13 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书