怎么选择Javascript框架(Javascript Framework)


Posted in Javascript onNovember 22, 2013

Ajax的兴起,给 Javascript带来了新的生机,大量的javascript框架(Javascript Framework)层出不穷,一些框架来至于开发人员项目经验的总结和提炼,也有一些框架来至于商业公司,同时以开源和商业两种方式发布。借助这些框 架,可以大大加速Ajax项目的开发速度,但同时也面临不同的学习曲线,以及架构扩展性等等问题。如何选择Javascript框架,成为开发人员和架构 师头痛的一个问题。如果你正面临这样的问题,希望下面的几个建议对你在选择javascript框架上会有所帮助。

你的项目需求是什么
首先要问自己这是一个什么项目,具体的需求是什么,是一个普通类型的网站还是一个在线的web应用程序,是否需要处理大量的键盘和鼠标事件,是否需要给用户 各类高级的ajax特性,还是说只要实现一个简单的异步页面刷新和一些简单dom操作,如果是后者,则可以选择一个相对简单的javascript框架, 封装基本的xmlhttprequest操作和dom操作就足够了。

浏览器的支持情况
不同的框架兼容的浏览器会有所不同,尤其是一些高级的javascript框架,对低版本的浏览器都不支持,还有一些框架只支持ie和firefox,对其 他浏览器如opera、safari不支持。所以在框架的选择上还要考虑到系统的目标用户,如果目标用户都只使用ie6.0以上浏览器,那么在框架的选择 上余地就更大了。

框架后面是否有一个核心的开发团队
很多框架往往都是个人在业务时间开发的,随时可能停止更新,而如果后面有一个团队,则可以在一定程度上保准代码的更新,对bug和一些问题的及时响应,同时在代码质量上也相对有保准。

框架的成熟度
如果一个新的框架刚刚发布,使用的人往往不多,如果你贸然采用,在使用过程中遇到问题,可能要找个能帮你解决问题的人或者在网上找资料都显的很难。所以在这方面也要有所考虑。

框架的发布更新频率
一个框架有很高的发布更新频率说明新的功能在不断加入或者bug被fix的速度很快,反之一个框架半年都不出一个版本,基本可以说明这个框架已经不被开发者重视,很难得到新的发展。

文档的友好性
一个框架尤其是相对比较复杂的框架,如果没有充分和友好的文档,学习曲线会比较高,使用者在使用过程中往往需要通过阅读代码和其他外部的文章来学习怎么使用和解决一些问题。所以文档也是很重要的一个因素。

是否有个活跃的社区
一些成功的开源框架背后往往有一个社区在支撑,大家在里面交流使用经验,互相帮助解决使用过程中遇到的问题。任何问题,只要在这类社区中寻求帮助,往往很快就可以得到他人的帮助。这样的框架,即使一开始不是很成熟,也会很快发展起来。

框架的扩展性
在 实际的项目过程中,往往一个特定的框架是很难直接满足你的所有需求的,这就要求你需要去做一些定制和扩展的工作,如果一个框架没有很好的扩展性,则你可能 在项目后期为了实现某个特定的需求,不得不采用另一个新的框架,大大加大了项目的成本。所以选择一个有很好扩展性,如支持plugin等机制的框架,对你 今后系统的扩展会有很大的帮助。

性能和网络环境
不同的系统在性能和功能的侧重上 会有所不同,比如一个基于互联网的项目,可能考虑更多的是要求在保准性能的前提下,再来讲功能,很多高级的javascript框架往往在性能上不能让人 满意,一部分原因是封装了太多功能,导致js文件会非常大,在互联网环境下,下载这个js文件就会耗去不少时间,还有就是为了保准如框架的扩展性,往往做 了多层封装和抽象,在某种程度上其实是以牺牲部分性能为代价的。所以这样的框架可能更适合一些intranet内部的项目,而不是基于互联网的项目。

Javascript 相关文章推荐
javascript 正则替换 replace(regExp, function)用法
May 22 Javascript
BOM与DOM的区别分析
Oct 26 Javascript
jqeury eval将字符串转换json的方法
Jan 20 Javascript
javascript四舍五入函数代码分享(保留后几位)
Dec 10 Javascript
javascript定时器完整实例
Feb 10 Javascript
jquery实现的Accordion折叠面板效果代码
Sep 02 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
Sep 14 Javascript
jQuery validate插件功能与用法详解
Dec 15 Javascript
js+canvas实现动态吃豆人效果
Mar 22 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
Mar 30 Javascript
JavaScript Window窗口对象属性和使用方法
Jan 19 Javascript
微信小程序实现天气预报功能(附源码)
Dec 10 Javascript
jquery根据name属性查找的小例子
Nov 21 #Javascript
js 走马灯简单实例
Nov 21 #Javascript
js获取客户端外网ip的简单实例
Nov 21 #Javascript
jquery实现简单易懂的图片展示小例子
Nov 21 #Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
Nov 21 #Javascript
利用jq让你的div居中的好方法分享
Nov 21 #Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
Nov 21 #Javascript
You might like
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
javascript globalStorage类代码
2009/06/04 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
vue2.0 elementUI制作面包屑导航栏
2018/02/22 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
python中from module import * 的一个坑
2014/07/20 Python
Python迭代器和生成器介绍
2015/03/06 Python
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
python 美化输出信息的实例
2018/10/15 Python
Python将8位的图片转为24位的图片实现方法
2018/10/24 Python
WxPython建立批量录入框窗口
2019/02/27 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
tornado+celery的简单使用详解
2019/12/21 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
公司总经理助理岗位职责
2014/07/09 职场文书
毕业证代领委托书
2014/09/26 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
军训结束新闻稿
2015/07/17 职场文书