关于界面的价值观与方法论

只挑我懂的来拍

6October2009

标准的 Web 组成应该包括 3 部分:结构、行为和表现。这种思想最早在微软设计的DHTML 模型中初步提出来,但是很不规范,也不成系统。后来,W3C(World Wide Web Consortium,万维网联盟)组织规范了 Web 的构成。根据 W3C 制订的标准,Web 标准不是某一个标准,而是一系列标准的集合。完整的Web 应该由以下3 部分组成:
· 结构(Structure)。
· 表现(Presentation)。
· 行为(Behavior)。
这 3 部分对应的实现技术如下。
· 结构标准语言:主要包括 XHTML 和 XML。
· 表现标准语言:主要包括 CSS。
· 行为标准语言:主要包括W3C DOM、ECMAScript。
上面各种标准语言大部分由W3C 组织制订,但是部分标准也由其他标准组织制订,如ECMA(European Computer Manufacturers Association,欧洲计算机厂商协会)制订的ECMAScript。

“标准的 Web 组成应该包括 3 部分:结构、行为和表现。”
“ 完整的Web 应该由以下3 部分组成:结构 行为 表现”

1. 先挑最重要的说吧。Web标准的核心思想是,结构、表现和行为要“分离”。不是说包含这三个部分的就是标准,也不是说不包含这三个部分的就不标准。

2. 稍微扯玄一点。任何一个网页都会有结构、表现和行为,就哪怕不带JS、不带CSS的“纯HTML”也是这样:比如HTML标签的默认样式,就是它的“表现”;比如target=”_blank”这种属性,就是它的“行为”。Web标准号召结构、表现、行为要分离,也正是这个思想,导致XHTML 1.0 strict 废除了a标签的target属性,希望交由JS来决定链接是否新开窗口(呃,当然,现在看来这个规范很蠢)。

3. 所以,即使那么喜欢“结构、表现、行为”这种辞藻,也不一致一段话里开头讲一遍,末尾又讲一遍吧?

根据 W3C 制订的标准,Web 标准不是某一个标准,而是一系列标准的集合。

其实我一直以来没跟人较过这真:但事实上Web标准跟W3C半毛钱关系都没有。Web标准是WaSP(Web Standard Project,网页标准组织,大本营在这儿)提出的一种“前端开发规范”(呼,这个名词我真喜欢)。当然,W3C制定的一系列规范文档,是多少融合了Web标准的思想,但它只是一些语法规范,完全没有提到所谓结构、表现和行为分离的事情。我可以写一堆带了N多style和N多onclick的标签,严格符合XHTML语法规范,但很明显它并不符合Web标准的分离原则。

所以这里引出一个重要的结论:通过哪些啥W3C验证,跟网页是否符合Web标准没有任何关系

一本书开篇第一章就这么糊里糊涂的,也能看得出治学态度的浮躁了。其他的部分,我也不是啥高手专家,不敢妄加评判。不过,反正我本人是看得云里雾里的,不知道真正的初学者看了之后,能收获些啥。当然,这种书也有个好处,就是让那些梦想成为专家的“初学者”们,一下子捕获了众多华丽辞藻,说不定能激起他们对散发出牛逼哄哄气氛的网页前端技术有了新的神往。前端技术嘛,永远是这个下场,门槛低,易炫耀,会点皮毛再堆点辞藻,就能忽悠住一大片人。

好吧,我确实是因为blog老不更新,才硬挤出这么一篇赶时髦的文章。其实,我可没那众多高手和前高手(呵呵)那么有社会责任感,初学者嘛,总是要走很多弯路,买很多烂书的。咱这些从洪荒年代走来的人,谁没买过几本“实战100例”之类的书嘞?一个人的成绩只跟自己追求真理的态度有关,跟图书市场环境没啥关系。


  1. 酿泉:

    初学者表示看懂了

  2. aoao:

    小班表示好像看懂了

  3. 小麦:

    @aoao: 小班是谁?

    P.S. 哪位初学者看懂了?过来面试吧,俺这儿缺人哪~^ ^

  4. 沈蚊:

    偶是穿越来赶时髦的……

  5. Micahel:

    从头看到尾也没看出来你说的是哪本书啊

  6. xhlv:

    @Micahel
    《JavaScript征途》

  7. 笨活儿:

    我还以为这个事儿已经过去了……

    话说昨天看到这本书居然和犀牛书价格差不多,吓了我一大跳。

  8. Justice:

    想必你也是看过那场辩论的 =,=

  9. oneboys:

    是啊,我也以为那事淡去了呢。

    真想再来一遍。*&*

  10. uuad:

    来学习了

  11. hax:

    哈,别以为你拍了他,我就不来拍你。。。

    废除target属性不能算蠢,而是太纯。xhtml2也是如此。html strict也没说这个事情应该交给js做。实际上它的意思是这部分行为(打开新窗口,或在指定窗口中显示)不应该由html来指定。

    从html的本意来说,如果只是标记文档,不指定是有道理的。但是web的发展要求html进化到web应用。html5规范虽然名义上延续了html的衣钵,但是实际上扩展了html,另一方面又更细化了对于浏览器的要求。考虑实践上的需求,废除target就显得没有必要。html5的解决方案是对原本没有标准化的东西(比如浏览器窗口)进行定义。

    关于web标准和w3c、WaSP的关系,你好像搞错因果关系了。WaSP之所以诞生是因为w3c虽然颁布web标准,但是推广和执行不力。WaSP不制定标准,而是推动标准的采纳。

    w3c所制定的web标准绝不只是语法规范。分离的观念直接体现在标准的设计中。当然规范不一定在每处都明确标明怎样使用一个属性才是真正符合背后的设计思想的。相对来说,html5规范对这些问题描述得比以前更详细。

    再说验证,我们使用的多数validator只是语法校验,但是那只是就自动化程序而言的。它不是充分条件,但是你不能否定它不是必要条件。至于说出现某些validator报错,但我们认为他其实符合web标准的情况,确实有的,但是那是特定validator的问题。

  12. hax:

    但是你不能否定它不是必要条件。

    此句应为:
    但是你不能否定它是必要条件。
    或:
    但是你不能说它不是必要条件。

  13. sink:

    “通过哪些啥W3C验证,跟网页是否符合Web标准没有任何关系。”

    通不过W3C验证的网页,连语法都达不到标准的要求,更不能谈web标准。

    Errors found

    http://validator.w3.org/check?uri=http%3A%2F%2Fwww.tudou.com&charset=%28detect+automatically%29&doctype=Inline&group=0

    Sorry! This document can not be checked.

    http://validator.w3.org/check?uri=http%3A%2F%2Fwww.mikkolee.com%2F&charset=%28detect+automatically%29&doctype=Inline&group=0&user-agent=W3C_Validator%2F1.654

    1. Error

    Sorry, I am unable to validate this document because on line 181 it contained one or more bytes that I cannot interpret as utf-8 (in other words, the bytes found are not valid values in the specified Character Encoding). Please check both the content of the file and the character encoding indication.

    The error was: utf8 “\xE6″ does not map to Unicode

  14. 小麦:

    不好意思hax,一个月后才看到你的拍。

    不过我已经不想回了。哈哈

  15. 十年磨一剑:

    小麦的分享貌似让我找回了一些初学者的心态:不要无端猜测、不要期望、不要武断、不要偏见~:)