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