日期:2012-12-06  浏览次数:20858 次

使用VBScript和JScript编写WEB应用程序

我心飞扬

写这篇文章的动机是看到了大家对VBScript和Javascript的讨论以及另一片类似的文章,觉得有必要将大家的想法加以整理:-),并将我在工作中产生的一些心得拿出来和大家分享,希望对大家有所帮助。当然,水平有限,错误在所难免。


Active Server Pages是Microsoft Windows DNA的重要组成部分,使用ASP我们可以很容易的构造功能强大的基于Web的应用。有很多脚本编写语言可供我们进行ASP创作,如:VBScript、JavaScript、Perl 和Rexx等,你可以从几种脚本编写语言中选择一个。本文中我们讨论微软公司所提供的两种脚本编写语言:
VBScript
JScript

首先,我想讨论的是:

一、什么时候使用VBScript 和JScript,以及两者之间的区别

VBScript 是Visual Basic的子集,全称是Microsoft Visual Basic Scripting Edition。如果你曾经用过Visual Basic或者是Visual Basic for Applications (VBA),你就会觉得非常熟悉。不过它们并不完全一样,因为VBScript是特意为在WEB中进行工作而设计的。

JScript是ECMAScript的Microsoft版本,是一组包括JScript 和JavaScript脚本编写语言的标准定义。JScript从一组编程语言如C, C++, 以及Java等之中脱离出来的。如果你以前曾经用过C或者是Java,那么JScript的结构你会觉得非常熟悉。即便你不知道这些语言也没有关系,JScript的结构一点也不难,它像C和Java一样方便而没有它们那么复杂。

微软公司在Internet Explorer和Internet Information Server (IIS)中为它们提供了ActiveX Scripting Language(ActiveX脚本编辑语言)引擎(比如vbscript.dll、jscript.dll)。

那么,什么时候选择何种语言?
我们知道,进行ASP开发无外乎要编写下列两种脚本之一:

1)服务器脚本:
在ASP页面中为IIS编写服务器脚本,无论使用那种语言都没有问题。并且微软公司的Visual InterDev对它们支持的都很好。

2)客户端脚本:
如果你想在浏览器脚本中使用VBScript,那么浏览器必须是Internet Explorer的某个版本。因为其他浏览器可能不支持VBScript。如果要建立一个公共Web站点,你无法预知用户使用的是什么浏览器,那么VBScript只能用于Internet Explorer这个限制就成问题了。
几乎所有允许编写脚本的浏览器都支持JScript。因此,如果为一个公共Web站点编写应用程序,用JScript来编写客户端脚本是很自然的选择。

影响你做决定的其他主要因素还有:

1、错误控制
在VBScript中有On Error 错误陷阱来对错误情况进行控制,如:On Error Resume Next。如果你编写的是服务器脚本,错误控制非常重要,因为脚本的运行是无人照顾的。Jscript没有这种机制。

2、格式化
VBScript有这样的功能,能够轻易地把数据,数字和货币数据格式化。JScript没有这样的功能。

3、动态执行
JScript一个非常有力的特性是:它允许你在你的脚本内动态地建立和执行脚本(eval()函数、execScript()方法等)。简而言之,在你的脚本中能够编写脚本。当你用DHTML进行工作时,这个特性是非常有用的,因为这样你就能够动态的操作DHTML的文档模型了。VBScript无此功能。例如,在客户端的Javascript里你可以使用类似这样的句法:

execScript("on error resume next:object.execWB 4, 1","VBScript");

4、面向对象
JScript使用的是一种基于原型的对象结构,允许你在脚本中定义对象。你能够往对象的原型中加入方法和属性,扩展内置对象和定制对象。例如:

//自定义对象myObject
function myObject(){
    //自定义属性
    this.properties1=value;  //此时赋值为该属性的默认值
    this.properties2;
    ...
    //自定义方法
    this.myMethod1=Method1;
    this.myMethod2=Method2;
}

function Method1(arg){
    //block;
}

function Method2(arg){
    //block;
}

尤其有用的是该对象可通过SOM传回客户端,使得ASP编程方式更象以往的C/S结构。(我近期内可能会写一篇深入讨论SOM的文章,对该方法作详细讨论)

5、事件控制
用VBScript在Internet Explorer中控制事件很方便,就像在Visual Basic中一样。在VBScript中也能够建立一个隐含的事件处理程序,这只需要用对象事件结构形式来定义一项功能就行了,比如说隐式调用Button1_onclick。不过在Internet Explorer中,JScript没有这项功能(但在其他的JScript主机上支持这项功能)。
在Internet Explorer 中使用JScript控制事件,会要求你链接到一个对象上,而这个对象又是与事件处理程序相连的。通常,只要在鉴别事件并且有处理程序功能的对象的标签栏中指明其属性即可。如下所示:

<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
<!--

function button1_onclick() {
    alert("button1 Clicked")
}

//-->
</SCRIPT>
<INPUT type="button" value="Button" id=button1 name=button1 LANGUAGE=javascript onclick="return button1_onclick()">

或者使用类似下面的语法:
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
<!--
function window_onload() {
    //Block;    
}
//-->
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=window EVENT=onload>
<!--
window_onload()
//-->
</SCRIPT>

值得注意的是,上例中LANGUAGE属性设置为“Javascript”。Internet Explorer对于"JScript" 和"Javascript"这两个名字都认识,但许多其他浏览器却只认识"Javascript",不认识"JScript" 。因此,为了保险起见,如果你不能确定该网页是用Internet Explorer来浏览,就最好用"Javascript"。

(未完待续)
我心飞扬