tonyqus.cn

休养中..
随笔 - 202, 文章 - 1, 评论 - 1209, 引用 - 57
数据加载中……

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能与以前的程序形成互补,这就是差别。

大家如果觉得还有其他比较好的开发库,请留言,我会更新这篇文章。如果你觉得这篇文章的观点有问题,欢迎拍砖(买砖头的费用自理)。

posted on 2007-11-29 10:33 Tony Qu 阅读(4594) 评论(40)  编辑 收藏 所属分类: Java/Javascript

评论

#1楼    回复  引用  查看    

沙发!

确实没有想到,有一天我会去学JavaScript,曾经是那么讨厌它!
2007-11-29 10:40 | Justin      

#2楼    回复  引用  查看    

做web应用JavaScript确实相当的重要
2007-11-29 10:43 | 小寒      

#3楼    回复  引用  查看    

--引用--------------------------------------------------


确实没有想到,有一天我会去学JavaScript,曾经是那么讨厌它!
--------------------------------------------------------
me too
2007-11-29 10:49 | looping      

#4楼    回复  引用    

vvv
2007-11-29 11:02 | I'm fine!!! [未注册用户]

#5楼    回复  引用  查看    

很好的资源
2007-11-29 11:04 | rockshit      

#6楼    回复  引用    

还是喜欢yahoo UI, google的可惜我不会java。
2007-11-29 11:14 | 在线代理 [未注册用户]

#7楼    回复  引用  查看    

我们的前台开发人员推荐mootools,我看了看好像的确不错……
2007-11-29 11:22 | Jeffrey Zhao      

#8楼    回复  引用  查看    

extjs的demo做的是最炫的。
prototype作为RoR缺省的js框架,未来应该比较有前途。
2007-11-29 11:24 | Cure      

#9楼    回复  引用  查看    

现在我在用 jquery 做比较复杂的 js 应用,代码大了之后感觉很难管理和维护;
记得以前看过 script#, 昨天忽然又提起兴趣来了,正在研究之。

用 C# 生成 js 也许是个不错的方向,但要做到比较灵活,个人感觉难度很大。
2007-11-29 11:26 | 木野狐(Neil Chen)      

#10楼 [楼主]   回复  引用  查看    

其实关于.NET下的extjs我留了一手,下篇文章写:p
2007-11-29 11:28 | Tony Qu      

#11楼    回复  引用  查看    

个人认为prototype是所有js底层库中最好的,源码很优雅,而jquery则有点乱,extjs则包含了丰富的UI库,,,
2007-11-29 11:30 | t-mac.NET      

#12楼    回复  引用    

比较喜欢JQuery,第一看到的时候就决定义无反顾的抛弃Prototype,
^_^||,其实Prototype也是不错滴,楼主所列举的全都比较不错的框架,关键是自己的喜好了以及对JS得掌握程度
2007-11-29 11:32 | 笑苍天 [未注册用户]

#13楼    回复  引用    

@t-mac.NET
同感。
个人看法:
1,只是要一个底层库自己扩展,那最好还是用prototype。
2,只是要页面有点炫,用juery是最合适不过了,够快。
3,同时涉及超复杂界面和复杂逻辑,似乎extjs比较好。
4,比较强调复杂逻辑,界面需求一般,prototype+Script.aculo.us。
5,中庸之道用mootools,啥都不上不下,还能按需定制。
6,许多类都需要实现private、static等,能用现成的扩展就尽量不要重复造轮子,否则就自己写一个。
2007-11-29 12:19 | A1 [未注册用户]

#14楼    回复  引用    

一直在用jquery,感觉还不错
看了下extjs,貌似很强大,不过有点不明白的地方就是它的JS文件达到了4M多
太夸张了吧?
不知道是不是使用内建的控件时根据需要加载对应的JS呢?
2007-11-29 12:21 | xiaolei [未注册用户]

#15楼    回复  引用    

@A1
哈哈
跟我想到的一样,JQUERY拿来做前台展示
EXTJS拿来做后台管理界面
2007-11-29 12:23 | xiaolei [未注册用户]

#16楼 [楼主]   回复  引用  查看    

@xiaolei
extjs有压缩版的,没这么大。而且你可以按需定制js包
2007-11-29 12:25 | Tony Qu      

#17楼    回复  引用  查看    

还有mootools啊 那个很好用
2007-11-29 12:53 | 紫色阴影      

#18楼    回复  引用  查看    

--引用--------------------------------------------------
xiaolei: 一直在用jquery,感觉还不错
看了下extjs,貌似很强大,不过有点不明白的地方就是它的JS文件达到了4M多
太夸张了吧?
不知道是不是使用内建的控件时根据需要加载对应的JS呢?
--------------------------------------------------------


4M是所有的源码吧,,,里面注释很全的
2007-11-29 13:05 | t-mac.NET      

#19楼    回复  引用  查看    

--引用--------------------------------------------------
A1: @t-mac.NET
同感。
个人看法:
1,只是要一个底层库自己扩展,那最好还是用prototype。
2,只是要页面有点炫,用juery是最合适不过了,够快。
3,同时涉及超复杂界面和复杂逻辑,似乎extjs比较好。
4,比较强调复杂逻辑,界面需求一般,prototype+Script.aculo.us。
5,中庸之道用mootools,啥都不上不下,还能按需定制。
6,许多类都需要实现private、static等,能用现成的扩展就尽量不要重复造轮子,否则就自己写一个。
--------------------------------------------------------


EXTJS做出来的效果跟winform差不多了
2007-11-29 13:06 | t-mac.NET      

#20楼    回复  引用  查看    

javascript比较专职的用上一年,每个人心里都回有个framework.
2007-11-29 13:12 | birdshome      

#21楼    回复  引用    

Javascript搜索引擎
http://www.google.com/coop/cse?cx=006422944775554126616%3Ay1jszj8-boo
搜索Javascript开发的相关技术支持网络站点,包括在线教程,库函数参考,第三方开发库,代码工具箱,论坛,博客,疑难问题解答等等。

#22楼    回复  引用    

对于我们这些用过了控件的开发者来说。anthem.net是最好的ajax框架。
2007-11-29 13:43 | ssfefef [未注册用户]

#23楼    回复  引用  查看    

Microsoft AJAX Library 也算个OO的封装吧。。。
2007-11-29 13:45 | GoGoSonny      

#24楼    回复  引用  查看    

你们的项目里JS量都有多大?

自己写点多好
2007-11-29 13:50 | 海东青      

#25楼    回复  引用  查看    

现在写js也成了一门艺术,和那些严谨的语言比起来却有不同的风格。
2007-11-29 14:12 | thh      

#26楼    回复  引用  查看    

@thh
恩 灵活。
2007-11-29 14:18 | Enzo      

#27楼 [楼主]   回复  引用  查看    

@楼上
灵活不见得是好事情~~这意味着后期维护成本的提高
2007-11-29 14:53 | Tony Qu      

#28楼    回复  引用    

有谁用ASP.NET AJAX结合其他框架来使用的吗?
2007-11-29 15:04 | rick [未注册用户]

#29楼    回复  引用    

mootools
2007-11-29 15:19 | AsyncLiu [未注册用户]

#30楼    回复  引用  查看    

最近在研究ExtJS,特别是.net+ExtJS的资料太少了,官网上的都是php的,这两天整天泡在外国网站上找资料,我会把我的学习结果放在我的博客上,主要的WCF+ExtJS这一块的。
2007-11-29 17:18 | 小庄      

#31楼    回复  引用  查看    

有必要出个好用的js编辑器
VS2008里面可以用/// <reference path="jQuery.js" />这样的形式把其它js库引用进来,从而可以使用智能提示,但是这个功能好像不行,有人这样用过吗?
2007-11-29 22:44 | RicCC      

#32楼    回复  引用  查看    

一直在用extjs做RIA的应用。如果没用vs2008推荐一个js编辑器spket超好用。智能提示什么一应俱全,而且还超小。
2007-11-29 23:05 | Axel      

#33楼    回复  引用    

曾经想过,JS是耗时的花哨东西,没想到现在……
2007-11-30 00:44 | C+++ [未注册用户]

#34楼    回复  引用  查看    

还是等vs2008来用吧!
2007-11-30 08:23 | web报表      

#35楼    回复  引用  查看    

很想尝试其他的js库 可惜已经上了prototype这条贼船了..
2007-11-30 12:47 | Yoshow      

#36楼    回复  引用  查看    

JS已经这么牛了啊,我刚开始接触JS的时候对它极其反感,认为那根本不是人类能够读懂的东西。现在看来也要扭转了,需要关注js了:)
2007-11-30 18:41 | 合金枪头      

#37楼    回复  引用    

goodle code上有人将script#和extjs结合到一块(http://code.google.com/p/extsharp/),codeplex上有人将c#和extjs结合到一块(http://www.codeplex.com/ExtJsExtenderControl),两者使用起来还算方便不过首次载入太慢做公网应用比较麻烦。感觉extjs的grid在ff下效率太低,web desktop,portal虽然很酷,但是涉及到数据的后台保存,载入时就比较麻烦。另一个方面extjs的资料比较少,看着一大堆的api有时真头晕。而且使用firebug调试时太麻烦,我在slideshare(www.slideshare.net/sdhjl2000/slideshows)上放了一些extjs的资料大家可以看一下。 微软的asp.net ajax脚本库大都是静态方法使用起来较麻烦,不过微软的东西肯定还是要学因为以后silverlight与它是相关的,个人感觉还是jquery在项目中较好用,资料多上手容易也不用老想着OO。
2007-11-30 19:41 | sdhjl2000 [未注册用户]

#38楼    回复  引用    

mootools才是js oo的王道
2008-01-03 16:07 | wfsr [未注册用户]

#39楼    回复  引用    

hao
2008-04-18 16:05 | zhangwenbing [未注册用户]

#40楼    回复  引用    

extjs is good..
2008-06-19 20:13 | javapro [未注册用户]

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: