前几天,同学向我展示他 symbian s60 v3 上新装的GO浏览器的酷绚,“这是浏览器,而且这不止是浏览器”。我试用了一下,功能确实 不错,效果很棒,除了浏览网页的功能之外,还增强了时钟之类的小功能;不过有一个功能让我觉得有些意外,这个浏览器还带有一款小游戏!浏览器上带有游戏!这是让我不能接受的:浏览器就是浏览器,别掺杂了其他根本不必要的东西嘛。因为这是智能机,可以同时运行多个程序,并随意在程序间切换,退出浏览器来玩游戏没有什么不方便的,甚至看时间也没问题,所以在浏览器上加上一个时钟也是没有必要的,反而增加了软件本身所需内存与其他资源。
永远也不要做多余的事,更不要做不熟悉的事!
中国有句古话,叫“业精于专”,专业才能够做得强大,什么也做的产品本质上只是表现出出品者对原本的功能的不自信而已,而丝毫不能增加产品的可用性。
互联网的标准制定工作一刻也没有停留,却在标准的使用方面出现了差异,连浏览器厂商之间也存在着显著差异。这也怪不得页面作者了。不过,事已至此,我们唯有面对这样严峻的现实,并试图用自己的力量来为改善目前的状况出一份微薄之力吧。
工具总是在不断探索中得到改进,新的工具为了适应新的和更合理的需求而出现。因此,我们有理由认为,新出来的事物几乎总是必然会取代旧的事物,所以我们有理由来接受新事物。新的标准认为,当在某一领域需要涉及多种需求时,我们应该使用低耦合的方式来链接这些分别为这多种需求提供解决方案的技术。事实证明,这是需要的,也是正确的。
一直以来,在 WEB UI 开发中,我们使用HTML语言来描述网页;近年来,随着开发工具的升级,我们可以在互联网上看到越来越多的声明为 “xhtml 1.0 Transitional”的网页。不过,随意查看它们的HTML源就可以看到,这些页面其实离真正的 xhtml 的标准还远得很呢!页面的作者不了解,他们的“大作”正在被用户的浏览器使用一种称为“怪异模式”的方式来解析!
在前些年,表格在布局设计上的用途是很广泛的,即使在今天,还有众多使用表格来布局的页面。实际上吧,在HTML中 table 的设计之初,或许创造者并未想到他正在加入的这个标签会被用得如此神:他只是纯粹地想把它作为一个内容呈现工具而添加到 html 标签库中。
在这个意义上说,一些内容标记被用到布局上。另外,Netscape 浏览器引出一些在上一个时代很时髦的 font 标记用来设计字体属性。这是一个近年来广被诟病的标记,批评的原因是现在的设计人员认为表现性标记一开始就不应该出现在HTML中。
——这是内容与表现的耦合。
另外一个被经常用于事件处理的 onclick 和相关的一系列事件被添加到很多HTML标记中来。这样一来,我们想要对某一个HTML对象写事件,就只需要为其添加对应的事件名,并指定一个处理程序函数名或者将 javascript 代码直接写进这段可怜的HTML代码中——最后的结果是HTML混杂着大量的 javascript 代码。
——这是内容呈现与行为的耦合。
在长期的实践中,人们发现上述两种耦合带来了很多麻烦:
1 代码由于难以分辩而难以维护
2 难以真正将工作分开,做到明确地分工
3 单方面的开发人员难以集中其注意力,降低了开发效率
4 代码难以在向后兼容的浪潮中做一点点贡献,后续开发与维护将是十分痛苦的
为了解决上述问题,那就需要在一定程序上尽量解决这些耦合。那有没有办法解决这些耦合呢?
人总是这么聪明,每当问题出现,总会有人找出解决方案。
社会总是将一个复杂工作分为很多不同的部分,然后分别搞定他们:这在软件工程的术语中称为“分治策略”。低耦合是分治策略的重要体现,也是社会分工的必然发展。
当表现性任务多起来,就必须有一个专注于此的工具出现。那就是CSS(即Cascading Style Sheet,中文译作“层叠样式表”或“级联样式表”)。配合CSS,使用 div、span、ul-li 等一系列基本HTML标记,现代的设计人员能设计出非常棒的页面布局视觉效果。
web 2.0 的风暴让大家从原来的 web 阅览变为一个参与者,充分调动了所有互联网用户的积极性。可以认为行为在这个时候,它必然是 web 2.0 的基础。可以说没有行为就成为不了 web 2.0。既然这已成为一个时代,可以想象我的先辈、同行们在行为上付出了多少心血。然而到现在,我们猛地发现我们要处理的行为是如此的多,以致于我们突然想回过头来想捋捋头绪,才在这时候发现似乎这任务竟是那么的有心无力。其实 W3C 与各浏览器厂商一道已经渐渐地推出了分离行为与呈现的一些做法。
那么,让我们从现在开始,开始我们 web 的低耦合设计吧!
如果你正以为下面我将长篇大论地谈论这低耦合设计的技术时,我将不得不让你失望了,因为下面就剩两句话了:
使用CSS将样式附加到 DOM 对象来完成布局与样式的设计;
使用事件模型(又被称为DOM第2级事件模型)附加来为DOM添加行为响应。
接下来的几篇博文将关注相关的技术,敬请关注。
到 DOM 对象来完成布局与样式的设计;
使用事件模型(又被称为DOM第2级事件模型)附加来为DOM添加行为响应。
接下来的几篇博文将关注相关的技术,敬请关注。