前端笔记 Front-end Dev Engineer

HTML5背景知识

2016-10-30

HTML(Hypertext Markup Language,超文本标记语言)诞生于20世纪90年代初。到现如今可以被称为第五代HTML,简称HTML5.

HTML的历史

关于HTML的发展史,详见https://zh.wikipedia.org/wiki/HTML
本文只讲述其中关键性转折点与当前发展趋势,旨在让读者,明白为何HTML5笑到了最后。

JavaScript登场

JavaScript语言(一直有人纠结js与java的关系,其实他们没有关系,一定要说关系,那就是雷锋与雷峰塔的关系)出自一家名为网景的公司。它内嵌在Web浏览器中,是客户端脚本程序。使得原本的HTML开始变得丰富。
JavaScript并非HTML规范核心的组成部分,然而现代(2016年)浏览器、HTML、JS之间的关系紧密相连,以至于HTML5规范假定可以使用JavaScript,而且要想使用HTML5中新增的一些最为引人注目的特性,也需要用到JavaScript。

浏览器战争

浏览器第一次战争,发生在1994-1998年之间,由微软与网景公司展开。它们各自在自己的浏览器中添加各种特性作为竞争手段。由此,引发我们前端的一大后遗症————兼容。最终,微软凭借自身操作系统内置IE浏览器获胜,尽管这一招后来被认定违反垄断法,但是最终还是让网景垮台,IE独霸天下长达十余年。(这也就是为何国内的机构网站都是只支持IE,并且是IE8以下浏览器)

浏览器第二次战争,发生在2004-2016年之间。起因是当微软在2001年,完成IE6之后,宣布不再开发新的浏览器,连开发团队都解散了。2003年,苹果开始研发自己的safari浏览器,后来在mac系统中代替了Internet Explorer for Mac,在2007年时,发布了pc版。到了2004年,当时网景公司已经垮台,索性把代码开源,组成了Mozilla基金会,开发了firefox浏览器,甚至一度占有20%以上的市场份额,但是始终无法动摇IE的地位。浏览器战争愈演愈烈,微软也坐不住了,2006年,开始重新组建团队,着手研发IE7,紧随其后2008年,推出了IE8。到2008年,谷歌公司也参战了,推出了基于苹果的webkit内核的chrome浏览器。从此一发不可收拾,在2013年-2014年期间超越IE浏览器,成为世界第一浏览器(国内大约是2016年才超越IE的)。2012年,苹果不在开发pc版safari,2013年,小众浏览器opera改用webkit内核, 2016年,微软宣布不再维护IE浏览器,同时,Mozilla同时也宣布,兼容webkit前缀的css。至此,第二次浏览器战争终结,以chrome的webkit内核取得了胜利。(国内前端还是比较辛苦的,直到如今,2016年了,政府、教育、机关,还要考虑IE6/7浏览器,幸亏2015年的时候,阿里巴巴集团站出来对IE6/7说No,终于,主流商业网站可以向下只兼容到IE8,新兴创业公司基本上只兼容到IE9/11,特别是面向IT,技术人员的网站,甚至直接就不再兼容IE浏览器了)

移动浏览器大战,随着智能手机的兴起,移动浏览器也开始了战争,iphone的诞生,敲响了flash技术的丧钟,宣告了xhtml的失败,促使了HTML5的崛起。移动端的操作系统进行大战之后,2016年的今天,就只剩下IOS与安卓 两强争霸,以及半死不活的wp(在平板电脑领域,微软联合因特尔的win10系统,有后来者居上的感觉,国内寨版清一色的windows/Android双系统)。目前看来(2016年),随着Android的占有率越来越大,chrome也迟早统一移动端(采用chrome内核的微信X5浏览器,QQ浏览器,UC浏览器,我都算是chrome阵营的)。

无论浏览器谁输谁嬴,HTML标准都是严重滞后,形同虚设,基本都是既成事实,然后再归纳为标准。以厂商联合,推崇HTML5的WHATWG组织与支持XHTML的W3C标准组织一度矛盾不可调和,最终,还是HTML5获得了最终胜利,WHATWG与W3C共同制定HTML5标准,但是2012年,WHATWG与W3C再次应为理念不合,分道扬镳,从此WHATWG组织持续性的维护HTML5标准,而W3C组织,则按时间结点,截取WHATWG组织修订的HTML5标准,加以修改分离,于2014年,定制并发布出HTML5.0标准,然后,又截取一个时间点,归纳整理为HTML5.1,在2016年9月,正式发布。(WHATWG的h5标准和w3c的标准,大体上一致的,但是部分标准还是有点区别的,但是我们还是以WHATWG组织为准,应为,现在主流浏览器都是采取WHATWG组织的标准,对于W3C组织,只能呵呵一下了。)

插件称雄

插件是web世界的“益虫”。他们可以提供一些单用HTML很难实现的高级特性和丰富内容。有些插件特性如此丰富,部署如此普遍,以至于不少网站只提供用于这种插件的内容。Adobe公司的Flash正式这样的一个典型。我经常看到完全使用Flash实现的网站(2010年之后,这类网站逐渐减少,到2016年,flash基本只在视频网站中出现,国外的视频网站,甚至有完全转为HTML5的,chrome浏览器也宣布不在支持flash)。按说这也没什么不妥,不过,这意味着,浏览器与html,除了充当flash容器以外,别无他用了。
浏览器开发商看插件不顺眼,应为他把控制权转移到了插件开发商手中。HTML5的一大改进就是着力于让浏览器直接处理那些原来要使用flash的富内容。苹果和微软是疏远Flash的急先锋。前者IOS不支持Flash,后者在win8的Metro风格的IE中禁用Flash.(win10中也是这样)

HTML语义化标签

HTML标准的早期版本,不太关心将内容的意义与其呈现方式分类。想表示一段文字的重要性,使用一个让文字显示为粗体的HTML元素就行了。吧粗体内容与重要内容关联起来是用用户的事情。这对人类用户来说很容易,却会让自动化工具犯难。自HTML初次亮相以来,对内容进行自动处理日趋重要,人们也越来越致力于分开HTML元素的意义与内容在浏览器中的呈现方式。

发展态势:HTML标准滞后于其使用

制定标准一般都是一个长期过程,像HTML这种应用广泛的技术更是如此。参与方众多,每家都想把新标准往符合自己利益或观点的方向引导。而标准并不是法律,标准制定机构害怕分裂甚于一切。因此,对于未来的特性和改进应当如何,各方经常陷入旷日持久的讨价还价。

负责制定HTML标准的W3C(World Wide Web Consortium,万维网联盟),需要经历冗长的标准制定过程,以至于定制的HTML规范,只是几年前关于web内容的前沿思考,这导致HTML标准的重要性,大大的被削弱,真正的技术革新反而是来自浏览器厂商与插件服务商。(简单的对比就是,HTML标准是浏览器先实现了,然后标准才采纳推广,与之做对比的是,ECMAScript标准是先制定特性,然后浏览器厂商慢慢实现,2015年出的ES6,如果2016年年底了,还有很多特性没有实现)。所以,事实上W3C组织的HTML标准名存实亡,我们跟着WHATWG组织的h5标准走即可。(事实上,我们平时说的HTML5技术,不是单纯指第五代HTML标准,而且包括CSS3,ES6,SVG等等周边一系列技术)

HTML5简介

(未完待续,尽情期待)

日志

2016-10-30 创建,完成HTML5历史


评论

Content