本节书摘来自异步社区《JavaScript核心概念及实践》一书中的第1章,第1.1节,作者:邱俊涛著,更多章节内容可以访问云栖社区“异步社区”公众号查看
第1章 概述
1.1 JavaScript简史
20世纪90年代,在早期的Web站点上,所有的网页内容都是静态的。所谓静态是指除了点击超链接外,你无法通过任何方式同页面进行交互,比如让页面元素接受事件,修改字体等。但是人们又迫切地需要一种方式来打破这个局限,于是到了1996年,网景(Netscape)公司开始研发一种新的语言Mocha,并将其嵌入到自己的浏览器Netscape中。这种语言可以通过操纵DOM(Document Object Model,文档对象模型)来修改页面,并加入了对鼠标事件的支持。Mocha使用了C的语法,但是设计思想上主要从函数式语言Scheme那里获得了灵感。当Netscape 2发布的时候,Mocha被改名为LiveScript,当时可能是想让LiveScript为Web页面注入更多的活力。后来,考虑到这个脚本语言的推广,网景采取了一种宣传策略,将LiveScript更名为JavaScript,目的是为了跟当时非常流行的面向对象语言Java发生暧昧的关系。这种策略显然颇具成效,以至于到现在很多初学者还会为JavaScript和Java的关系而感到困惑。
JavaScript取得成功了之后,确实为页面注入了活力,微软也紧接着开发自己的浏览器脚本语言,一个是基于BASIC语言的VBScript,另一个是跟JavaScript非常类似的Jscript。但是由于JavaScript已经深入人心,所以在随后的版本中,微软的IE几乎是将JavaScript作为一个标准来实现。当然,两者仍然有不兼容的地方。1996年后期,网景向欧洲计算机厂商协会(ECMA)提交了JavaScript的设计,以申请标准化,ECMA去掉了其中的一些实现,提出了ECMA-262标准,并确定JavaScript的正式名字为ECMAScript,但是JavaScript的名字已经深入人心,故本书中仍沿用JavaScript这个名字。
1.1.1 动态网页
Web页面在刚开始的时候,是不能动态修改其内容的。要改变一个页面的内容,需要先对网站上的静态HTML文件进行修改,然后需要刷新浏览器。后来出现的JSP、ASP等服务器端语言可以为页面提供动态的内容,但是如果没有JavaScript则无法在服务器返回之后动态地在前端修改页面,也无法有诸如鼠标移上某页面元素则高亮该元素之类的效果,因此JavaScript的出现大大丰富了页面的表现,提高了用户体验。
而当Ajax流行起来之后,更多的非常绚丽的Web应用涌现了,而且呈越来越多的趋势,如Gmail,Google Map,Google Reader,Remember the milk,Facebook等优秀的Web 2.0应用,都大量使用了JavaScript以及基于JavaScript技术的Ajax。
这些优秀的Web 2.0应用提供动态的内容,客户端可以局部更新页面上的视觉元素,比如对地图的放大/缩小,新邮件到来后的提醒等。用户体验较静态页面得到了很大的提升。事实上,后期的很多应用均建立在B/S架构上,因为HTML构筑UI的成本较桌面开发低。因此基于Web的应用开始占有一定的份额,正在逐步替换C/S架构的桌面应用。
动态网页的好处在于,客户端的负载较小,只需要一个浏览器即可,主要的负担在服务器端,这就节约了客户端的开发成本。但是前端页面正在向着复杂化的方面发展,随着前端的MVC框架的发展(backbone.js,javascriptMVC等),JavaScript正在变得更加复杂,甚至在一些互联网应用中,前端代码的代码量已经和后端的代码量相当。一个典型的模型是:后台服务提供RESTFul形式的API,以提供对资源的所有操作,而前端则完全独立为一个应用程序,仅把后台程序作为数据源。
1.1.2 浏览器之战
1994年网景公司成立,并推出了自己的浏览器的免费版本Netscape,很快就占有了浏览器市场。到了1995年,微软公司开始加入,并很快发布了自己的Internet Explorer 1.0。在随后的几年间,网景和微软公司不停地发布新版本的浏览器,支持更多的新功能。很快,这两者的目标就不是如何做好浏览器,而是在对手擅长的方面压制对方。比如,网景的浏览器Netscape标榜速度快,IE就要开发出比网景更快的浏览器,而对自身的安全漏洞,渲染能力等方面放任自流。这样纯粹为了竞争而竞争,对广大的用户来说无疑是非常不利的事情。但是一直到1997年,网景的浏览器Netscape份额大概在72%,而IE只占到18%。
但是,IE在随后的版本IE4.0的时候开始支持W3C的标准,并且在网页的动态性方面加入了很大的支持。事实上,这时候的网景已经不敌慢慢崛起的微软帝国了,微软利用自己的操作系统Windows,在其中捆绑了IE浏览器,而且完全免费。这样,IE的市场占有率开始超过Netscape。当出现一家独大的场面之后,标准化就显得步履维艰了,开发人员开始只为IE浏览器编写代码,因为不需要在其他任何浏览器上运行,所有的网页都很可能只能在IE下运行,或者只能在IE下效果才可以得到保证。
1998年,网景的Netscape开放了源码,分散在世界各地的开发人员开始贡献代码和补丁,使得这个浏览器变得越来越出色。到了2004年,Firefox,作为这个项目中的一个产品,推出了1.0版本。这个以Mozilla为基础的浏览器才慢慢开始发展。一方面,捆绑在Windows XP系统中的IE6.0漏洞百出,大量的蠕虫病毒都会攻击IE浏览器,而Firefox则没有这方面的问题,安全且高效。因此从2006年到2008年,Firefox的市场占有率开始回升,IE的平均占有率大约为85%,Firefox平均占有率为15%。而某些地区,如在欧洲,Firefox的占有率高达20%。
到了2009年,由于反垄断法及开源项目的影响,Windows 7不再捆绑IE浏览器,这样,用户可以有权利选择自己需要的浏览器,但这并不意味着Firefox胜出,IE落败。事实上,这更促进了其他的浏览器如Safari、Opera、Chrome的发展。
一些“小众”的浏览器正在变得越来越流行,并占据了相当的市场份额,比如Firefox和Chrome,在很多场景下Chrome甚至已经超过了IE的份额。