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 相关文章推荐
JS 实现Table相同行的单元格自动合并示例代码
Aug 27 Javascript
js去除空格的12种实用方法
Nov 08 Javascript
JavaScript SetInterval与setTimeout使用方法详解
Nov 15 Javascript
js控制表单不能输入空格的小例子
Nov 20 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
Apr 02 Javascript
checkbox选中与未选中判断示例
Aug 04 Javascript
JS上传图片前实现图片预览效果的方法
Mar 02 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
Mar 16 Javascript
AngularJS中的缓存使用
Jan 11 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
Jun 12 Javascript
JavaScript enum枚举类型定义及使用方法
May 15 Javascript
vue实现无缝轮播效果(跑马灯)
May 14 Vue.js
跟我学习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
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
PHP new static 和 new self详解
2017/02/19 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
javascript div 弹出可拖动窗口
2009/02/26 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
详解js的事件处理函数和动态创建html标记方法
2016/12/16 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
详解Python的Django框架中的Cookie相关处理
2015/07/22 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
美国旅游网站:Tours4Fun
2017/02/17 全球购物
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
业务员岗位职责范本
2013/12/15 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
车间质检员岗位职责
2015/04/08 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
大学运动会加油稿
2015/07/22 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android