top
Loading...
ASP.NET編程入門隨想之寬容
古老的山谷中村民生活簡單而富足,山谷中有個陡峭的山巖,傳說山巖那邊有著肥美的牧場,山巖下有累累白骨,那是企圖攀越山巖,去尋找傳說中的牧場的人的尸骨,于是人們制定了律法,禁止攀越山巖,禁止談論和尋找傳說的牧場,聲稱那是神的牧場,這些律法由守舊老人維護著。一天夜里一個渾身是傷的人步履蹣跚的回到村里,他告訴村民們,他找到了傳說中的牧場并希望村民跟隨前往。但守舊老人的威嚴和律法的神圣壓制了村民的躁動,漂泊者也被處死。一天災難降臨山谷。盡管守舊老人試圖維護受到越來越多的村民的求生欲望挑戰的律法。但暴動還是發生,越來越多村民離開了死寂的村莊,老人們咒罵著攔住了最后一輛離開的馬車。沿著漂泊者留下的路標村民們找到新的牧場。懷著感恩之心,后人把漂泊者奉為先知,盡管他早已尸骨無存。
-- 摘自房龍《寬容·序言》

■ 寬容 - WEB客戶端表現層技術的W3C標準

也許Tim Berners-Lee在工作間創建WEB構架時不會想到,他的圖形化WEB瀏覽器小玩意在短短二十幾年內,造就出GOOGLE之類的商業龐然大物,推出楊致遠、李開復們時勢英雄,演義一出又一出的動人故事。他的本意只有一個:信息交換。

以文本編碼文件為載體的WEB技術,打通全世界計算機網絡互聯的任督二脈,實現信息交換所需的分發、獲取和利用等環節。它用超文本技術(HTML)實現信息與信息的連接;用統一資源定位技術(URL)實現全球信息的精確定位;用新的應用層協議(HTTP)實現分布式的信息共享。

盡管簡單樸素的幾十個HTML標簽已經可以完成客戶端技術的根本任務--展現從服務器轉來的文本信息內容和非線性信息關聯,但人們需要更豐富的多媒體信息,于是GIF被用以存儲展現二維圖像;RealPlayer與Media Player以插件形式實現音頻與視頻應用;Flash提供了優秀的互動表現技術。

隨著商業力量不斷地滲透,它們在推動技術進步的同時,你死我活的拼爭也造就對Tim Berners-Lee最大的嘲諷--方便信息交換的技術本身互相不兼容,畫地為牢。這往往意味著老媽媽可能被迫知道瀏覽器除了FireFox還有IE;被迫讓有限的帶寬接收膨脹幾十倍的垃圾HTML頁面;被迫理解復雜的JavaScript和Cookies概念;被迫強制安裝和防范各種各樣流氓插件,欲望讓Berners-Lee純靜的思想變成混濁的現實。 貪得無厭的商業力量往往需要行業非贏利組織來制衡,在WEB業界這股力量叫W3C(World Wide Web Consortium),它針對WEB客戶端技術提出了一系列的標準。所謂的Web標準是指結構化的頁面描述語言(如XHTML和XML),解釋性語言(如CSS),對象模型(DOM)和腳本語言(如ECMAScript)。

W3C標準的根本出發點也就是WEB系統工程師的夢想--寬容,其技術力圖實現:寬容程序員,方便制作與維護;寬容瀏覽器,支持多瀏覽器并實現統一的頁面控制、定位與排版;寬容服務器和帶寬,精簡和壓縮代碼;寬容客戶端設備,支持多操作系統和非傳統的客戶端設備復雜交互行為;寬容各種高級發布流程,如方便搜索等;寬容未來技術,讓網站活得更久。

而值得慶幸的是從傳統的HTML到W3C標準的轉變并不算太復雜,WEB標準的核心思想是把網頁分離成三個獨立部份:結構、表現和行為。結構描述內容;表現用于排版;行為實現行為交互。但需要清醒地意識到即使有W3C標準WEB也成不了烏托邦,商業力量對規則的主導訴求無時不在,如據傳MS的IE最新7.0版本不完全支持W3C標準。這種主導訴求給這個世界帶來靈動和鮮活的同時,也在踐踏和破壞著標準。真苦了網站開發人員,或許他們要使用大量的程序分支來實現寬容的夢想,但更讓人哭笑不得的是,隨著WEB環境的變化,苦心積慮設計出的兼容技術往往多余甚至變成BUG。

■ 千變女郎 - XHTML+CSS

HTML是構造頁面的基本語言,由固定數量的標簽和松散規則組成,即可描述信息內容,又可對其進行排版和修飾,簡單易學。但如果你時常要從其它網頁中提取信息(如搜索引擎的頁面分類索引),就會發現從HTML骨子里發散出來的松散氣味會讓人多么煩躁, HTML頁面幾乎成了文件轉換的黑洞--易進難出!

與HTML同樣脫胎于SGML的XML(eXtensible Markup Language)就這樣受到關注。單一通用文件格式、自描述、易擴展、數據一致性和自動轉換五個特點使之成為異構系統間數據交換的合適載體,我們已經可以在WEB中看到其身影,如RSS閱讀器,FLASH等,但全球現有的80G HTML頁面不可能在一夜之間一蹴而就成XML,于是出現被Zeldman的《Designing with Web Standards》一書中稱之為"溫和的、友好的升級方式"的頁面描述語言--XHTML。

戴上X帽子的HTML只是對傳統的HTML進行適量改造,首先的要義就是遵循XML語法規則書寫HTML代碼,即:

·以正確的DOCTYPE和名字空間開始

·使用META內容元素聲明你的內容編碼語言

·用小寫字母書寫所有元素和屬性名稱

·給所有屬性值加引號

·給所有屬件賦一個值

·關閉所有標簽

·用空格和斜杠關閉空標簽

·不要在注釋內容中使用"--"

·確保使用<和&表示小于號和與號

再則如果你仔細分析和規劃自己的HTML頁面,通常會發現每頁都有類似的內容塊,如:標志和站點名稱、主頁面內容、站點導航、子菜單、搜索框、功能區、頁腳,其目的相同的塊狀結構即稱為頁面結構,或稱語義。HTML僅為一格式化語言而無法描述頁面結構,所以在XHTML中,通常使用<div>標簽來定義這些結構,并為其標識上id。下例為一結構化WEB頁實例(注意因受篇幅限制大量定義代碼被刪除)。

<HTML><body>
<div id="divHeader">范例</div>
<div id="divLogin"><form id="frmLogin">
<p id="lblAassist">請輸入用戶名和密碼:</p>
<li><input id="txtUserName" /></li>
<li><input type="submit" id="btnLogin" /></li>
</form></div>
<div id="divFooter">Copyright 2006 by 老燕</div>
</body></HTML>

至今為止我們還未提到任何有關網頁排版的片言刻語,這對許多新手而言不太適應,他們常常先排版后內容。但內容與表現分離是W3C標準的根本要義之一:在HTML中盡量避免甚至是不出現頁面排版代碼,這些工作留給樣式表(Cascading Style Sheets)來完成。

CSS用以給WEB頁面女郎化妝(如字體、顏色、空間,未被廣泛支持的CSS2甚至支持可視、聽力、盲文等裝置),一般保存在外部.css文件。外部樣式表能讓你通過編輯獨立的CSS文件來控制多頁的樣式和布局,你甚至為同一個網站設計多個樣式表并動態加載達到千變效果。

CSS的語法并不復雜,其一重要使命是使用CSS布局來替代目前大多網站采用的臃腫的表格排版法,即把所有網頁對象都放在盒中,通過控制盒屬性完成頁面布局設計,盒結構如下圖。但令人心煩的,主流的IE6.0和FireFox 1.x對盒模型的細節解釋有所不同而可能產生不一致的排版效果,您可以通過若干技巧來回避這個問題,但類似技巧在未來瀏覽器中或許就是一個BUG。


■ 樹 - DOM與ECMAScript

傳統的HTML頁面的標簽們象一群野孩子零散無序,所以W3C采用頁面對象模型(Document Object Model)來提供統一的應用程序編程接口。DOM被設計為多層(目前主要用兩層):Level 1 包括內核,HTML,和XML 文檔模型;Level 2. 包括樣式表對象模型,定義了操作附加到文檔的樣式信息的功能接口。

DOM將HTML或XML文檔描繪為一個樹形(Tree)數據結構,Tree的每個節點表現為一個HTML標記或者HTML標記內的文本項。樹形結構精確地描述HTML文檔中標記間以及文本項間的相互關聯性。只要修改相關Tree節點都具有的 nodeValue屬性值即可操作文檔中的任何標簽,也可以方便地從頁面的任何地方開始,沿著文檔的樹型結構在上(parent)、下(child)以及一側方向(sibling)做節點導航。另外,DOM技術允許我們操縱文檔的Tree結構,包括創建、刪除以及移動節點。


基于DOM的ECMAScript被W3C當著一統江湖的Web腳本語言標準。所謂的腳本語言是內嵌到HTML文件中并由瀏覽器解釋執行以增加互動性和減輕服務器壓力,基于對象(Object)和事件驅動(Event Driven)。但JavaScript和Jscript這對同父異母兄弟長期以來一直受到歧視,程序員們笑稱它們除了能在網頁中加點花花草草外別無特長,盡管程序員們需要花費大量時間來編寫表單驗證腳本程序,用戶卻只要在瀏覽器中點一下即可禁用而繞開驗證。更令人抓狂的是各個版本的javascript雖然號稱符合標準,但卻都貌合神離,程序員們受盡苦頭!

盡管近期隨著AJAX技術的出現,讓javascript老樹發出新芽,火了!可是我能放心把網站建立在一個脆弱的基礎之上嗎?網易的126郵箱最近改版,號稱極速,可是關了javascript連郵箱操作界面都出不來,老媽媽能知道里頭的緣由嗎?很久以前看到這么一句告誡:不要依靠JavaScript,唉,我猶豫,徘徊中……
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗