本节书摘来自华章计算机《web前端开发最佳实践》一书中的第1章,第1.1节,作者:党 建
更多章节内容可以访问云栖社区“华章计算机”公众号查看。
本章首先会简单介绍web前端开发的历史由来,以及前端开发的概念及其范畴,让读者对前端开发有个整体的认识,同时还会对前端开发的一些错误认识进行更正。其次会介绍一下web前端的现状,包括互联网整体环境、浏览器的发展、网站的设计和开发现状等,让读者认识到前端开发的现状和趋势,以便更好地提高自身的前端开发技能。
1.1.1 什么是web前端开发
什么是web前端开发?也许有人会说web前端开发就是网页设计,就是美工,也有人会说web前端的工作就是使用工具拖曳生成各种界面,然后导出为网页。其实这些都是对web前端的误解,或者说还是停留在过去对前端开发的认识上。记得某个求职节目中,某互联网公司负责人对前来求职的前端工程师说他们理解的web前端是需要用java的,是需要用这种语言编写的。一个互联网公司的负责人竟然对自己公司使用的核心技术概念知之甚少,这实在是让人匪夷所思,更是闹了不小的笑话。此事件也激起了业内针对web前端概念的大讨论,不过也从侧面说明web前端这一概念还没有深入人心。的确,web前端兴起的时间还很短,这也就导致了很大一部分人不太了解这个新型的职业,所以我在这里再次解释一下web前端这个词语的来龙去脉。
对于web前端,业内公认的说法是从2005年开始兴起的。2005年以前,因为web网页主要以展示为主,内容基本都是静态的,所以客户端开发工作的目的就是让页面展现得更加整齐和漂亮,没有太多花哨的内容。网站的用户也只是以浏览为主,并不会有复杂的交互。正因为如此,一般的美工仅依靠photoshop和dreamweaver等工具就可以制作出外观漂亮的静态网页。2005年之后,互联网进入web 2.0时代。web 2.0更注重用户的交互作用,用户不再只是读者,同时也是作者。用户不再是仅仅阅读静态的网页,同时也为网站贡献内容。随着这一概念的发展,人们开始重新审视网站的设计,制作的网页慢慢变得生动起来,页面也有了大量的交互,不再是简单地展示静态的文字和图片。google gmail的发布,使得ajax技术大红大紫,这也把对web 2.0的概念的认识推上了一个新的高度。ajax无刷新技术极大地增强了网页的用户体验,使得用户操作页面更流畅,操作体验更接近于本地应用。此外,搜索引擎的普及使得网站的搜索引擎优化受到了重视。搜索引擎对网站的外观并不感兴趣,只识别网站的html代码,这就要求网站的设计者和开发者不仅要重视网站外在的用户体验,还要重视网站内在的代码质量。
随着网站功能的丰富、设计风格的发展以及网站代码质量的要求,网页端的开发也变得复杂起来,其代码量和逻辑复杂度都增加不少,同时还需要考虑网站的性能、浏览器兼容及网站安全性方面的问题。传统的网站开发者仅仅会使用网页制作工具已经不能够满足目前的需求了,此时的网站开发更接近于后端开发,需要有专门的软件开发工程师来做网站开发相关的工作,于是原来的网页制作这一职业就演变成了web前端开发。从职责上讲,web前端开发要涉及网站开发的方方面面,从前端ui到和后端的数据交互都属于前端开发的范畴。因此,web前端开发是兼具艺术气息和逻辑思维的综合体,既要考虑页面的美感和操作体验,又要关注前端代码的质量。
1.1.2 web前端开发需要具备的技能
由于web前端技术兴起的时间不长,因此它还没有明确的界限定义,不同的web项目中可能要求的web前端开发技术会有所不同。例如,某些项目可能需要前端开发人员了解一些后端技术,这样前端开发人员才可以更好地与后端开发人员配合,如在页面上留下一些后端需要调用的“钩子”等,而某些项目可能需要前端开发人员懂一些ui设计、photoshop工具的使用方法等,以便于和ui设计师沟通和配合。虽然web前端开发的范畴广泛,并且界限模糊,但是以下7点是web前端开发必备的技能。
页面标记(html)
由于页面html代码结构基本固定,html的标签数量也不多,因此,从学习的难易程度来说,html应该是前端技术中非常容易学习的技术。即使是一个新手,也能在较短的时间里学会编写一个结构良好的页面。虽然说入门容易,但是要编写语义良好、简洁整齐的html代码则需要大量的实践才能掌握。html是页面的基本结构组成部分,是网站的基础,臃肿混乱的html代码不但会影响其本身的展现,而且与其对应的css与javascript代码也会变得难以编写和维护。
页面样式
css 是 cascading style sheet(层叠样式表)的简称。在标准页面设计中,因为css负责网页内容的表现,所以css也是前端开发需要掌握的核心内容之一。丰富的css样式能让平淡的html展现出绚丽的效果,使得页面更为友好。好的样式可以让用户在页面上停留的时间更久一些,也可以帮助用户更好地阅读网站内容,同时,还可以让用户在不同浏览器上有着相同的体验。css和html代码一样,没有复杂的逻辑,上手也比较容易,其主要的难点在于如何合理地利用css的组合和继承特性来编写简洁、可维护性好的css代码。以上这两项基本技能是前端ui开发必备的技能。
前端编程
前端编程技能主要是指javascript编程。javascript是一种基于对象和事件驱动的客户端脚本语言,是页面实时动态交互的技术基础。相较于html和css,编写javascript代码更能让前端开发人员找到后端程序员的感觉。javascript是非常灵活的脚本语言,包含了高阶函数、动态类型以及灵活的对象模型等强大的语言特性,当然,javascript的灵活性也可能导致代码不易维护。此外,浏览器的兼容性也增加了javascript编码的难度。同一个功能,可能在不同的浏览器中有不同的实现。例如,在ie浏览器中,事件绑定使用的是attachevent()方法,但其他浏览器则使用的是addeventlistener()方法。开发人员在熟悉javascript基本语法和基本的编码规范之外,还应该了解并解决在不同浏览器中的javascript的兼容性问题。另外,作为前端开发工程师,必定会涉及后端的编程,一些原因是目前流行的web编程方式会有部分后端代码存在于前端页面中,和前端的html、javascript等混合在一起,如php、jsp、asp.net等,因此,前端开发工程师也有必要了解一些后端编程技术。
跨平台,跨浏览器
前端代码本来不存在跨平台方面的问题,但是随着移动web平台的兴起,跨平台的问题就逐渐显现出来了。移动设备(如智能手机和平板电脑)在近几年发展迅猛,用户通过移动设备访问web站点的比率也是逐年增高。如何在众多移动平台、众多屏幕尺寸上展现友好的web站点成为一项前端技能。不过,目前跨浏览器没有像几年前表现得那么突出了,这主要是因为ie 6、ie 7浏览器的占有率下降和众多浏览器对标准的重视,另外,目前流行的前端框架已经很好地解决了浏览器的兼容问题。尽管如此,但是还需要熟悉常见的浏览器兼容方法,主要包括:ie 7、ie 8的兼容,html5中新特性的兼容等。
前端框架
各种前端框架的出现,在很大程度上降低了前端开发的难度。框架统一了编码的方式,封装了浏览器兼容问题并添加大量的扩展功能。如今的web项目中前端框架应用非常广泛,在开源社区github上排名靠前的开源框架也是以前端框架居多。优秀的前端框架可以在很大程度上缩短项目开发的周期,尤其是jquery,几乎成为web项目默认的前端框架。但是,前端框架的接口众多,各种框架的使用方式和编码方式也不尽相同,作为前端开发工程师,需要熟悉一些常用框架的使用方法,并且要了解如何编写常用框架的扩展插件,如jquery、yui、ext js等。
调试工具
对于前端代码,在调试过程中需要查看页面的html结构变化、css渲染效果、javascript代码的执行情况以及http请求和返回的数据,并且要了解网站各个部分的性能等,甚至需要动态更改html、css代码来查看预期的效果,模拟发起http请求来查看后端返回的数据。主流浏览器都会有对应的浏览器插件来辅助完成这些工作,如ie中的ie dev toolbar、chrome中的developer tools、firefox中的firebug等,此外还有http请求监控和模拟工具,如fiddler等。 开发工程师需要熟练使用这些工具来辅助完成前端代码的调试。
沟通能力
沟通是开发人员必备的一项基本技能,尤其是对于前端开发工程师来说。web前端开发介于ui和后端逻辑开发之间,因此,web前端工程师在开发过程中必定会和ui设计师及后端工程师合作:前端工程师需要和ui设计师沟通,确定效果是否可以实现以及实现的代价,并对ui设计提出建议;还需要和后端工程师沟通,确定前后端交互的接口以及传输的数据实体的结构等,良好的沟通会让这些过程变得轻松许多。