JavaScript的世界从来没有像现在这样精彩
JavaScript其实出来好多年了,这大家都清楚,但是近几年新出现的一些JavaScript框架的确给JavaScript带来了新的活力。随着基于JavaScript的RIA开发越来越频繁、热门,越来越多的程序员开始为如何编写这些繁多而散乱的JavaScript代码而抓狂,代码越来越多、越来越复杂,一些调试工作似乎已经成为标准的体力活,也正是因为如此才有了我接下来要说到的几款JavaScript开发框架。
最早也是最出名的要数prototype了,这款鼻祖级的JavaScript库,如今已经配了新的搭档,那就是Script.aculo.us,这是一款完全基于prototype的开发框架,提供了相当数量的上层应用组件和函数,你可以这么理解,假如把prototype比作MSIL,那么Script.aculo.us就是.NET语言。目前prototype的最新版本是1.6,Script.aculo.us的最新版本是1.8,详细信息请见:http://script.aculo.us/
接下来介绍的是JQuery,这个也算是JavaScript开发框架的新星了,虽然出来也有些时日了。JQuery与prototype比起来要更成熟一些,并且支持更好地扩展性,目前有相当多的JavaScript开源控件都是基于JQuery的,其强大的selector的功能堪称一绝,对于html的元素选择就像css selector一样。详细信息请见:http://jquery.com。另外jquery还把一些UI控件集成为一套库,叫做ui.jquery,大家可以去http://ui.jquery.com 看看demo(建议看的时候不要喝水、吃东西,会喷出来的)。
接下来要介绍dojo,这也是一套类似于prototype的库,不过我没有怎么用过,功能方面似乎与prototype基本类同,还是属于比较底层的库。目前也有一些基于dojo的控件和应用。想了解dojo的信息,请看http://dojotoolkit.org/
另外的两个比较有名的框架就是Yahoo UI和Google Web Toolkit了,这两个相信大家都比较熟悉,特别是Google Web Toolkit更是解决了如何用java代码来写javascript的问题,即通过编译器和解析程序生成javascript,这是一个很不错的功能。这一点,.NET仍然做的不足,我们仍然要通过大量的RegisterScriptBlock来解决问题动态javascript生成问题,从开发体验的角度讲,这样容易分散程序员的经历,因为程序员不得不平凡地切换思考模式,一会儿是写.NET代码,一会儿是写Javascript代码。不过呢,有人已经注意到了这个问题,并且开发了Script#,就是专门用来解决.NET下的JavaScript开发体验问题,个人用下来还是不错的,大家可以去http://projects.nikhilk.net/Projects/ScriptSharp.aspx 了解Script#。
还有一款不得不介绍的JavaScript开发框架就是extjs,这两天已经看到cnblogs上有人在介绍这个库的一些开发心得了。这款开发框架并不像jquery和prototype那样,严格意义上讲jquery和prototype只能算开发库,而extjs则是真正的开发框架,它不仅仅解决了底层的浏览器兼容问题、通用的一些开发功能,也为开发者提供了大量的内建控件库,例如,用于布局的BorderLayout、Viewport,用于生成表单的FormPanel等等,请注意,这些控件都是内建的,而非基于extjs开发,这个差别直接导致了整个开发框架的完整性有很大程度的提高,对于开发人员来说,与其把很多来自第三方基于一套库开发的控件放到一个项目中来,倒不如直接用内建的控件来得方便,而且整合度更高,代码可靠性也高。extjs还有一点值得称道,那就是它为其他javascript开发库提供了兼容适配器,主要为jquery,prototype+Script.aculo.us和Yahoo UI提供了适配器,这是其他开发库所没有涉及的,这直接说明extjs的开发者们很有远见,融百家之众长,把其他库好的地方直接引入为我所用。有关extjs的详细信息你可以访问http://extjs.com。
另外,微软的ASP.NET AJAX以及Silverlight中也引入了相应的JavaScript库,虽然以我个人的角度看,这些库还无法与第三方开源库相抗衡,但对于微软自己的产品来说是足够了,当然这是一个信号,预示着在微软未来的开发库中,JavaScript将占据相当比重,特别是当Silverlight后续版本发布的时候。这里要澄清一点,在过去几个月中,曾经看到过一些文章中说微软的Silverlight与ASP.NET AJAX的定位有重合,所以有人认为ASP.NET AJAX是没有意义的,是微软的决策失误,但从我个人的角度看,就目前的Silverlight 1.0(1.1目前没有release,不纳入讨论范畴)而言,它与ASP.NET AJAX并不冲突,Silverlight是针对高端RIA应用的,而ASP.NET AJAX则更多地瞄准低端RIA,至于最后会不会把这两个产品整合,我目前不敢断言,但从技术发展的趋势看,微软在未来2-3年内很有可能会推出RIA Foundation(个人猜测,不代表微软官方观点)。从技术角度看,Silverlight选择JavaScript作为脚本引擎自然有它的道理,一方面是因为减少重复开发,没有必要像Adobe的Flash那样再做一个ActionScript,劳命伤财~~另一方面是因为它能很好地与现有的AJAX及低端JavaScript应用整合,这是一个很明智的选择,如果你要把应用程序移植到Flash上,还是有相当的ActionScript要重写(虽然Flash也支持JavaScript交互),但是如果移植到Silverlight上完全不需要这么麻烦,Silverlight能与以前的程序形成互补,这就是差别。
大家如果觉得还有其他比较好的开发库,请留言,我会更新这篇文章。如果你觉得这篇文章的观点有问题,欢迎拍砖(买砖头的费用自理)。
版权声明:本文由作者Tony Qu原创, 未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。