作者:曹刘阳
前端开发工程师是一个很新的职业,在国内乃至国际上真正开始受到重视的时间不超过5年。但是,随着Web 2.0概念的普及和W3C组织的推广,网站重构的影响力正以惊人的速度增长。XHTML+CSS布局、DHTML和Ajax像一阵旋风,铺天盖地席卷而来,包括新浪、搜狐、网易、腾讯、淘宝等在内的各种规模的IT企业都对自己的网站进行了重构。
为什么它们会对自己的网站进行重构呢?有两个方面的原因:
第一,根据W3C标准进行重构后,可以让前端的代码组织更有序,显著改善网站的性能,还能提高可维护性,对搜索引擎也更友好;
第二,重构后的网站能带来更好的用户体验,用XHTML+CSS重新布局后的页面,文件更小,下载速度更快。
DHTML可以让用户的操作更炫,更吸引眼球;Ajax可以实现无刷新的数据交换,让用户的操作更流畅。对于普通用户来说,一个网站是否专业、功能是否强大,服务器端是用J2EE+Oracle的强大组合,还是用ASP+Access的简单组合,并没有太明显的区别。但是,前端的用户体验却给了用户直观的印象。
随着人们对用户体验的要求越来越高,前端开发的技术难度越来越大,前端开发工程师这一职业终于从设计和制作不分的局面中独立出来。前端开发技术包括三个要素:HTML、CSS和JavaScript,但随着RIA的流行和普及,Flash/Flex、Silverlight、XML和服务器端语言也是前端开发工程师应该掌握的。前端开发工程师既要与上游的交互设计师、视觉设计师和产品经理沟通,又要与下游的服务器端工程师沟通,需要掌握的技能非常多。这就从知识的广度上对前端开发工程师提出了要求。如果要精于前端开发这一行,也许要先精十行。然而,全才总是少有的。所以,对于不太重要的知识,我们只需要“通”即可。但“通”到什么程度才算够用呢?对于很多初级前端开发工程师来说,这个问题是非常令人迷惑的。
前端开发的门槛其实非常低,与服务器端语言先慢后快的学习曲线相比,前端开发的学习曲线是先快后慢。所以,对于从事IT工作的人来说,前端开发是个不错的切入点。也正因为如此,前端开发领域有很多自学成“才”的同行,但大多数人都停留在会用的阶段,因为后面的学习曲线越来越陡峭,每前进一步都很难。另一方面,正如前面所说,前端开发是个非常新的职业,对一些规范和最佳实践的研究都处于探索阶段。总有新的灵感和技术不时闪现出来,例如CSS sprite、负边距布局、栅格布局等;各种JavaScript框架层出不穷,为整个前端开发领域注入了巨大的活力;浏览器大战也越来越白热化,跨浏览器兼容方案依然是五花八门。为了满足“高可维护性”的需要,我们需要更深入、更系统地去掌握前端知识,这样才可能创建一个好的前端架构,保证代码的质量。
一位好的前端开发工程师在知识体系上既要有广度,又要有深度,所以很多大公司即使出高薪也很难招聘到理想的前端开发工程师。市面上有很多关于前端开发的书,这些书籍能很好地指导读者掌握前端开发的基础知识,能让读者达到会用的水平。然而,几乎还没有书能告诉开发者们如何才能用得更好,如何才能编写出高质量的前端代码,如何才能系统有效地组织前端架构……本书弥补了这方面的市场空白,它假定读者已经具有一定的Web前端开发基础,不会对基础知识进行详细介绍,主要精力放在如何编写和组织高质量代码上,从而提高代码的可维护性。
《编写高质量代码--Web前端开发修炼之道》 的重点不在于讲解技术,而是更侧重于对技巧的讲解。技术非黑即白,只有对和错,而技巧则见仁见智。本书是笔者个人的经验分享,尽信书不如无书,大家可以有选择地吸收,如果对书中的观点或技巧有不同的见解,非常欢迎与笔者讨论交流。大家可以通过邮箱cly84920@gmail.com与作者取得联系,也可以通过QQ群8791223参与到“如何编写高质量前端代码”的讨论中来。
在编写 《编写高质量代码》 过程中,如何组织目录一直是让笔者非常纠结的事情:HTML、CSS和JavaScript是三门截然不同的语言,在实际应用过程中涉及的深度也各不相同,HTML需注意的事项较少,CSS次之,JavaScript最为复杂。所以,本书虽然会同时对这三个方面进行探讨,但所用篇幅与它们的复杂度是成正比的。
曹刘阳, 网名阿当,资深 Web 前端开发工程师,先后就职于中国雅虎和淘宝,现就职于新浪,一直从事 Web 前端开发工作,实战经验非常丰富,在通过提高代码 质量来增强可维护性方面颇有心得。精通 HTML 、 CSS 、 JavaScript 等前端开发技术,对 ActionScript 、 Flex 、 PHP 、 RoR 等 Web 开发技术也有较深入的研究。致力于敏捷开发实践,喜欢读书,阅读过大量技术书籍;擅于总结归纳,能将各种技术融会贯通。大家可以通过邮箱cly84920@gmail.com与曹刘阳取得联系,也可以通过QQ群8791223参与到“如何编写高质量前端代码”的讨论中来。