专家焦点之Javascript 精谈

来源:互联网 发布:短信轰炸机原理python 编辑:程序博客网 时间:2024/04/29 03:40

面这篇文是java高手总结的经典言论,读了下,的确精彩,与大家共同分享下:

在上世纪90年代中期,Internet热潮开
始兴起,其中的明星公司非netscape莫属。Netscape公司1994年成立,公司CTO Marc Anderson是Urbana-Champaign 的伊利诺斯大学研究生,在校期间,是NCSA Mosaic小组开发成员。现在当你在IE菜单的“帮助”下面的“关于Internet Explorer",仍然可以看到对此的介绍。

Anderson被硅谷的风险投资家Jim Clark看中,合作成立了Netscape公司,Netscape公司开发出来了Web Server - Netscape Enterprise Server 和 Web browser - Netscape Navigator。其中Netscape Enterprise Server后来有Sun公司参与了合作开发,在Netscape公司合并到AOL之后,卖给了Sun公司,是Sun公司 iPlanet Server的前身。后来iPlanet改名为Sun ONE Server,现在又改名为Sun Java Application System8,已经可以免费下载了。

在当时,Netscape Enterprise Server是企业级市场卖得最好,性能最强劲,服务器端功能开发最好的Application Server,Netscape公司的主要收入也来自于此,只可惜了Sun公司把这么好的一个东西给毁掉了。如果有人用过早期的Netscape Navigator3的话,应该可以记得,当时的Navigator对部分用户是可以免费下载的。

Netscape公司自然也知道静态的HTML表现能力不够,因此他们给Server和Browser两端都增加了脚本支持,叫做Livescript,就是后来的Javascript。在服务器端Livescript使用SSI的方式提供动态处理能力,在Browser端,Livescript增强了Browser的表现能力。当然即使是引入了Livescript,也不足以表达丰富的交互能力,所以Sun的Java Applet也被引入,Livescript也干脆被改成了Javascript。

在与Sun公司合作之后,Netscape Enterprise Server逐渐抛弃了Livescript,改成了了一个Servlet/JSP支持的服务器。因此现在已经不为人们所知了。

客户端的Javascript在MS加入浏览器大战之后,也曾经一度岌岌可危。因为MS推荐的是IE支持的VBScript,而不是Javascript,以对抗Netscape公司。在当时,VBScript的功能要比Javascript强,并且VBScript的编程更加简单,例如在Javascript中,你希望一个按钮点击以后触发一个动作,那么你除了要写动作处理代码,还需要给按钮增加一个 onclick的触发机制,而VBScript则完全不需要给按钮增加这样的东西。但是后来,MS似乎自己慢慢的放弃了VBScript了,这也是我一个不太理解的地方,也许是因为Netscape已死,MS已经没有必要再用VBScript来打击Javascript了罢,再考虑到Javascript支持更加广泛,所以就放弃了VBScript。

MS之后在Javascript上面做了非常多的功能扩充,包括扩充Javascipt功能,搞一个Jscript出来,给HTML元素增加丰富的事件相应机制,扩展DHTML的能力等等。在MS自己的webforms出来之前,MS在DHTML/Javascript方面一向是做的很好的。

但是也许是因为Javascript本身功能比较弱,调试困难,开发困难,并且在单纯的HTML上面做扩展限制很大的缘故,从dotnet时代开始,MS又把重心转向了服务器端状态控制。

展望未来的表现层技术avalon,是XAML描述页面布局,C#编写事件响应代码,与现在的webforms的HTML描述页面布局,asp.net编写事件响应代码,两种方式都是非常相似的。要注意的是,在这种技术趋势中,我们没有看到Javascript的影子。
HTML在被创造出来的时候,只是用来描述文本信息,以及文本之间的关系的,Tim Benas Lee也不会预料到Internet时代的热潮。不论人们后来在Browser上面附加了多少功能,Javascript也好,Applet也罢,ActiveX(Flash),都没有从根本上面改变HTML交互能力弱的问题。其实大部分人都意识到了,不彻底改变当前的HTML,就没有办法改变Browser的弱点。

然而彻底改变HTML的方式的前提就是Broswser功能的扩充,考虑到Windows操作系统和IE浏览器占据了绝大部分市场份额,这个功能最有希望完成的也只有MS公司了。

在MS下一代表示层技术Avalon中,XAML将取代HTML,Browser的功能被扩充,页面不再是扁平的,而是立体俄,事件处理代码不再是Javascript,而是C#。然而考虑到Longhorn在2006年上市,到普及推广,我觉得可能要到2010年前后,XAML才有可能全面取代HTML。那么在此之前,仍然会是HTML/Javascript的方式。

在过去,Browser端的主流是HTML/Javascript,在将来,Browser端的主流是XAML/C#,那么当前一些富Javascript技术的Browser方案是否会成为过渡时期的主流呢?我的看法是没有成熟的开源框架的情况下,是不会的。

我们过去也曾经比较多运用DHTML实现一些方便的页面操作,例如在一个页面里面隐藏很多层,当点击某个信息,察看明细记录的时候,层显示出来,层里面的内容也俨然像一个窗口一样,并且模仿Windows的桌面窗口,有关闭按钮,有标题栏什么的,还可以像Windows桌面窗口那样拖来拖去,把很多客户都骗了。并且可以在一个页面里面做很多的工作。

但是Javascript/DHTML是有很多缺陷的:

1、复杂的Javascript事件处理相当的消耗CPU资源,有时候甚至很惊人
2、Javascript本身语法简单,很难做到类似面向对象语言的扩充性,复用性,因此无法大面积复用
3、Javascript的触发严重依赖页面元素对象,因此很难抽象出来高度复用的代码,很难降低Javascipt和DHTML元素的耦合性
4、Javascipt的可视化效果是最差的,如果过多运用Javascript来控制页面显示的话,美工根本对页面无从下手,甚至程序员在没有把页面运行起来之前,也无法判断页面显示出来的样子。
5、Javascipt/DHTML在不同的浏览器,在浏览器不同版本之间的表现差异很大
6、一个富Javascipt/DHTML的页面开发效率是很低的,我的经验是,如果可以使用服务器端状态控制完成的需求,我用好几个页面,加上少量的服务器端代码可以在半天时间完成的工作,那么我如果单纯用Javascript来完成,可能一天都搞不定这个页面的控制(也许Javascript高手例外)
7、大面积运用Javascript,页面很难维护,甚至无法维护

因此,我个人是不赞成使用富Javascript的浏览器端技术的。我的主张是贫Javascript的浏览器端技术做为这几年的过渡。Javascript可以有限的运用在数据输入校验,页面跳转,数据选取,Area编辑,日历控件,动态菜单,树状显示等等方面,而不宜以Javascript为核心构建浏览器端解决方案。

HTML这种方式的本身就和传统的Desktop操作流程有所不同,非要勉强的通过富Javascript技术的方式来实现一些传统的Desktop的操作流程,我认为是代价比较大的。既然你运用了HTML,就应该接受多写一些页面,多一些流程跳转的这种Browser操作方式,而不是类似Bindows那样企图把所有状态控制都在一个页面搞定。

回想过去我们用Delphi/VB/PB写Desktop程序的方式,拖拉出来控件,然后给控件的事件编写响应代码。MS webforms在这方面迈进了一步,然而仍未摆脱HTML的桎梏,于是搞出来一个XAML,扩充操作系统和浏览器,摆脱HTML的限制,真正实现Desktop那样方便的事件响应式编程,同时又保留了Browser方式用简单的标记来描述窗口元素布局的优点。

这样看起来HTML/Javascript方式将来总归会被淘汰(至少在2010年以后吧),其实不是Javascript有什么错,而是HTML太弱了,如果HTML被淘汰,Javascript也只好被淘汰了,这就是我对Javascript未来发展的一个预测。所以我自己不想在Javascript方面投入更多的学习成本,我原来搞Javascript的底子还在,我更愿意多关注一下XAML。

最后我要声明的是,我不是一个Javascript反对者,我在2000到2001年也下狠功夫钻研Javascript过,我也认为当前的Web开发人员必须掌握足够的Javascript编程知识,不能忽视Javascript的作用,我只是不赞同把Javascript/DHTML抬高到浏览器端解决方案核心地位的观点而已。

个人认为javascript还是有可能被作为浏览器端解决方案核心地位的

无论服务器硬件性能再好,也经不起全球人的同时操作数据库————这是最重要的一点

google开发的gwt或许能从一个侧面反映这个问题
它将服务器上代码都转化为html和javascript,用ajax与服务器进行交互
但是做出来的作品虽然简单,但是却也简单地不让人感到乏味
google的很多服务,应该都是用类似gwt这种工具开发的,但是大家又觉得那些服务差吗?

web我想更重要的速度快与功能的强大才能实现理想状态(个人电脑没有硬盘,整个系统就只是一个brower),而非更强的表现力

个人遇见 ~~莫见怪~~
 

原创粉丝点击