欢迎阅读《精通JavaScript(第2版)》。本书针对专业程序员概述了JavaScript的发展现状。谁算是专业程序员呢?当属那些对JavaScript(可能还有其他编程语言)的基础知识有着扎实理解的人。你对JavaScript的博大精深饶有兴趣,不仅想看到如文档对象模型(Document Object Model,DOM)这类典型特性,还想学习客户端“模型视图控制器”(Model-View-Controller,MVC)模式方方面面的细节。更新的API、全新的特性和功能,还有令人耳目一新的代码写法,这些都可以在本书中找到。 你现在阅读的是本书的第2版。自第1版于2006年问世以来,一切发生了太多的变化。那时候JavaScript正在经历痛苦的转变,从小打小闹的脚本语言变成有能力完成诸多不同任务的实用语言。要是你愿意的话,可以把那个时期视为JavaScript的青春期。如今,JavaScript已经完成了另一次转变,沿用之前的比喻,它已然从青春期步入成年。JavaScript几乎无处不在,85%~95%(统计口径不一)的网站主页上都出现了它的身影。不少人将JavaScript视为世界上最流行的编程语言(就日常使用的人数而言)。但是比单纯的使用率更重要的是它的实效和功能。 JavaScript从一门玩具语言(想想那些翻滚效果和状态栏文字特效吧)变成了一件高效但功能有限的工具(考虑一下客户端表单验证),进而发展成为如今拥有丰富特性且不再局限于浏览器的编程语言。程序员们编写着各种JavaScript工具,实现了服务器领域存在已久的MVC功能、复杂数据的可视化以及模板库等。能实现的功能还会越来越多。以前设计人员只能依赖.NET或Java Swing客户端来为服务器端数据提供具备完整特性的多功能接口,如今我们可以使用JavaScript在浏览器中实现同样的功能。利用Node.js,我们拥有了JavaScript虚拟机,无需浏览器就可以运行各种各样的JavaScript应用。 本章要为你讲述JavaScript如何走到今天,此后又将奔向何方。除此之外,还会将目光投向推动JavaScript革命的各种浏览器技术的改善和普及。JavaScript自身的现状同样也会得到审视,在瞻望未来发展方向之前,我们需要知道自己当下身在何处。在接下来的各章中,你会学到专业JavaScript程序员为了不辜负自己的头衔所必须掌握的知识。 1.1 JavaScript的历程 在本书推出第1版的时候,Google Chrome和Mozilla Firefox还只是初出茅庐的菜鸟。那时正值Internet Explorer 6/7呼风唤雨,Internet Explorer 8也获得了一定的市场。诸多因素交织在一起共同推动了JavaScript的发展。 JavaScript绝大部分时间依赖于浏览器。浏览器就是JavaScript的运行时环境,程序员所使用的JavaScript功能很大程度上取决于访问网站时所使用的浏览器型号及版本。在2005年前后,Internet Explorer毫不费力地在20世纪90年代开启的浏览器大战中获得胜利,至此,浏览器的发展便停滞了。此后有两款浏览器对这种情况发起了挑战:Mozilla Firefox和Google Chrome。Firefox源自Netscape,后者是历史最悠久的浏览器之一。Chrome则有Google撑腰,立刻轻松登上舞台。 这两款浏览器都制订了若干促进JavaScript发展的设计决策。首先是支持万维网联盟(World Wide Web Consortium,W3C)的多标准实现。在DOM、事件处理,以及Ajax问题上,Chrome和Firefox一般都选择遵循并尽可能地实现标准。对程序员而言,这意味着再也不必为Firefox和Chrome分别编写代码了。因为我们过去已经习惯了为IE和其他浏览器各自编码,所以分支代码(branching code)本身倒并不是什么新鲜事物。不过,能够确保这种情况不变得过于复杂,倒是令人颇感欣慰。 要说起标准,Firefox和Chrome联合欧洲计算机制造者协会(European Computer Manufacturer’s Association,ECMA,现写作Ecma)做了大量的工作。Ecma是负责监管JavaScrpt的标准团体。(严格说来,Ecma负责监管的是ECMAScript标准,原因在于JavaScript是Oracle的商标,而且……好吧,我们其实根本不在意这些细节,不是吗?今后我们将使用JavaScript指代这门语言,使用ECMAScript指代JavaScript实现所要遵循的标准。)和IE一样,ECMAScript标准的发展也陷入了停滞。随着真正的浏览器战争爆发,ECMAScript标准再次启程。ECMAScript 5(2009年)加入了诸多变化,自该标准的上一版之后,这足足花了10年的时间。工作小组同样充满了活力,干劲十足,于2011年发布了版本5.1。目前该标准的版本6和版本7已经取得了显著的进展,前景一片光明。 公平地讲,Chrome同样推动了JavaScript的革新。它的JavaScript引擎V8在2008年Chrome初出茅庐之际扮演了极其重要的角色。Chrome团队打造的这款JavaScript引擎要远快于绝大多数同类产品,而且在后续版本中这也一直是团队的最高目标。V8引擎的表现令人印象深刻,它实际上已经成为了Node.js的核心,后者是一款独立于浏览器的JavaScript解释器。Node.js原本是打算作为一个可以将JavaScript作为主要应用开发语言的服务器,如今它已经成为了一个能够运行各种基于JavaScript的应用的灵活平台。 让我们把话题转回Chrome。Google在浏览器领域引入的另一个重大创新就是“快速迭代更新”(evergreen application)的概念。Chrome默认为用户自动更新浏览器,用户无需再下载独立的浏览器安装包进行更新。尽管这种方法有时会给企业带来麻烦,但对于上网冲浪的普通消费者(也就是个人用户)而言可算得上是一份大礼。如果用的是Chrome(以及近几年的Firefox),你根本不需要费事就可以享受到最新的浏览器版本。尽管微软很久以前就通过系统升级(Windows Update)推送安全更新实现了同样的功能,但除非你使用新版本Windows自带的Internet Explorer,否则别指望享受到任何新的浏览器特性。换句话说,IE的更新是一个缓慢的过程,而Chrome和Firefox总是拥有最新最好的特性,同时还非常安全。 在Google携Chrome的各色特性勇往直前之时,其他的浏览器厂商也不甘示弱,迎头赶上,只是有时候使用的手段难免令人发笑,比如Firefox就采用了Chrome的版本编号方式。不过这也使得Mozilla和微软正视了JavaScript引擎。两家浏览器厂商在过去几年中显著改进了各自的JavaScript引擎,尽管Chrome依然保持着令人畏惧的领先优势,但已不再可望而不可及了。 微软最终(基本)放弃了自己经典的“先包围再扩张”(embrace and extend)的哲学,至少就JavaScript而言是这样。在IE9中,微软实现了W3C的事件处理,并对DOM接口以及Ajax API进行了标准化。对于JavaScript的大多数标准特性,我们再也不需要为同一份代码实现两个版本了!(当然了,那些针对遗留浏览器的遗留代码还是有点麻烦……) 这看起来几乎就是一剂灵丹妙药。JavaScript的运行速度比以往都要快,为各种不同的浏览器编写代码也变得更加容易,标准化文档既描述了发展现状又对新特性提供了指引,再加上我们使用的浏览器大多都是最新版本,那现在还有什么可担心的?今后我们又会走向何方呢?
精通JavaScript(第2版)——1.1 JavaScript的历程
书名: 精通JavaScript(第2版)
作者:
出版社: 人民邮电出版社
译者: 门 佳 | 李 伟 | [美] Russ Ferguson
出版年: 2016-9
页数: 168
定价: 45.00元
装帧: 平装
ISBN: 9787115432865