餘爲前端菜鳥,感姿式水平匱乏,難觀前端之大局。遂決定循前端知識之脈絡,以興趣爲引,輔以幾分堅持,望於己能解惑致知、於同道能助力一二,豈不美哉。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,不是三言兩語能說清,因此請轉到 這裏
雖發表於此,卻畢竟爲一人之言,又是每日學有所得之筆記,內容未必詳實,看官老爺們還望海涵。