伺服端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。這些技術的支援方式是(大多數是有支援)內建在網頁瀏覽中。表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的最終成品,而不是成為正式作業可執行的原始碼使用
以下是伺服器上的原始碼
這是同一個頁面在到達用戶端時的原始碼呈現形式:
以上就是PHP學習寶典-第二章的內容,更多相關內容請關注PHP中文網(www.php.cn)!