一、什么是客户端脚本与服务器端脚本
最早实现动态网页的技术是 CGI(Common Gateway Interface,通用网关接口)技术,它可根据用户的HTTP 请求数据动态从Web 服务器返回请求的页面。客户与服务器端的一次握手过程如图1.11 所示。

图1.11 CGI 动态网页技术中的页面请求处理过程
当用户从 Web 页面提交HTML 请求数据后,Web 浏览器发送用户的请求到Web 服务器上,服务器运行CGI 程序,后者提取HTTP 请求数据中的内容初始化设置,同时交互服务器端的数据库,然后将运行结果返回Web 服务器,Web 服务器根据用户请求的地址将结果返回该地址的浏览器。从整个过程来讲,CGI 程序运行在服务器端,同时需要与数据库交换数据,这需要开发者拥有相当的技巧,同时拥有服务器端网站开发工具,程序的编写、调试和维护过程十分复杂。
同时,由于整个处理过程全部在服务器端处理,无疑是服务器处理能力的一大硬伤,而且客户端页面的反应速度不容乐观。基于此,客户端脚本语言应运而生,它可直接嵌入到HTML 页面中,及时响应用户的事件,大大提高页面反应速度。
脚本分为客户端脚本和服务器端脚本,其主要区别如表 1.3 所示:

表 1.3 客户端脚本与服务器端脚本的区别
客户端脚本与服务器端脚本各有其优缺点,在不同需求层次上得到了广泛的应用。JavaScript 作为一种客户端脚本,在页面反应速度、减轻服务器负荷等方面效果非常明显,但由于浏览器对其支持的程度不同导致的页面差异性问题也不容小觑。
下面几节来阐明几个容易混淆的概念,如 JavaScript 与JScript、VBScript 背景的区别、JavaScript 与Java、Java applet 概念的不同等。
二、服务器端脚本和客户端脚本的区别
对于一个
ASP
网站设计人员,不会脚本,无异于木工没有斧子。脚本分为服务器端脚本和客户端脚本,在
ASP
中用的服务器端脚本和客户端脚本完全相同,都是
JScript
(或
JavaScript
)和
VBScript
(本文例子都是用
JavaScript
写的)
,这经常让初学者感到摸不着头脑,本文根据我自己的学习过程,将服务器端脚本和客户端脚本进行一些比较,也许对解开一些入门者的困惑有点帮助。
要了解一样东西,就必须先把它找出来。因此我们先要分清页面中那些是服务器端脚本,那些是客户端脚本,这是第一步。一般说来,凡是包含在
<%%>
内的都是服务器端,其中
<%@
代码
%>
是表示引用的,一般只有在页面的开头我们才会用到它,比如
<%@LANGUAGE=”JAVASCRIPT”%>
,
它用来说明我们的服务器端脚本是用
JavaScript
写的。我们常用的服务器端脚本是另外两种,一是
<%
代码
%>
,中间是一段代码,可以是任何形式,一个过程、一个函数、甚至是放在一起的一些不相关的代码,只要是符合所用脚本语言语法结构的,都可以。另一个是
<%=
代码
%>
,代码部分是一个变量或一个有返回值的函数,它的作用就是把变量的值或函数的返回值放在它所在的位置。比如,
<%var strURL=”http://www.***.com”%>
<a href=”<%= strURL %>”></a>
,
它和
<a href=” http:// www.***.com”></a>
的效果是一样的。以上是服务器端脚本,客户端脚本则是定义在
“
<SCRIPT type=text/javascript>
</SCRIPT>
”
中的代码,还有一种是,定义在外部文件中,然后用表达式
<script type=”text/javascript” src=”***.js”></script>
引用,调用则一般通过事件来完成;
分清了服务器脚端本和客户端脚本,下面我们来看看它们的执行位置和任务。执行位置很简单
:顾名思义,一个运行在服务器端,一个运行在客户端。
而他们的任务也非常明确:服务器端脚本只用于生成网页代码(能包括
HTML
、
CSS
、
JS
等等)
。它只是执行的结果生成页面,发送到客户端的页面中不包含这些代码本身。将页面发送出去后,它就可以暂时休息了,客户端的任何操作,在再次发送请求到服务器之前,与它无关!客户端脚本是完全在客户浏览器里解释运行的,浏览器需要知道这些代码,因此在查看原始码时一般都能找到它,也就是说客户端脚本对最终浏览用户是公开的。客户端脚本控制着用户和浏览器的交互,如果把浏览器看成应用程序,它的所有动作都是客户端脚本完成的。在客户端脚本执行的过程中,页面不会与服务器作任何交互,因此客户端脚本不能连接数据库进行数据更新。
有一点要说的是,无论是
JS
还是
VBS
都能用来写所有一端的脚本,只是一般比较习惯用
JS
来写客户端脚本罢了。至于一般用
VBS
来写服务器端脚本可能一是习惯,二是以示差别。
下面解释一下R
esponse.write
和
document.write
区别,算是
服务器端脚本和客户端脚本区别的一个例子。
Response
是
ASP
的一种对象,用来访问服务器端所创建的并发回到客户端的响应信息。而
write
是
response
的一种方法,功能是在当前的
HTTP
响应信息流和
IIS
缓冲区写入指定的字符,使之成为返回页面的一部分。说的通俗点,就是从服务器端向客户端浏览器
(IE)
发送指定的字符。而
document
是
javascript
的对象,
write
是他的一种方法,功能也是向浏览器输出文本。
所以说两者作用相似,但是完全不同,一般R
esponse.write
在服务器端执行,然后向客户端浏览器发送,而
document.write
在客户端执行,然后向浏览器发送。在服务器端脚本里写
document.write
和在客户端脚本里写R
esponse.write
同样是非法的。但你可以写成
<%Response.write (“<script type=’text/javascript’>document.write(‘Hello World!’);</script>”)%>
的形式,意思是服务器通过
esponse.write
向页面输出一段客户端脚本
document.write(‘Hello World!’);
这段脚本在客户端执行,执行结果就是向用户显示
“Hello World!”
这行字。其效果和
<%Response.write (“Hello World!”)%>
是一样的。
文章来源:http://xuao.blog.163.com/blog/static/186474155201141422223768/
http://xuao.blog.163.com/blog/static/1864741552011414228739/