不知从何时起,我们学会了把“分离”作为一种处理事情的工具:复杂的事情被逐层分开,分别处理,自由地改变一个却不会影响另一个,这便是分离的优点所在。
在学习程序设计语言的时候,将一定的功能包装为一个函数,把函数对外作为一个黑箱,这就是一种分离:函数本身只需要考虑箱子里的东西和传进来的参数,感觉就像躲在一个相对狭小的空间中,需要考虑的只是这一部分的功能,不担心会影响空间以外的事物,自然更容易开发了。
而箱外的东西也不需要知道箱子里面是如何实现它要的功能的,只要知道那个功能确实被实现了,而且想要的值已经通过返回值返回来了便成。这样一来,一旦需要换个别的什么功能,只需要换个功能函数就行了,程序的主体结构却不必改变。
而在进行网页设计和 Web 应用程序开发的时候,我们也试图用一些方式来实现分离,其中的一种是模板。
熟悉 PHP 的人大概会知道许多 PHP 的程序并非将 PHP 与 HTML 混杂在一起书写,而是先写好一个网页的模板,再通过 PHP 替换模板中的特定字符串,最后将生成的数据返回。
因为这样可以分离表现程序用途的代码与表现网页外观的代码。你可以设计另一套模板,提供同样的预设字符串接口让 PHP 程序替换,再不改动程序的情况下,改变网页的外观,像著名的 PHP 论坛 phpBB 就是这么做的。
因为那部分模板的代码不含有任何动态的程序,它也就可以直接视作普通的 HTML,用任何 HTML 编辑器来编辑了。
而 PHP 程序中也少考虑了许多该把那段程序放在哪里以配合页面输出这样的问题,只需要知道并准备好“喂给”模板的数据就可以了。
所以我们可以认为模板方式限制了 PHP 输出的格式,使之在一个较小的功能范围内变化,我们需要考虑的问题减少了,设计起来自然就更方便了。
到现在,我们在推行运用 Web 标准进行网页设计,其中很重要的一点就是,实现内容与表现的分离,用语义化、结构化的标记,代替描述外观的标记来书写 HTML。
这样所有的表现风格都可以用层叠式样式表 (CSS) 来设计,不同的样式表,只要针对同一份 HTML 的结构设计,就可以任意替换,让页面随时改变风格了。
同时语义化的标记还能让残障人士使用的用户代理都能看懂并清楚应该如何以自己的方式解释这篇文档,这是混杂表现与内容时绝对做不到的。
这一切是多么的美好啊,可还是有不如人意的地方。