当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 我与Javascript 随笔(二)

Javascript
颜色变换 像字符逐字输入的欢迎词
CSS 伪类实现的鼠标滑动图片链接
百度用到的Js日历 大家可以看看
CSS 渐变背景的6个演示代码
Jquery 弹出层插件实现代码
Javascript 模式实例 观察者模式
[原创]javascript 指定区域内图片等比例缩放实现代码 脚本之家整合版
javascript window对象属性整理
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
用JavaScript实现 铁甲无敌奖门人 “开口中”猜数游戏
理解 JavaScript 预解析
理解JavaScript变量作用域更轻松
JavaScript的变量作用域深入理解
javascript写的一个链表实现代码
Js 打字效果 逐一出现的文字
javascript 走马灯效果的链接提示
CSS 动态链接提示
JavaScript 事件的一些重要说明
JavaScript 三种不同位置代码的写法

我与Javascript 随笔(二)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-10   浏览: 76 ::
收藏到网摘: n/a

[注:为方便起见, Javascript简称为JS

ASP网络应用程序的开发过程中,将我从纯客户端的环境下使用JS的行为摆脱出来,开始以另一种方式使用JS:针对服务端应用的JS脚本。

 

我不想讨论怎样采用ApplicationSessionRequestResponse以及ADOCOM服务对象结合VBScript(或JS)脚本语言进行服务端编程的详细规则,也不想让同为浏览器的脚本语言的VBScriptJS较量一番,只是简单讲一下自已在ASP编程中采用JS作为客户端脚本语言开发的一点体会。

 

为减轻服务端处理数据的压力,对于客户端提交至服务端的大量表单(Form)数据必须先经过处理或有效性的验证,在对这些数据的处理过程中,JS中的StringArray对象是非常好的选择,而 Array对象存储各种类型数据(从基本的数值型到字符串再到对象类型)的能力常让我怀疑是否正在使用MFC中的CArray模板类,记得有一次需要对服务端返回的多个字符串数据进行类似队列的循环处理,然后将处理的数据再返回至服务端,使用Array对象的栈和队列功能,使我很轻松地解决这个问题。解析和验证诸如电子邮件地址、身份证号、电话号码、文本框输入字符等常用的字符串正确表达规则,以前通常的做法是无穷无尽的if...elsewhile判断,现在采用RegExp对象后,验证字符串正确表达规则的代码不仅精炼而且非常有效(当然,RegExp的语法也是最关键的,处理不好也非常容易掉入陷阱)。

有些看似不可接受的语法,居然在JS中使用频率非常之高,举个例子,类似一个字符串”abcde”,要查找”c”是第几个字符,我可以这么写:”abcde”.indexOf(“c”),很独特的写法,还有new String(“abcde”).indexOf(“c”)同样能够实现这个功能。虽然一开始我也不太接受这些语法,但是写客户端的JS脚本越多,我越感到使用这些语法的必要性,它对程序的可读性和维护是非常有好处的。JS的灵魂就在于简炼(请记住,不是简单)。

在面向服务端应用的开发中,使用JS编写DHTML文档是非常有必要的事情,我的一个实际案例:用户需要根据自已的要求生成不确定的、大量重复性的HTML表格,每个表格里又包含许多Form控件。想像一下,这件事如果由ASP服务端脚本来完成,那将会是一种什么情况?首先,用户说我要生成5个表格,服务端收到这个请求后,先定义一个表格模板,然后以循环方式在服务端动态生成5个表格,最后返回用户所需的HTML文档。当随着请求用户的增多和请求的表格数的增加,服务器的负载将不能得到保证。如果由JS采用同样的方法为用户在客户端动态生成这些表格,那将是一件非常美妙的事,具体规则是JS操作 DOM(文档对象模型),生成动态的表格。

 

面向对象的特性使我对JS感到不解,在客户端的DHTML开发中真的需要面向对象吗?JS不是一种纯面向对象的语言,虽然可以实现或伪实现某些诸如继承、多态的面向对象语言的特性,但这些东西经常在DHTML使用吗?正如我曾经看过的一本书《JavaScript完全参考》中所述:大多数JS程序员使用的还是一团浆糊式的编程。我的原则是:尽可能采用过程式的JS编程,也不用面向对象的方法!偏激了点,的确在许多实际应用开发中,牺牲过程式的编程而勉强采用面向对象的方式有时是恰如其反。

 

今天,ASP.NET正在把Web开发中面向客户端处理的细节隐藏起来,但我始终不会忘记一个灵活、高效且非常健壮的客户端如果失去了JS,那么也就失去了Web开发真正的魅力。

 

这篇随笔还没有真正的结束,让它先暂停一下吧,同时期待自已对JS有更多的理解:)       

                                        yjgx 于 2004-2-27 22:00