分清脚本——网页中的服务器端和客户端脚本

一般介绍动态网页开发的资料都会机械式地先讲HTML,再则有空讲讲JS,然后切入正题讲动态网页部分,最后给出一些实例,比如留言板、论坛,甚至小型电子商务网站等等。而更新的ASP.Net甚至可能只从WinForm讲起,然后就讲WebForm了……这样更加使程序员无法接触底层的代码,无法理解整体架构和工作流程。我认为ASP.Net的出现有点像高级语言的诞生,高级语言的编译器实现了自动编译链接高级语言代码到汇编代码的过程,虽然最终的代码未必那么简洁,但毕竟经多重优化也在可接受范围内。而如今的ASP.Net原意想封装所有的客户端代码,实现从WebUI+CodeBehide到HTML的自动生成过程,但由于种种原因现在还做不到完全满足开发者需要(可以这么说,它产生的“汇编代码”不尽如人意),很多基本功能需要了解客户端脚本,进行手工修改才能实现。
  正是ASP.Net现在所处的这种矛盾阶段,我们更有理由要掌握更多的知识,从HTML、CSS到JScript、behavior、XML。言归正传,本文将直接把服务器端脚本和客户端脚本放在一块讲述比较,这是极少有人做过的,也可以解开一些入门者的困惑,比如为什么服务器端脚本就是不能弹出一个对话框、弹出确定框、打开新窗口等等问题。再看看这二者到底管辖和作用了怎样的范围,然后再举例来认识一下如何使这两个脚本间可以交互,以实现更强的功能。

图为早期PHP4的分层示意,虽然从现在的n层架构来看画得不甚清楚,但还是能看懂的。两个脚本很简单:顾名思义,一个运行在服务器端,一个运行在客户端。而它们的任务也很明确:服务器端脚本只用于生成网页代码(可以包括HTML、CSS、JS等等),它正是平常所说的ASP/ASP.Net、PHP、JSP等等,在动态网页中一般用“<%%>”、“<??>”等符号包围,在多层构架中也可以把Beans,CodeBehide等等算进去吧。客户端脚本就完全是在客户浏览器里解释运行的,要么在“<script>”中,要么在一些事件里,要么单独一个文件,总之查看源代码一般都可以看到,对最终浏览用户相对是公开的。它控制着用户与浏览器的交互,如果把浏览器看成应用程序,它的所有动作都是客户端脚本完成的,这就解释了为什么总是没有弹出对话框的服务器端函数。
  因为ASP本身用的脚本与客户端脚本完全一样,都是JScript(或JavaScript)和VBScript,所以经常让初学者感到摸不着头脑,还有很容易使人混淆的<script runat="Server">这个标志。其实还是上面说的原则,用“<%%>”包围起来的代码肯定是服务器端脚本,当然还有<script runat="Server">里的(这不都标明了是运行在服务器端的嘛),这些代码经过Web服务器解释运行后在最后的HTML代码中肯定是找不到的。还有一点要明白的是,无论是JS还是VBS都可以用来写任何一端的脚本,只是一般比较习惯用JS来写客户端脚本罢了。至于一般用VBS来写服务器端脚本可能一个是习惯,一个是以示区别。

时间: 2024-09-30 21:20:29

分清脚本——网页中的服务器端和客户端脚本的相关文章

在Visual InterDev中对服务器端及客户端除错

interdev|visual|服务器|客户端|interdev|visual|服务器|客户端 为了对脚本除错,可以使用安装在Web服务器上的Visual InterDev或者使用独立机器上的Visual InterDev来进行远距离脚本除错.Visual InterDev支持完全的用户端及服务器端脚本除错. 注意:在该版本中,远距离除错仅在微软Windows NT系统中支持,尚不支持微软的Windows95客户端的使用. 开始除错时需要先设置一个起始页面,你可以用鼠标右键在Project Ex

vbscript与javascript如何传递变量(包括服务器端与客户端)

javascript|vbscript|变量|服务器|客户端 一:最近,经常碰到有网友问,如何使vbscript和javascipt传递变量.不知道为什么要这么做.因为每一种脚本语言几乎都可以完成所需要的 功能.为什么要两个一起用呢?不过,可以告诉大家.完全可以.下面,关于为什么可以的概念,昨天我讲了半天,还是有网友不明白.最后 把我都快搞糊涂了.所以,我们还是结合例子来说吧. 1:vbscript与javascipt传变量(客户端)<HTML><HEAD><META nam

china&amp;amp;boy 关于vbscript 与 &amp;#106avascript如何传递变量的详细研究!(包括服务器端与客户端)

vbscript|变量|服务器|客户端 关于vbscript 与 javascript如何传递变量(包括服务器端与客户端) 一:最近,经常碰到有网友问,如何使vbscript和javascipt传递变量.不知道为什么要这么做.因为每一种脚本语言几乎都可以完成所需要的 功能.为什么要两个一起用呢?不过,可以告诉大家.完全可以.下面,关于为什么可以的概念,昨天我讲了半天,还是有网友不明白.最后 把我都快搞糊涂了.所以,我们还是结合例子来说吧.1:vbscript与javascipt传变量(客户端)<

关于服务器端和客户端

问题描述 ASp.NET中的服务器端和客户端具体指的是什么东西?是不是aspx页面就是客户端,然后cs代码就是服务器端,每一次请求都是把请求数据传到服务器就是传到.cs页面上进行处理,服务器端返回客户端接受,就是cs页面中的处理数据返回到aspx页面. 解决方案 解决方案二:客户端先向服务器发送请求,服务端收到请求后相应.我们看到的页面是服务器返回的,经过后台cs程序处理过形成的,动态生成的页面.解决方案三:aspx页面跟测试时一样,都是在web服务器上执行的.Aspx页面被asp.net编译器

ASP.NET 2.0 中的客户端脚本

asp.net|脚本|客户端 在使用 ASP.NET 的时候,我们仍然在许多情况下需要使用客户端脚本.以下是笔者根据自己的经验和一些粗浅的研究,对此作一个简要的总结. 一.在 HTML 里直接写脚本 这个方法是最简单的,直到如今我写网页的时候也几乎还是使用最多的一种方式.也许一些经常使用 RegisterClientScriptBlock 的人会觉得这种方法老土,不过在我看来,它除了可以减少编译时间以外,更主要的是可以减少代码量,可读性也要好一些,更或许还可以避免一些潜在的错误. 但是有些情况下

在客户端脚本中为UpdateProgress控件编程

在本教程中,将通过编写 ECMAScript (JavaScript) 代码来扩展具有客户端行为的 UpdateProgress 控件. 您的代码将使用属于 Microsoft AJAX Library 的一部分的 PageRequestManager 类. 在 UpdateProgress 控件中,您将添加一个使用户能够取消异步回发的按钮. 作为此任务的一部分,您将使用客户端脚本来显示或隐藏进度消息. 本主题假定您了解 UpdateProgress 控件.如果不了解,请查看主题UpdatePr

如何在UpdatePanel中调用JS客户端脚本_C#教程

页面中加入了UpdatePanel后,Response.Write("<script>function dis (){alert('这是调用写在server的JS');}</script>")来调用客户端脚本,无任何提示的无反应.如何在UpdatePanel中调用JS客户端脚本呢? 方法:采用 ScriptManager.RegisterStartupScript(Control controlId,Type this.GetType(),String key,

如何在网页中加入运行脚本代码的功能

如何在网页中加入运行脚本代码的功能  以下是HTML网页特效代码,点击运行按钮可查看效果: [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

绝对酷,如何解决asp.net中javascript脚本的问题(使用服务器控件执行客户端脚本)

论坛中很多人问如何在asp.net中新开一个没有工具栏等等的窗口,大家都说用javascript解决,不错这件事实可以解决了,但是使用通用html control但是就不能用asp.net代码操作他了现在我就为大家解决这个难题. 创建一个窗口新开一个窗口的程序我向大家一定非常熟悉了,简单说一下window.open(url, [name], [features])url是要打开窗口的地址name是新开窗口的名称features是新开窗口的一些属性,例如尺寸等 打开窗口利用服务器属性最简单的把客户