戏说HTML5

  • 时间:2018-06-18 23:00 作者:云汉电子社区 来源:云汉电子社区 阅读:143
  • 扫一扫,手机访问
摘要:假如有非技术人员问你,HTML5是什么,你会怎样答复?新的HTML规范。。。给浏览器提供了牛逼可以力,干以前不可以干的事。。。(确切地说应该是给浏览器规定了许多新的接口标准,要求浏览器实现牛逼的功可以。。。 这里感谢红枫一叶)给浏览器暴露了许多新的接口。。。加了很多新的效果。。。问的人其实并不明白他

假如有非技术人员问你,HTML5是什么,你会怎样答复?

新的HTML规范。。。

给浏览器提供了牛逼可以力,干以前不可以干的事。。。(确切地说应该是给浏览器规定了许多新的接口标准,要求浏览器实现牛逼的功可以。。。 这里感谢红枫一叶)

给浏览器暴露了许多新的接口。。。

加了很多新的效果。。。

问的人其实并不明白他想问的真正问题,答复的人貌似明白,但又如同少了点什么。牛逼的可以力、新的接口、炫酷的效果,首先答复的人自己就是晕晕乎乎。什么是HTML、什么是CSS、什么是DOM、什么是JavaScript,大部分的前台开发每天都在使用这些,但很少会有人去思考一下他们之间的关系。

首先,HTML的全称是超文本标记语言,是一种标记形式的计算机语言。将这种标记语言给专门的解析器,就可以够解析出肯定的界面效果。浏览器就是专门解析这种标记语言的解析器。我们说他最终的效果是在屏幕上展现出特定的界面,那么浏览器一定要把一个个的标记转换成内部的一种数据结构,这种数据结构便是DOM元素。比方,一个标签在浏览器内部的世界中就是一个HTMLAnchorElement类型的一个实例。

一个HTML文件就好比使用超文本标记语言写的一篇文章,文章通常是有结构的,在浏览器眼里它就是DOM。DOM形容了一系列层次化的节点树。(但这时候的DOM还是存在于浏览器内部是C++语言编写的)

随着历史的发展,当人们不在满足简单的显示文本,对于某些文本需要特殊强调或者者给增加特殊格式的需求,慢慢的冒了出来。面对人们需要控制显示效果的需求,最先想到的也最简单的方式就是加标记。加少量样式控制的标记。这时候就出现了像

这种样式控制的标记。但是这样一来,所有的标记就会分为两大类:一种是说我是什么,一种是说我怎样显示。这还不是大问题,标记简单,但是浏览器要解析标记可就不那么简单了。想一想,这样干的话DOM也就要分成两大类,一类属于形容元素的DOM节点,一类属于形容显示效果的DOM节点。一个DOM节点可可以代表一个元素,也可可以是代表一种显示效果。怎样看都觉得别扭呀。

最后人们决定废弃样式标签,给元素标签增加一个style特性,style特性控制元素的样式(最初的样式公告语法一定很简单)。原来的样式标签的特性,现在变成了样式特性的语法,样式标记变成了样式特性。这样逻辑上就清晰多了。那么问题来了:

一篇文章假如修辞过多,必然会引起读者的反感。假如把元素和显示效果都放在一个文件中,必然不利于阅读。

假如有10个元素都需要一个效果,是不是要把一个style重复写十遍呢

父元素的设置效果对子元素有没有影响,让不让拼爹

。。。。。。。。。

相似的问题一定有很多,所以出来了CSS,层叠样式表,带来了css规则、css选择器、css公告、css属性等,这样以来就处理了以上痛点。标记语言这层处理了,但是浏览器就不可以干坐着玩耍了,必然得提供支持。所以浏览器来解析一个静态html文件时,遍历整个html文档生成DOM树,当所有样式资源加载完毕后,浏览器开始构建呈现树。呈现树就是根据一系列css公告,经历了层叠之后,来确定一个个个DOM元素应该怎样绘制。这时候其实页面上还没有显示任何界面,渲染树也是浏览器内存里面的一种数据结构。渲染树完成之后,开始进行布局,这就好比已经知道一个矩形的宽高,现在要在画布量一量该画在哪,具体占多大地方。这个过程完了之后就是绘制的过程,而后我们便有了我们看到的显示界面了。

给标记加点效果的问题处理了,历史的车轮又开始前进了。慢慢的人们不再满足简单的显示效果,人们希望来点交互。那个时候写HTML的大部分并不懂软件开发,开玩笑嘛,我一写活动页的你让我使用C++?C++干这事确实是高射炮打蚊子——大材小使用。那正规军不屑干的事就交给游击队吧,这时候网景公司开发出了JavaScript语言,那时候的JavaScript根本没有现在这么火,一土鳖脚本语言,哪像现在这么牛逼哄哄统一宇宙。

JavaScript本是运行在浏览器的语言,HTML文本是静态的,不可可以让JavaScript修改静态文件,但能跟浏览器内部打交道。可是这个时候的DOM并不是今天的DOM,他们是C++对象,要么把JavaScript转换成C++指令操作这些C++对象,要么把这些C++对象包装成JavaScript原生对象。历史选择了后者,这时候也就标志着现代DOM的正式诞生。不过历史有时候会出现倒退,历史上总会出现几个奇葩,比方IE,IE奇葩他全家,包括Edge!

马克思是个江湖骗子,但恩格斯是个好同志。自然辩证法与历史唯物主义是好东西。从历史的角度我们能看到。CSS、DOM、JavaScript的出现于发展最终的源头都在HTML,超文本标记语言。人们对web的需求最终都汇集在HTML上。所以只需历史产生新的需求,最终的变化都首先发生在HTML规范上。

当交互性不可以在满足人们需求时,web迎来了新的需求:webapp。要迎合新的需求,首先要改变的就是HTML规范,这个时候已有的HTML4.0,已经无法满足人们日益增长的需求,所以HTML5迎着历史的需求,经过八年的艰苦努力,终于在2014年正式定稿!HTML5一定是要加入新标签,然对于传统HTML而言,HTML5算是一个叛逆。所有之前的版本对于JavaScript接口的形容都不过三言两语,主要篇幅都使用于定义标记,与JavaScript相关内容一概交由DOM规范去定义。而HTML5规范,则围绕着如何用新添加标记定义了大量JavaScript API(所以其中有少量API是与DOM重叠,定义了浏览器应该支持的DOM扩展,由此能看到HTML5也必定不是HTML的最终版)。

后记—— 本文只是一个旁观者以线性的方式来翻阅HTML的发展史,但历史更像是晴空上忽然的晴天霹雳,一声过后,有人哀嚎遍野,有人高歌入云。以此纪念曾红极一时的Silverlight、Flex,以此纪念广大一线开发者活到老学到老的不懈精神、曾经消耗的精力、曾经逝去的青春。

最新电子行业资讯、教程以及开发板样片申请,请关注“云汉电子社区”官方微信公众号ickeybbs,或者者登录云汉电子社区官方网站(bbs.ickey.cn);

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】什么是Web?零基础能不能学Web前端开发?(2019-07-19 07:04)
【网页前端|HTML】为什么学Web前端?选择Web前端理由(2019-07-17 20:28)
【网页前端|JS】Java面经-百度新入职老哥整理近半年学习经验,面试刷题路线!(2019-07-16 22:16)
【网页前端|HTML】最全面的前端开发指南(2019-07-15 12:57)
【系统环境|数据库】零基础如何快速学好大数据?(2019-06-29 12:27)
【系统环境|Linux】零基础如何学好大数据?必备需要学习知识(2019-06-18 11:54)
【系统环境|】Hadoop环境中管理大数据存储八大技巧(2019-06-15 11:01)
【系统环境|服务器应用】现在国内IT行业是不是程序员过多了?(2019-06-11 06:34)
【系统环境|服务器应用】新贵 Flutter(2) 自己设置 Widget(2019-06-11 06:34)
【系统环境|服务器应用】Android完整知识体系路线(菜鸟-资深-大牛必进之路)(2019-06-11 06:34)