PHP学习宝典-第二章
伺服端Web的Scripting语言
本章重点
·认识静态的动态Web网页
·用户端与伺服端Scripting语言的对比
·伺服端Scripting语言简介
本章重点在讨论服务器端Scripting语言本身,另外也谈及它与静态HTML和一般用户端技术之间的关系。在本章结束时,读者就能够清楚知道PHP能做什么、不能做什么、还能够对它与用户端原始如何进行交流有大致上的了解。
静态HTML
最基本的Web网页形式是完全以HTML编写纯静态、纯文字的页面。图2-1中的简单HTML页面就是一个例子。
伺服端Web的Scripting语言
本章重点
·认识静态的动态Web网页
·用户端与伺服端Scripting语言的对比
·伺服端Scripting语言简介
本章重点在讨论服务器端Scripting语言本身,另外也谈及它与静态HTML和一般用户端技术之间的关系。在本章结束时,读者就能够清楚知道PHP能做什么、不能做什么、还能够对它与用户端原始如何进行交流有大致上的了解。
静态HTML
最基本的Web网页形式是完全以HTML编写纯静态、纯文字的页面。图2-1中的简单HTML页面就是一个例子。
图2-1 静态HTML网页规范
以下为图2-1的原始码:
如图2-2所示,当用户端电脑透过Web或Intrantet从服务器做出对某个页面的HTTP请求时,服务器只需传递档案中找不到的纯文字。
当该资料送回用户端电脑,浏览器按照自己对原始码内容的精确解析、使用者的偏好选项、显示器大小以及其它因素做出最佳处理并呈现出来。服务器上HTML档案的内容与用户端电脑上页面的原始码完全相同。
你这样非常普通的静态HTML具有以下几种优点:
◆ 任何浏览器都有能力显示它。
◆大多数的设备都有有能力显示它。
◆它对每个请求都能迅速执行,并且只用最少的资源。
◆ HTML容易学习或自动产生。
◆ 对单独页面能够快速进行小更动。
◆ 当然,静态HTML也有不利的一面:
◆ 难以控制设计和版面配置。
◆ 无法扩充到大量的页面。
◆ 互动性不够好。
◆ 不易包含关于页面有意义metadata。
◆ 不容易应付内容或个人化资讯的迅速改变。
◆ 不很具有吸引力。
由于…只能算是「业余」水准或某种理想坚定的应用(此理想坚定如某些电脑科学专家所写的网页,而他们认为所有的网页应该遵守HTML3.1规格而且必须所有装置都能读取)。
针对这些限制,日前已经发展了很多种其它技术,其中包括用户端的JavaScript、Cascading Style Sheet(CSS)和Java applets,还包括伺服端资料库连接的伺服端scripting语言。正在发展中的技术尚包括XML和XSL,这两种技术都有是其它各种规格(XHTML、XSLT、XPath、ICE等)的一部分。
如果花些时间去了解这些技术有哪能些功能,以及是否能够加到自己的Web网站中,一定会减少往后让你头痛的机会。对于任何在手上的Web网站任务,第一步要先问自己的基本问题是:该运算(computation)在哪端执行,用户端还是伺服端?
「动态(dynamic)」的涵意在「静态」和「动态」Web网页之间有一个基本且重复差异,但「动态」几乎可以表示除普通HTML之外的所有一切。它既用来描述用户端功能,也用来描述伺服端功能。在用户端,「动态」可看成是多媒体展示、卷动的标题行、自动更新的页面或者时隐时现的元素……等。在伺服端,这个术语一般是用来指称正在空中传送并交互组合的内容。
用户端技术
对于普通HTML,最常见的内容新增是发生在用户端。包括以下方面:CSS和Dynamic HTML之类的格式扩充能、用户端scripting语言、Java applets和Flash。这些技术的支持方式是(大多数是有支持)内建在Web浏览中。表2-1列出它们的功能,其中有部分重叠。
表2-1 用户端HTML的扩充
图2-3所列示的页面范例与图2-1乃基于相同的内容。
正如从原始码中以看到的,这个例子新增了一些样式表、用户端scripting和一些比较复杂的HTML码。
很不幸地,用户端技术的最佳卖点也是最坏的特质:它们完全依赖于浏览器。每种浏览器的功能差别很大,即使同一个牌子出品的不同版本之间差别也很大。处每个人还可以选择以不同的方式配置自己的浏览器,例如,某些人们会因为安全的顾虑而禁止使用JavaScript,这样得他们不可能浏览那些过度使用JavaScript进行导览处理的网站。(如果我们在先前范例所示的功能)
而且,许多使用者由于费用或技术不足的原因,在浏览器的升级工作方面效果级差。Web开发人员应该对基于设备的浏览、普通性和全球性用户等有所了解。无一例外,以大众市场为导向而设计的网站都试图取得最广泛的用户,例如,Yahoo!和Amazon在采纳了这些标准后,坚持不使用样式表和JavaScript已经有三年多了。在W3C的压力下,许多网站仍固执地坚持使用FONT标记和BGCOLOR属性,他们的客户可能是那些在13时显示器的老旧Macintosh机器上使用AOL3.0的用户。更讽刺的是,即使Web在经历了五年快速发展之后,开发人员可以对客户提出绝对保证的仍只是让他们看到以纯文字为主的普通HTML而已。(或者甚至是HTML的子集合而且已经成功轻松经历过时间的考验)
最后,用户端技术不能做任何需要连接到后端服务器的工作。JavaScript不能根据储存在资料库中的使用者偏好选项即时产生自定义的下拉清单,当列表中需要做修改时,Web开发人员必须到该页面进行手动的修改(伺服端JavaScript,但目前用得不太多)对于此问题,伺服端JavaScript语言是可以填补此一鸿沟的救星。
总之,处理版面配置或浏览器事件的一切动作都发生在用户端上。一般来说,看上去很酷的效果或取决于鼠标移动的事情都是在用户端上。能够看到某事件显现的速度越快,它就越可能是由用户端处理的,因为速度快就代表了不需要从服务器进行下载。
注意:
Java applets,也称为「client-side Java(用户端Java)」,与用户端其它技术相比,它对浏览器的依赖比较少。正如其名称的暗示的,它们是透过Internet传递的完整小型Java应用程序,但是它不像其它程序语言编写的应用程序那样,直接与用户端的作业系统互动,Java applets执行于称为JVM(Java Virtual Machine,Java虚拟主机)的中介软体上。JVM可看成是存在于真正作业系统之上的一个作业系统。大多数最新浏览器都会进入不敷出JVM,当然你也可以自己单独下载一个来用。这种工作上的区分使得applet在让浏览器发挥特别功能时,不会受到浏览器相对较弱的能力限制。
applet在早期被认为是无意义的小东西,因为它们最初只是用于实现一些简单的动书,如看上去像透明胶做的图示标志,会滚动的标题列,跳动的键结等。幸好,applet已经有了改变,也可用于一些很具人文意义的使用目的,诸如纵横字谜、汉诺塔仿真、试穿戴套装和饰物和虚拟方式等。
伺服端scripting语言
图2-4是服务器scripting资料流程的示意图。
用户端scripting语言非常有魅力,是非曲直Web开发中最抢眼的部分。伺服端程序设计则正好相反,它对用户来说是看不见而隐藏在后面的。伺服端scripting的程序设计人员总是在后端的Web服务器的资料之间努力摸索,而在前端妹夫有艺术细胞的同仁们则可以在大众面前书情展示自己的作品。
伺服端Web的scripting语言主要是将W eb网站连接到后端服务器,诸如资料库,这就允许进行双向的交流沟通:
伺服端Web的scripting语言主要是将W eb网站连接到后端服务器,诸如资料库,这就允许进行双向的交流沟通:
◆ 服务器到用户端:Web网页可从后端服务器输出组合而成。
◆ 用户端到服务器:使用户端所输入的资讯得以发生作用。
常见的用户端到服务器交流沟通的例子是,在服务器上动态组合的线上表单和一些下拉式清单。(通常它需要你按下按钮)。
伺服端scripting语言产品有两个主要部分:scripting语言和scripting引擎(可能会内置在Web服务器中,也可能不会内置)。引擎部分都有是由同一个公司或团队开发的,只能互相配合使用(PHP3和ColdFusion就是这样的两个例子)。然而,这一规则也有例外,举例来说,Java Server Pages就是以标准程序语言编写的,而不是用于专门目的的scripting语言;有些配合厂商已经开发了几个可兼容互换的引擎(例如Allaire JRun 、Apache JServ)。
从理论上来说,Active Server Pagesb允许使用绝大多数与所有scripting语言以及几种相配的ActiveX的scripting引擎中的一种(然而在实务作业中,除NT/IIS/VBScript/JScirpt的组合之外,其它组合的问题都非常多),由于PHP4的scriptingz引擎(Zend)目前在理论上是与PHP程序设计语言分离的,所以PHP4现在也算是一种分离式的独立scripting技术了。
图2.5列出了一个简单的伺服端scripting语言的范例,根据伺服端原始码和用户端原始码,从资料库即时产生一个页面。我们含括了资料库呼叫(在本书的Part II之前,目前先不进行细部讲解),并略掉了一些含括的档案,因为这个例子的目的是显示PHP的最终成品,而不是成为正式作业可执行的原始码使用。
以下是服务器上的原始码:
这是同一个页面在到达用户端时的原始码呈现形式:
\n
出处:南方Linux
\n