近來大(dà)家總是在标準上争論不休,其實,這些問題一(yī)些相關文章已經說得很明白(bái)了。
以下(xià)我(wǒ)就談談我(wǒ)的看法。本帖子有太多的“我(wǒ)認爲”,說明了我(wǒ)隻是想把我(wǒ)的想法拿出來跟大(dà)家商(shāng)榷,或許有太多不對的地方,也請大(dà)家一(yī)一(yī)指出。
1、我(wǒ)對web标準的理解
所謂的web标準,在一(yī)些教程文章上已經得到結論:結構化标準(XHTML、XML)、表現标準(CSS、XSLT?)、行爲标準(DOM、ECMAScript)。這些東西在網上一(yī)搜一(yī)大(dà)把,在這裏我(wǒ)就不多說了。我(wǒ)隻說我(wǒ)自己的想法:
a.标準是相對的,有其一(yī)定的局限性
作爲标準本身,它也在不斷地完善中(zhōng)。我(wǒ)們也可以加入其中(zhōng)完善它,而不是盲從它。沒有最好,隻有更好。(LeXRus前一(yī)陣子說要成立自己的web标準組織,不知(zhī)道現在怎麽樣了。)
b.标準隻是被推薦使用,好的标準大(dà)家都會自覺去(qù)遵守
我(wǒ)們之所以使用标準,就是因爲标準對我(wǒ)們有利。正如現在倡導的ISO9000标準一(yī)樣,它隻是倡導,并不強迫。我(wǒ)認爲它對我(wǒ)有用,所以我(wǒ)用它;同樣,如 果你認爲它實在不怎麽樣,你也可以不用它,标準本身不應該帶有任何強迫性。就跟打籃球一(yī)樣,NBA是24秒進攻,我(wǒ)們是30秒進攻,我(wǒ)們要想加入NBA, 就得用人家的規則。還有我(wǒ)們加入“世貿”也是,如果我(wǒ)們夠拽,自己成立一(yī)個“世貿”,自己發布一(yī)套标準,也是可以的。
c.标準沒有明确提到用div還是table
有些朋友很容易把标準簡單地等同于“把table換成div”。我(wǒ)不這麽認爲,因爲table也是符合xml規則的。含有table的頁面照樣可以通過XHTML1.0的驗證。
d.“div布局”不隻是用div進行布局
我(wǒ)們可以用一(yī)切可能的标簽(包括table)對頁面進行布局,目的就是要達到最優。它隻是提出一(yī)個概念,一(yī)個全新的模式。壇子裏也有人說過,“重要的是觀念上的更新,而不是代碼。”當然,我(wǒ)們的最終目的是代碼的更新。
e.XHTML驗證是手段,不是目的
有時,我(wǒ)們用javascript來生(shēng)成flash movie代碼,以欺騙validator,通過驗證。用這種方法,那麽沒有通不過驗證的頁面。如果隻是玩玩,那是可以的。但是我(wǒ)怕會有些初學者太把 validator當回事,甚至認爲通過驗證是最終目的。我(wǒ)的看法是:validator不過是一(yī)個工(gōng)具,它幫助我(wǒ)們檢查我(wǒ)們的頁面是否符合标準,僅此而 已。最終我(wǒ)們還是得按客戶的要求設計我(wǒ)們的頁面。
2、我(wǒ)爲什麽要用标準
有人會以爲使用标準的目的就是爲了達到标準。其實,《網站重構》一(yī)語道破天機:爲了網站能“活”得更長久,爲了提高網站的可訪性,更爲了降低成本,我(wǒ)們必須采用Web标準!這裏有三個“爲了”,沒有一(yī)個是爲了标準。标準隻是手段。
接觸“标準”後,我(wǒ)嘗試去(qù)做一(yī)些符合“标準”的頁面。當時,并不是很明确爲什麽要使用标準,隻是出于一(yī)種好奇心理。中(zhōng)間也遇到了一(yī)些難題,有技術上的,也有觀念上的。但是,現在我(wǒ)很樂意用div+css來給客戶做網頁。
用了标準以後,給我(wǒ)的感覺就是:代碼精簡了,維護方便了。
代碼精簡,可縮短頁面裝載時間。就算在當前寬帶的條件下(xià),我(wǒ)們也不應該放(fàng)寬對自己的要求——精簡代碼(我(wǒ)想這也是每一(yī)個程序員(yuán)對自己的要求),況且現在還有不少的撥号用戶,以及手機上網/浏覽的用戶。這是一(yī)個分(fēn)秒必争的社會。
嚴格按照标準,可以獲得更高的兼容性。一(yī)個合格的網頁制作者,他總是試圖讓網頁達到最高的兼容性。當然,他要在效果與兼容性之間取得某種平衡。就像我(wǒ)們現在挑老公:既要有錢,也要靓仔。
維護方便,我(wǒ)甚至隻要修改一(yī)下(xià)css就可以讓整個頁面呈現出完全不同的風格。這可以節省不少工(gōng)作。
當然,我(wǒ)認爲用标準最重要的一(yī)點是:向後兼容。用一(yī)個專業的術語就是:可持續發展。網絡總是在不斷地發展中(zhōng),一(yī)個好的網頁制作者,總得對未來的發展有一(yī)定的預見。就現在我(wǒ)知(zhī)道的,以後一(yī)段時間确實是xml的天下(xià),直到有更好的東西出來取代它。
每年都有太多的網站爲了跟上時代,花不少錢在改版上。因爲改版就意味着一(yī)切重來,包括代碼,甚至程序。
标準還要求我(wǒ)們把數據交給XHTML(或者html、xml),把表現交給css,兩者各司其職,結合起來。
3、爲table平反
《網站重構》一(yī)書(shū)出來以後,也許有很大(dà)的誤讀成分(fēn),一(yī)些朋友把标準跟重構混淆了,甚至等同起來。我(wǒ)沒看過這本書(shū),不好做評價。
“在不改變代碼外(wài)在行爲的前提下(xià),對代碼做出修改,以改進程序的内部結構”,這就是重構。我(wǒ)認爲“網站重構”兼有“div布局”跟“web标準”的意思。布局講的是一(yī)種方法,标準講的是一(yī)種規範,這是兩碼事。
web标準并不是說不用table,我(wǒ)找遍了網上的文章,沒有找到一(yī)篇文章說web标準反對使用甚至建議不使用table标簽,我(wǒ)想它是這樣說的:建議不要使用table“布局”,而改用div+cs“布局”。
拿一(yī)個數據表來說,我(wǒ)認爲用table來組織它是最好的解決方案。當然,你要用其他辦法來實現也是可以的,但是我(wǒ)敢說都沒有table來得簡單、簡潔。(也許有,隻是我(wǒ)沒找到?)當然,在學習階段,強制自己不使用表格解決一(yī)切問題,還是蠻有用的。