【转】2009年前端技术领域回顾
在过去的2009年,如果你关注前端技术发展动态的话,可能会积累一大堆信息,有的保存在书签里,有的在推特上,有的在你的博客里。整理整理挺有意思,当初看到那些文章那些事儿的小小兴奋,又会油然而生。或许,经过一年的沉淀,再次回顾会有新的思考和启发吧。
Javascript开源库/框架
09年,Javascript框架发展到了成熟期,几个老牌库都发布了新版本:
2月 - jQuery 1.3.2发布,YUI 2.7.0发布
9月 - Prototype 1.6.1发布,YUI 2.8.0发布,YUI 3.0.0 GA发布
10月 - Script.aculo.us 1.8.3发布,MooTools 1.2.4发布
12月 - Dojo 1.4发布,jQuery 1.4 alpha 1发布
随着Javascript库越来越成熟,库的自身发展也面临难以突破的瓶颈。大多只是继续修复bug,兼容新版的浏览器,提升性能,功能的增加变得越来越有限。这里面变化最大的要算YUI 3,和传统的库不同YUI 3更注重前端开发的组织和结构。这种框架思想的转变,也许是未来发展的方向。基于开源Javascript库的开发模式已经被普遍接受,所以09年很少再出现像jQuery、YUI这样的公用库,但是越来越多的专用库纷纷出现,像图形处理和3D的库,如
GLGE(http://www.glge.org, 一个WebGL库)、Raphaël(http://raphaeljs.com,一个跨浏览器操作SVG的库)、SVG Web(http://code.google.com/p/svgweb,一个提供SVG跨浏览器支持的库)等。像手机应用方面的库,如PhoneGap(http://phonegap.com)、jQTouch(http://www.jqtouch.com)等。
1月,白宫网站(http://www.whitehouse.gov)改版,使用开源的jQuery库,华丽的交互效果,成为史上最酷的政府网站。
7月,BBC开源了内部的库Glow(http://www.bbc.co.uk/glow/),很像jQuery的库,向后兼容IE5.5。发布后立刻遭到jQuery作者John Resig的猛烈批评。
11月,Google也开源了内部的库Closure Library(http://code.google.com/closure/library)。虽然随后陆续有人批评它的代码细节有不少低效的地方,但丝毫不影响它是一个功能强大的库,而且在库的模块化设计方面很有特点。
浏览器
新的浏览器大战实际上成了Javascript引擎大战。从08年Chrome的V8挑起“事端”开始,09年各个浏览器厂商纷纷换新的引擎。6月,Firefox3.5携新的Javascript引擎TraceMonkey发布,同期Safari4.0.1正式版发布,引擎换成Nitro。12月,Opera10.5 alpha版发布,引擎换成Carakan。纷纷叫板V8。作为前端开发者还是很乐意看到这么激烈的竞争场面。相反,09年初众人瞩目的IE8发布,全面兼容CSS2.1,在标准支持方面进步不少。但仍对HTML5、CSS3、Canvas紧闭大门。IE6的市场占有率虽然持续下滑,但仍占据很高的比例,越来越成为前端开发的障碍。Facebook、Youtube和Twitter等热门网站相继抛弃对IE6的支持,提示用户升级浏览器。
Web标准
7月,W3C终止XHTML2.0的工作,转向HTML5。HTML5并不是一套完全不同的标准,而是在HTML的基础上扩展了更多有用的标签,如video、audio等,同时增加新的离线存储、跨文档通讯等机制,这些都有利于开发更强大的Web应用,所以受到广大开发者和浏览器厂商的青睐。虽然HTML5的草案还在制订中,但几乎所有最新的浏览器都有不同程度的支持,IE8也开始支持跨文档通讯。2010年HTML5势必还会有更大的发展,围绕它的话题不会中断。
12月,ECMA-262正式命名为ECMAScript,ECMAScript第5版标准几乎全票通过。
热门话题
1.网站性能优化的讨论进一步深入。之前只是讨论如何让页面下载更快,09年讨论的话题已经延伸到页面的渲染速度、图片无损优化技术、Ajax性能、CSS选择器性能,Javascript执行速度、手机性能优化等。Steve Souders的新书《更快的网站》(Even Faster Web Sites)很有代表性。09年出现很多很好很强大的网站性能优化方面的工具,像MySpace的MSFast、Aol的WebPageTest、微软的Doloto、雅虎的YSlow2.0、Google的PageSpeed、Speed Tracer、dynaTrace等。另外,使用dataURI实现内联图片的技术是前端性能优化的一个突破。
2.由于HTML5和CSS3不同浏览器支持的程度不同,相应的出现了各种兼容的技术。这个网站统计了目前浏览器支持的情况:http://a.deveria.com/caniuse。针对浏览器的这种现状,向前兼容同时向后优雅退化的理念被提出。针对不同浏览器有不同的设计方案,像针对Firefox、Safari、Chrome、Opera可以基于CSS3设计网站的UI,对于IE6设计一版可以接受的退化方案。这样可以引导用户逐渐放弃低端浏览器。
3.服务器端的Javascript前两年也讨论过,但只是实验性质的,并没有突出的优势。09年JSConf欧洲大会爆料的Node.js不同,它很好的利用了Google的高速引擎V8,可以实现一个非堵塞的事件驱动的Web Server,具有很高的性能。很适合做像comet这种长链接应用的服务器端。对于前端开发者来说,只是Javascript加上一组服务器端操作的API库,所以很容易掌握。也许2010年可以看到更多基于Node.js开发的应用。
4.Javascript开发越复杂,就越需要借鉴传统语言的更严谨的开发方式。于是Javascript单元测试的讨论频频出现在09年一些技术大会上,如:
Ron Adams在YUIConf2009大会上的主题:Automated Integration Testing with YUITest, Selenium and Hudson
John Resig在雅虎所做的演讲:Testing, Performance Analysis, and jQuery 1.4
Jason Huggins在JSconf2009上的主题:Hacking Selenium
老牌Javascript单元测试框架JSUnit太老了,目前流行用jQuery的Qunit或YUI的YUITest。同时再结合Selenium实现自动化的Javascript单元测试是目前比较好的方案。我之前也也过一篇文章:命令行方式执行YUITest单元测试(http://hikejun.com/blog/?p=499)
5.Google在9月发布一款插件-Chrome Frame。IE安装这个插件后,基本上就等于切换到Chrome了,这样IE就可以支持Chrome所支持的HTML5、CSS3、Canvas等标准。Chrome Frame的开发者是Alex Russell,他也是著名框架Dojo的作者。Chrome Frame的出现对IE是一个不大不小的冲击。
6.Palm Pre 6月份正式发售好评如潮。它使用的操作系统是WebOS。WebOS上的应用完全是用Html、CSS和Javascript开发的,这给前端开发者提供了更大的空间。9月,著名前端技术网站Ajaxian的创始人、Bespin的开发者Ben Galbraith和Dion Almaer加入Palm,我相信会进一步推动WebOS的发展。
7.前端大牛PPK09年做了大量手机浏览器的兼容性测试。详细见:http://quirksmode.org/m/table.html。随着3G的普及手机开发注定会成为热门技术,09年无论国内国外iPhone应用开发和Android应用开发都很热,但随着手机浏览器越来越强大,会不会重蹈N年前Web2.0和桌面软件的覆辙呢。无论怎样前端开始向更多元化的终端延展,这对前端开发者是件好事。
前端会议
09年给我留下深刻印象的一些技术会议:
2009/3/18-20,Mix09
官网:http://visitmix.com
2009/4/24-25,JSConf 2009
2009/11/7-8,JSConf(柏林) 2009
官网及会议资料:http://jsconf.eu/2009
2009/6/22-24,Velocity 2009
2009/9/14-16,Ajax Experience 2009
2009/10/28-29,YUIConf 2009
2009/11/20,FullFrontal 2009
2009/12/19,第四届D2前端技术论坛
09年前端领域着实涌现不少令人惊喜的技术和事件,对于前端开发者来说要不断更新自己的知识否则很快就Out了。同时,也可以看出前端技术的发展那是相当的快。2010年这种发展势头不会减缓,期待经历更精彩的一年!
我会随时把我的所见所闻分享在我的推特上-@kejunz,敬请关注。