余为前端菜鸟,感姿式水平匮乏,难观前端之大局。遂决定循前端知识之脉络,以兴趣为引,辅以几分坚持,望于己能解惑致知、于同道能助力一二,岂不美哉。css
本系列代码及文档均在 此处html
// taobao主页
<link rel="dns-prefetch" href="//g.alicdn.com" />
<link rel="dns-prefetch" href="//img.alicdn.com" />
复制代码
渲染引擎负责解析html和css,将css规则应用到html标签上,并将html渲染为页面上具体的dom内容前端
页面元素位置变化将致使重排和重绘(即布局和绘制阶段从新渲染),位置不变可是显示样式变化则会致使重绘。从新渲染的代价比较大,因此应劲量避免重排,减小重绘。git
二者在渲染引擎部分很相似,但也有区别。前者的css解析是在html解析完生成内容sink以后进行的,结合构建的树叫作frame tree,后者css解析和html解析能够认为是并行的。github
html解析web
从html文本标签通过词法分析->parse成dom对象,每一个标签中的每一个元素在解析后对应都有一个原始类型后端
let element = document.getElementById('div')
let type = Object.prototype.toString.call(element).slice(8, -1)
console.log(type)
// HTMLDivElement
复制代码
dom元素标签是文本化的html标识,dom元素对象是一个带有父子关系的树形对象api
css解析跨域
css文件被解析成一个CSSStyleSheet对象,该对象内存在多个CSSStyleRule,每一个rule包含有选择器信息和声明对象(样式信息)浏览器
render tree
生成render tree的时候会遍历dom树的节点,为每一个节点找到css rule并根据优先级(老生常谈的权重判断方式)将多条rule合并生成最终该节点的样式信息添加到render tree上。
cache-control/expire 前者是相对时间,后者是绝对时间
// 前端设置
<meta http-equiv="Cache-Control" content="max-age=7200" />
<meta http-equiv="Expires" content="Mon, 16 Jul 2018 23:00:00 GMT" />
复制代码
Etag和Last-Modified是返回头中的信息,当本地缓存失效时会将这些信息一块儿发送至服务端进行对比
服务端进行决策是否有更新,返回200或者304
getItem
, setItem
, removeItem
, clear
basics
<key>=<value>
的形式document.cookie='name=123;expires=date;path=path;domain=domain;secure'
复制代码
session cookie和持久性cookie
前者生命周期为浏览器会话期间,保存在内存中,后者通常会设置过时时间,保存在硬盘上,到期后才会被清空失效
HttpOnly属性
设置了HttpOnly的cookie只能经过请求头发送到服务端进行读写操做,避免了被前端js修改,保证了服务端验证cookie的安全性
操做
document.cookie = 'name=123' // add
document.cookie = 'name=1234' // edit
document.cookie = 'name=1234;expires=xxxx' // expires为过去时间,则delete
复制代码
在客户端进行数据存储,适用场景不是不少,也存在一些安全问题,且行且看
这部分涉及到service worker,不是三言两语能说清,因此请转到 这里
虽发表于此,却毕竟为一人之言,又是每日学有所得之笔记,内容未必详实,看官老爷们还望海涵。