说起前端Web Front End这个词真是很尴尬,我不记得是从什么时候开始有这个名词了,好像最早在04到05年和Ajax一并兴起Web标准之后,原来的一部分美工就不叫美工了,改叫前端了,像我这样的也勉强算是一个,从工作室的网页美工进化到了前端,前端人员。当然也不乏一些过去的hacker,没事喜欢写写页面模板的人,逐渐也有网页特效发展到前端这方面来的。所以前端大致分两路人,一路设计背景的,现在更喜欢强调用户体验UE,以至于出现了专门的用户体验研究人员;另一路是JavaScript的hacker们,把JavaScript琢磨得让人叹服,写出了无数惊悚的程序,比如开天辟地的星际,和最近流行的18K的超级玛莉。
我也勉强算是有一点做前端的背景吧,如果说出身,那应该是上面第一条路,从所谓页面美工出来的。写干净的HTML和CSS是我的癖好,而对于JavaScript,倒认为那本身就是一个破坏美的东西,尽可能不去碰它。不过不去碰是不可能的,做前端难免需要写,从写一点,到写一堆,不过自始至终,到目前为止我还是对JavaScript持保留态度,不愿去过多研究。
JavaScript本身仅仅是一套标准,它的实现依赖于各个浏览器,而很多人不顾一切的测试已经证明了,浏览器队伍中的各个成员对于这个标准的实现有大大的不同,其中当然包括IE这样实现效率低下、不遵守标准的,所以研究JavaScript的运行效率至今在我看来都是不可思议的事情。JavaScript的语法本身很有意思,不可否认是一个设计精致的动态语言,但在实际应用里也存在代码不易组织,入口分散的问题。而面向对象的特点似乎又和浏览器端琐碎、多变的逻辑相冲突,在客户端做面向对象分析成本实在是太高了。
我抵制大部分JavaScript库,只是偶尔Mootools实现一些动画效果,用OpenLayers做网络地图,这一点与我在Java、Python上疯狂用库的癖好正好相反。原因很简单,一切的JavaScript库都不过是简单的JavaScript Core API和DOM API的封装,它不可能实现更多超越JavaScript的功能,而所有这些功能我都可以自己实现,只是简单复杂,代码量多少的问题。JavaScript只有一本Definitive Guide就可以写完的东西,何不自己尝试实现呢。从这个角度上说,那些JavaScript的类库代码设计上的价值是远高于功能上的价值的。学习JavaScript,用库不如读库,用库不如写库。
我不看好JavaScript作为前端主力语言的前途,所以我不曾花时间读过任何一个库的代码。JavaScript太脆弱了,前端不确定的因素太多了,平台不同则实现不同,实现不同导致代码不同,辛辛苦苦写了三四个浏览器的代码却经不住用户的几次点击,Firebug的红叉就立刻出现,从1 Error瞬间变成100 Errors,页面脚本不再工作,整个精心设计的用户界面如同一团废铁,没有任何响应,远没有过去一个一个的死链接生点过去可靠。JavaScript不足以强大到构建一个交互性很强的用户界面,所谓富客户端总有一天要从浏览器里爬出来。
现阶段前端还是很火,很多网站都热衷于做非常复杂的客户端效果,以yahoo为例,整页整页的动画效果不知花费了开发人员多少心血来和肮脏不堪的CSS、JavaScript以及各个牛B的浏览器打交道。很多人还是热衷于投身到其中,兴奋地操作YUI的API,体验mouseover和mouseout的效果。然而这种日子持续不了多久了。JavaScript(Ajax)根本就不是Flash的对手,如今有浏览器的地方就有Flash的运行环境,而对JavaScript来说浏览器是各异的,Flash Player对Flash来说却只有一个版本的问题。有IDE支持,有丰富的图形界面工具,Flash甚至还有JavaScript梦寐以求的IO支持,两者实在不是一个重量级。
so,前端,也许只是Google和Yahoo们带来的认真的玩笑,不可避免地只是历史最短暂的一瞬,实在不值得投入过多精力。

