谈谈我的“分离”观

Ghostzhang 发表于

很久没有跟其他人做重构思想方面的交流了,可能大家都觉得不太好意思讨论,特别是“分离”的思想这么基础的话题,拿出来说怕会被“笑话”。做为页面重构中最基础的一个思想,我们有必要清楚的认识它,因此我们需要更多的讨论。正所谓“理越辩越明”。借着这次webrebuild年会上 [焕义][] 提到的“分离”,我也来谈谈我的“分离”观。

一说到重构的“分离”思想,第一个进入脑残里的是“表现、内容、行为”的分离。“表现”指CSS、“内容”指HTML、“行为”指脚本。然后……

在《页面重构中的模块化思维》中我提到了“HTML与CSS的接口”实现,从“接口”可以看出,我们在做页面的时候,把CSS、HTML、脚本等文件独立出来的做法,就是一种“分离”的体现。但只是这样吗?在CSS2.1的时候有这样的认识是正常的,那么CSS3为什么又加入了原本脚本可以实现的动画效果呢?

表现,个人觉得应该包括了像滚动、发光、hover等动画的效果在内,脚本制作的动画效果也应该属于“表现”的范畴;内容,要传达给用户的内容,包括HTML标签;而行为,指由用户触发的由脚本与服务器端的交互,如登录。

举个例子,比如用户登录网站的过程中,当前输入框的边框高亮(表现),将鼠标放到登录按钮上,按钮变亮(表现),点击发送输入的内容(行为),界面出现一个进度条或转动的小圈(表现),登录成功,返回(行为)一个成功提示(内容),绿色图标、文字(表现)。

因此,CSS3中增加的动画效果并不像有些人说的,引起表现与行为的混乱。由于目前浏览器还不能做到支持真正意义上的表现、内容、行为分离,很多时候我们需要使用脚本到完成表现的效果。从这个角度来讲,目前脚本所完成的更多是“表现”的东西,而非“行为”。

讨论