近来大家总是在标准上争论不休,其实,这些问题一些相关文章已经说得很明白了。
以下我就谈谈我的看法。本帖子有太多的“我认为”,说明了我只是想把我的想法拿出来跟大家商榷,或许有太多不对的地方,也请大家一一指出。
1、我对web标准的理解
所谓的web标准,在一些教程文章上已经得到结论:结构化标准(XHTML、XML)、表现标准(CSS、XSLT?)、行为标准(DOM、ECMAScript)。这些东西在网上一搜一大把,在这里我就不多说了。我只说我自己的想法:
a.标准是相对的,有其一定的局限性
作为标准本身,它也在不断地完善中。我们也可以加入其中完善它,而不是盲从它。没有最好,只有更好。(LeXRus前一阵子说要成立自己的web标准组织,不知道现在怎么样了。)
b.标准只是被推荐使用,好的标准大家都会自觉去遵守
我们之所以使用标准,就是因为标准对我们有利。正如现在倡导的ISO9000标准一样,它只是倡导,并不强迫。我认为它对我有用,所以我用它;同样,如果你认为它实在不怎么样,你也可以不用它,标准本身不应该带有任何强迫性。就跟打篮球一样,NBA是24秒进攻,我们是30秒进攻,我们要想加入NBA,就得用人家的规则。还有我们加入“世贸”也是,如果我们够拽,自己成立一个“世贸”,自己发布一套标准,也是可以的。
c.标准没有明确提到用div还是table
有些朋友很容易把标准简单地等同于“把table换成div”。我不这么认为,因为table也是符合xml规则的。含有table的页面照样可以通过XHTML1.0的验证。
d.“div布局”不只是用div进行布局
我们可以用一切可能的标签(包括table)对页面进行布局,目的就是要达到最优。它只是提出一个概念,一个全新的模式。坛子里也有人说过,“重要的是观念上的更新,而不是代码。”当然,我们的最终目的是代码的更新。
e.XHTML验证是手段,不是目的
有时,我们用javascript来生成flash movie代码,以欺骗validator,通过验证。用这种方法,那么没有通不过验证的页面。如果只是玩玩,那是可以的。但是我怕会有些初学者太把validator当回事,甚至认为通过验证是最终目的。我的看法是:validator不过是一个工具,它帮助我们检查我们的页面是否符合标准,仅此而已。最终我们还是得按客户的要求设计我们的页面。
2、我为什么要用标准
有人会以为使用标准的目的就是为了达到标准。其实,《网站重构》一语道破天机:为了网站能“活”得更长久,为了提高网站的可访性,更为了降低成本,我们必须采用Web标准!这里有三个“为了”,没有一个是为了标准。标准只是手段。
接触“标准”后,我尝试去做一些符合“标准”的页面。当时,并不是很明确为什么要使用标准,只是出于一种好奇心理。中间也遇到了一些难题,有技术上的,也有观念上的。但是,现在我很乐意用div+css来给客户做网页。
用了标准以后,给我的感觉就是:代码精简了,维护方便了。
代码精简,可缩短页面装载时间。就算在当前宽带的条件下,我们也不应该放宽对自己的要求——精简代码(我想这也是每一个程序员对自己的要求),况且现在还有不少的拨号用户,以及手机上网/浏览的用户。这是一个分秒必争的社会。
严格按照标准,可以获得更高的兼容性。一个合格的网页制作者,他总是试图让网页达到最高的兼容性。当然,他要在效果与兼容性之间取得某种平衡。就像我们现在挑老公:既要有钱,也要靓仔。
维护方便,我甚至只要修改一下css就可以让整个页面呈现出完全不同的风格。这可以节省不少工作。
当然,我认为用标准最重要的一点是:向后兼容。用一个专业的术语就是:可持续发展。网络总是在不断地发展中,一个好的网页制作者,总得对未来的发展有一定的预见。就现在我知道的,以后一段时间确实是xml的天下,直到有更好的东西出来取代它。
每年都有太多的网站为了跟上时代,花不少钱在改版上。因为改版就意味着一切重来,包括代码,甚至程序。
标准还要求我们把数据交给XHTML(或者html、xml),把表现交给css,两者各司其职,结合起来。
3. 테이블 재활
『웹사이트 재구성』이라는 책이 나온 후, 몇몇 친구들은 재구성과 표준을 혼동하거나 심지어 동일시하는 경우가 많았을 것입니다. 나는 이 책을 읽지 않아서 코멘트를 할 수 없다.
“코드의 외부 동작을 변경하지 않고 프로그램의 내부 구조를 개선하기 위해 코드를 수정하는 것이 리팩토링입니다.” "웹사이트 재구성"은 "div 레이아웃"과 "웹 표준"을 모두 의미한다고 생각합니다. 레이아웃은 방법에 대해 이야기하고 표준은 사양에 대해 이야기합니다.
웹 표준이 테이블을 사용하지 말라는 뜻은 아닙니다. 인터넷을 뒤져봐도 웹 표준이 테이블 태그 사용을 반대하거나 사용하지 말 것을 권장한다는 글은 본 적이 없습니다. : 테이블 'layout''을 사용하지 않고 대신 div+cs 'layout'을 사용하는 것이 좋습니다.
데이터 테이블을 예로 들면, 테이블을 활용하여 정리하는 것이 가장 좋은 해결책이라고 생각합니다. 물론 다른 방법을 사용하여 구현할 수도 있지만 표만큼 간단하고 간결하지는 않다고 감히 말씀드립니다. (아마도 있을텐데 못찾았나?) 물론, 학습단계에서는 모든 문제를 풀기 위해 표를 사용하지 않도록 스스로를 강요하는 것이 꽤 유용합니다.
너무 많이 말씀드렸지만 제 생각이라기보다는 여러분의 생각을 요약한 것입니다. 하지만 초심자에게 도움이 된다면 아미타불이 될 것입니다.
출처 : 블루아이디얼