`
happmaoo
  • 浏览: 4473692 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

我与Javascript 随笔(二)

阅读更多

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

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

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

我不想讨论怎样采用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

分享到:
评论

相关推荐

    基于Java与跨平台技术的crostitch涂鸦随笔设计与实现源码

    本项目是一款基于Java和跨平台技术的crostitch涂鸦随笔设计与实现源码,包含65个文件,其中包括30个Java源文件、16个PNG图片文件、7个JavaScript文件、2个XML文件、1个Git忽略文件、1个Markdown文件、1个Maven项目...

    javascript开发随笔二 动态加载js和文件

    根据浏览器类型(IE与非IE),函数使用不同的事件来判断文件是否加载完成。对于非IE浏览器,使用`onload`事件,而对于IE,则使用`onreadystatechange`,当状态为'complete'或'loaded'时,执行回调。 回调函数在文件...

    js随笔提示

    在描述中提到的“简单的随笔提示”,我们可以理解为一种基于JavaScript实现的交互式功能,可能是用户输入一个字或关键词,程序就能显示出与之相关的内容。这涉及到JavaScript中的事件监听、DOM操作以及可能的数据...

    Javascript 面试题随笔

    在这段文字中,主要介绍了一道JavaScript的面试题目,并且详细解释了这道题的原理和结果。在深入讨论这道题之前,首先需要了解一些基础的JavaScript知识,包括原型链(prototype chain)、函数对象、实例对象的属性...

    javascript学习随笔(编写浏览器脚本 Navigator Scripting )

    javascript学习随笔(编写浏览器脚本 Navigator Scripting ) javascript是一种脚本语言,经常用于浏览器脚本编写,可以嵌入HTML中,以两种方式:作为语句和函数使用时,使用SCRIPT标记;作为事件处理程序使用时,...

    JavaScript中的字符串操作详解

    一、概述 字符串在...在这里,主要是介绍字符串本身的一些操作,正则表达式会在以后的随笔中涉及。 二、字符串的创建 创建一个字符串有几种方法。最简单的是用引号将一组字符包含起来,可以将其赋值给一个字

    javascript学习随笔(使用window和frame)的技巧

    其中,第一个参数是加载的URL,第二个参数是可选的窗口名称,如果省略,浏览器会自动生成。 2. **`close()`方法**:关闭当前窗口或由`window`对象引用的窗口。使用`window.close()`或`self.close()`(在当前窗口中...

    RegExp 随笔 JavaScript RegExp 对象

    exec()方法具有"记忆"功能,即第二次调用时会从上一次匹配结束的位置开始搜索。 RegExp对象的实例属性包括: - global:布尔值,表示是否设置了g标志。 - ignoreCase:布尔值,表示是否设置了i标志。 - multiline:...

    javascript开发随笔一 preventDefault的必要

    `preventDefault()`是`Event`对象的一个方法,当在一个事件处理函数内部调用它时,可以阻止浏览器执行与该事件相关的默认动作。例如,在点击链接时防止页面跳转,或者在表单提交时防止页面刷新或数据提交到服务器。...

    前端进阶 - 随笔.rar

    "前端进阶 - 随笔.rar"这个压缩包文件,显然是一份专为前端开发者准备的高级学习资料,旨在帮助他们提升技能并掌握更多实践技巧。从描述中的"前端日常进阶笔记"我们可以推测,这份资料可能包含了作者在日常工作和...

    dahong:个人技术随笔

    【标题】"dahong:个人技术随笔"是一份技术博主Dahong关于编程技术的个人笔记集合,主要涵盖了2017年至2019年的学习与实践心得。这个压缩包文件“dahong-master”很可能包含了博主在JavaScript、CSS、HTML以及...

    web随笔代码

    【标题】:“Web随笔代码”通常指的是与Web开发相关的代码片段、实验项目或教学示例,这些内容可能涵盖HTML、CSS、JavaScript等基础技术,也可能涉及到更高级的框架如React、Vue或Angular,以及后端开发技术如PHP、...

    TT随笔四 前台的CURD封装

    尽管描述为空,我们可以推测作者可能分享了如何使用JavaScript(可能包括ES6语法)或者特定的前端框架如React、Vue或Angular来封装这些功能。 在源码部分,作者可能展示了如何创建一个通用的CURD服务,这个服务可以...

Global site tag (gtag.js) - Google Analytics