艾德赛尔.福特二世是这么评价他曾祖父的事业:“我们要庆祝的与其说是一款车,不如说是一种概念,一种为普通百姓提供个人出行工具的概念。我的曾祖父不仅有这样的远见,而且坚持了他的远见。在福特汽车公司的头5年时间里,他就是这么做的,想当年他曾按字母顺序试遍了各种车型,最终找到了苦苦追寻的T型车。之后19年间,他坚持生产高质量低成本汽车的目标,不断改善产品和工艺。”自1908年10月1日至1927年夏天停产,亨利.福特的T型车共售出1, 500多万辆。他的成功之门在于 -- 流水线。
用OO思想来看待页面设计
ASP时代中,我们习惯于在网页设计师所提交的HTML文件中插入必要的脚本代码;更被推荐的方法是利用页面与代码分离技术,网页设计师在HTML文件插入事前约定的自定义标签,程序员用正则表达式匹配、然后用动态数据替换自定义标签。即使所有的工作都由您一个人来,把复杂的工作分解成简单的问题也会让你的效率大大提高,有如流水线--在一个时段内,只关注一件事。
让我们来回忆一下页面里会有什么?许多人会说内容、修饰和交互表单。ASP.NET要求你这么来看待页面:
·每一个页面是一个WEB FORM ,包括一个<form runat="server">;
·拖放控件加入各种元素;可以用Property浏览器定义控件和属性;
·可以为控件添加事件处理程序。
ASP体系中,我们以前需要定义网页<form>的 提交对象,可以提交给本身,也可以提交到其它页面处理,如我们时常用 login.asp(提交) -> check.asp(审核) -> index.asp(进场)这个跳转过程来完成登录操作。这是一个结构化的编程思想;现在我们要用面对对象的编程思想来考虑:把登录功能当作着一个整体即对象,它包括页面表现(由用户名输入框、密码输入框和提交按钮三个控件组成)和页面交互(审核事件处理程序)。这也是为什么<form runat="server">不需要确定提交对象的原因。
用XHTML+CSS来设计页面?
用纯粹OO思想来看,ASP.NET把每个控件的表现(颜色、字体大小之类的东西)作为属性是非常合适的,当然它也允许用CSS来定义它的外观,把所有的操作集成在同一个IDE中也变得更加快捷。
但有趣的是,W3C标准主张把网页的内容(HTML)、表现(CSS)和脚本分离成三个独立组成部份,其最显著的特征是强调网页内容是有结构的,要用<DIV>、<span>、<ul>等结构标签来定义。但W3C的这种思想恰恰与MS软件工程师们的OO思想相背离,他们认为网页表现只是一件简单的事情,没有必要折腾得那么复杂,用panel控件(实际上就是<div>的变体)来定义网页内容的结构完全足够,在网页中加入看不到的结构标签破坏了他们的OO构想。
自从看了Jeffrey Zeldman在2003年出版《Designing With Web Standards》后,我从心底里是赞同并且身体力行W3C标准,不喜欢VS自动生成的HTML控件里充满了各种各样的属性,庞大而又混杂,对比之下W3C标准的产品简约而又结构明晰。VS是用软件工程师的眼光来看待网页设计,重内容而轻表现,所以力图把页面设计简化。而Macromedia倒更象一个由艺术家唱主角的公司,尽管它一直试图努力推行它的网页设计理念,但感觉仍然是重表现而轻内容,所以DW用来做网页设计倒很顺手。
引申出个话题,软件工程师的地位往往要高于网页设计师,时常听到美工在小声地嘀咕其作品是如何被强奸的,如果未来世界的所有网站一如MSDN,那真是乏味得很!正如女人内涵是非常重要的,但大多数男人是先看看你美不。或许只有象德国一样,让流水线上的每位工人都是专家正是其产品品质优良的保证。