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