h5新特性

1、一些语义化标签
header、footer、nav、aside、article、section、hgroup(h1~h6的集合)
document.createElement(‘header’)
2、本地存储
提供了sessionStorage、localStorage和indexedDB加强本地存储,使用之前应该先判断支持情况
if(window.sessionStorage){
}
if(window.localStorage){
}
localStorage与sessionStorage的区别在于后者是基于会话多的,关闭浏览器后存储消失。
localStorage在各浏览器中上限不同,最低的是2.6MB,开发上限基于此(2.6MB)
indexedDB上限是250MB
localStorage是域内安全,也就是同域才可以对其进行操作,可以通过postMessage来解决
3、离线web应用
页面缓存指的是有网络状态下,离线web应用指的是没有网络状态下可以运行应用
if(window.applicationCache){
// 支持离线应用
}
manifest文件是核心,记录着哪些资源文件需要离线应用缓存,要使用manifest,只需要在html标签属性中添加属性
<html manifest="cache.manifest">
4、表单新增功能
以往input中的name和value要随着form表单一起提交,form表单必须包裹input,而现在可以通过input的form属性绑定

         <form id = "testform"><input type = "text" /></form>
现在的用法: <input form=testform />

5、css3提供了更多的选择器
before、after、first-child、nth-child等
6、地理位置
h5提供了Geolocation API访问地理位置,访问方法:
window.navigator.geolocation来实现访问
页面第一次使用这个api需要获得用户许可, watchPosition可以对位置变化事件进行监听

DOM的解析与渲染

dom解析:将网页中所有的html标签生成一个dom tree,也就是生成了一个原始的页面,一点样式也没有,无css修饰
dom渲染:浏览器会把本身默认的样式和用户编写的样式进行整合,形成一个css tree
实质上,它是将 dom tree 和 css tree结合到一起,生成一个 render tree,呈现出一个带有样式的页面
浏览器的不同线程,如下:
1、 GUI渲染线程
2、 js线程
3、 定时器触发线程(setTimeout)
4、 浏览器事件线程(onclick)
5、 http异步线程
应该还会有很多其他的线程
浏览器内包含若干线程,在同一个瞬间,只有一个线程在起作用,它们之间是互斥的
DOM的渲染对应的是GUI渲染进程,js对应的而是js线程,因此dom的渲染与js代码的执行,在同一瞬间只能有一个执行

js----AST(抽象语法树)

它可以做什么呢?
IDE的错误提示、代码格式化、代码高亮、代码补全等
JSLint、JSHint 对代码错误或风格的检查等
webpack、rollup进行代码打包等
CoffeeScript、TypeScript、jsx等转化为原生js

js Parser其实是一个解析器,它是将js源码转化为抽象语法树的解析器
解析过程分为两步:
分词:将整个代码字符串分割成最小语法单元数组
ps:语法单元是被解析语法当中具备实际意义的最小单元,简单的来理解就是自然语言中的词语。
语法分析:在分词的基础上建立分析语法单元之间的关系
js代码中的语法单元主要包括这几类:
关键字、标识符、运算符、数字、字符串、空格、注释、其他。
babel,可以将es2015+版本代码转换为向后兼容的js语法,以便能够运行在当前和旧版本的浏览器或其他环境中,不用为新语法的兼容性考虑~
实际上,babel中的很多功能,都是靠修改 AST实现的
// 暂时没使用过babel,有机会专门写一篇
通过抽象语法树解析,我们可以像童年时拆解玩具一样,透视javascript这台机器的运转,并且重新按着你的意愿来组装
举个例子:拆解简单的add函数

function add(a,b){return a+b;      }

用力拆开,它成了三块:
一个id,就是它的名字,即add
两个params,就是它的参数,即[a,b]
一块body,也就是大括号内的一堆东西
add没办法继续拆下去了,它是一个最基础的identifier(标志)对象,用来作为函数的唯一标志,就像人的姓名一样。

{
name: ‘add’
type: ‘identifier’

}
params继续拆下去,其实是两个identifier组成的数组,之后也无法拆下去
[
{
name:‘a’
type: ‘identifier’

},
{
name: ‘b’
type: ‘identifier’

}
]

继续拆开body
会发现,body其实是一个 BlockStatement(块状域)对象,用来表示是 {return a+b}
打开BlockStatement,里面藏着一个ReturnStatement(Return域)对象,用来表示 return a+b;
继续打开ReturnStatement,里面是一个 BinaryExpression(二项式)对象,用来表示 a+b
接续探索,打开BinaryExpression,分成了三个部分,left, operator, right
{
operator 即+
left里面装的,是identifier对象a
right里面装的,是identifier对象b
}
// 将嵌套的事物进行一层层解析,最后是这么个情况
个人感觉,AST涉及到了代码的转化,不是想象中那么简单的
如果,我们编写的代码是以“平面”的角度去解决问题,那么,你如果想要审视这个问题,就得站在另外一个维度去看待它,也就是从问题本质解决问题。AST便是可以借助的这么一个中间工具
引用文章如下:
https://www.jianshu.com/p/b3762ca713b1 (h5新特性)
https://blog.csdn.net/weixin_34368949/article/details/88001956 (dom&css渲染使用的)
https://segmentfault.com/a/1190000016231512 (AST抽象语法树)

题外话,今日头疼异常,比较早就醒来了。不知道是不是感冒,吃了一粒感康,分两次吃的。中午特别困,躺下去就睡着了,醒来接近3点半。迷迷糊糊去实验室,感觉还在梦境。焦虑却减轻了,大概是健康使我快乐~

h5新特性DOMAST的简单理解相关推荐

  1. html5新特性表单控件,老生常谈h5新特性1:(表单)

    老生常谈h5新特性1:(表单) HTML5新特性 -- 十大新特性 (1)新的语义标签和属性 (2)表单新特性 (3)视频和音频 (4)Canvas绘图 (5)SVG绘图 (6)地理定位 (7)拖放A ...

  2. 前端面试题二:ES6/7/8新特性、性能优化、数据交互、H5新特性

    目录 一.ES6/7/8新特性 二.性能优化 三.数据交互 四.H5新特性 一.ES6/7/8新特性 1.ES6中新增了哪些数据类型? Symbol类型(基本) Set类型(复杂) Map类型(复杂) ...

  3. 前端16天--IFC、BFC、H5新特性、选择器、伪类元素、扩展盒模型、圆角、盒子阴影等--2021/4/21

    前端16天–IFC.BFC.H5新特性–2021/4/21 HTML5是HTML标准的最新演进版本: 1.是一个新的HTML语言版本包含了新的元素.属性和行为. 2.同时包含了一系列可以被用来让web ...

  4. 【面试】面试官:说一说H5新特性

    H5 新特性 1.拖拽释放(Drap and drop) API ondrop拖放是一种常见的特性,即抓取对象以后拖到另一个位置 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放 2.自定义 ...

  5. H5新特性(一)——音视频标签

    H5新特性--音视频标签 大家都有在网页中浏览音频和视频的经历,在HTML5之前,对视频和音频没有一个标准,因此在网页中看到的视频,都是通过第三插件的方式嵌入的,可能是QuickTime,也可能是 R ...

  6. H5新特性有哪些?怎么理解语义化

    H5新增了很多新的特性,这也成了我们面试的时候面试官喜欢问的一个问题,那我们可能在开发的过程中如果没有去关注过那也不是很清楚用到的是不是H5的新特性,下面我们就来讲一下 H5十大新特性 1.语义化标签 ...

  7. H5新特性 - 拖拽属性

    拖拽属性 拖拽属性 H5的新特性 : 是指鼠标点击源对象之后,不松手将其拖拽到目标对象,或半途松手(释放)的过程 拖拽 Drag 源对象: 指定的鼠标点击的一个事物,例如: 一个元素,一个图片等 目标 ...

  8. html5新特性 gps,老生常谈H5新特性:地理定位

    HTML5新特性 1.新的语义标签 2.表单2.0 3.视频和音频 4.Canvas绘图 5.SVG绘图 6.地理定位 7.拖放API 8.WebWorker 9.WebStorage 10.WebS ...

  9. 前端面试html5新特性,前端面试基础-html篇之H5新特性

    h用能境战求道,重件开又是正易里是了些之框5的新特性(目前个人所了解)如求圈分件圈浏第用代是水刚道.的它还下 语义化标签 表单新特性 视频(vi朋不功事做时次功好来多这开制的请一例农在deo)和音频( ...

最新文章

  1. 漫画:什么是公有云、私有云和混合云?
  2. 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | 引入线程安全概念 )
  3. tensorflow就该这么学--5( 神经网络基础)
  4. RAS RC4 AES 加密 MD5
  5. MLP is Best?
  6. php上传多个文件类型,ThinkPHP上传多文件多类型
  7. Java Web整体异常处理
  8. ubuntu之间传文件
  9. 数据科学近3年都应用在哪些领域?
  10. selenium webdirver之ruby-开发ide乱码解决方案
  11. java+垃圾回收器+的功能_JAVA-JVM 垃圾回收器
  12. MySQL授权root
  13. win10卸载电脑管家就蓝屏_卸载电脑管家时为什么蓝屏
  14. QEMU虚拟磁盘资料
  15. ao能连接oracle吗,[转载]使用AO连接ORACLE数据库
  16. mysql 存储类型文本最大长度longtext
  17. 将逻辑分区的空间分给主分区C盘,使用diskgenius,提示需要在dos进行
  18. .NET内存性能分析宝典
  19. XY6762/XY6765/XY8788 如何使用 DCT 工具配置 DWS 文件?
  20. 把照片唱给你听 | 腾讯AI Lab国际领先技术邀你「趣」体验

热门文章

  1. 设计模式_结构型模式学习
  2. 电脑触摸板一碰就黑屏,再碰就亮,过一秒又灭,一闪一闪的;解决方案记录
  3. Django框架设置cookies与获取cookies操作详解
  4. 关于国际化语言I18工具类多语言处理
  5. 前端面试题:vuex是什么?什么时候使用?怎么使用?
  6. vulkan学习_使用vulkan kompute在gpu中进行机器学习和数据处理
  7. 猿玖科技程序员-猿勇强
  8. Oracle把字段包含的空格去除
  9. 工作多年后才明白的.NET底层开发技术
  10. Python导入模块3种方法