vue中的模板template無法被瀏覽器解析并渲染烤蜕,因?yàn)檫@不屬于瀏覽器的標(biāo)準(zhǔn)堕担,不是正確的HTML語法翻斟,所有需要將template轉(zhuǎn)化成一個(gè)JavaScript函數(shù),這樣瀏覽器就可以執(zhí)行這一個(gè)函數(shù)并渲染出對(duì)應(yīng)的HTML元素苞尝,就可以讓視圖跑起來了,這一個(gè)轉(zhuǎn)化的過程宦芦,就成為模板編譯宙址。
模板編譯又分三個(gè)階段,解析parse调卑,優(yōu)化optimize抡砂,生成generate大咱,最終生成可執(zhí)行函數(shù)render。
parse階段:使用大量的正則表達(dá)式對(duì)template字符串進(jìn)行解析注益,將標(biāo)簽碴巾、指令、屬性等轉(zhuǎn)化為抽象語法樹AST丑搔。
optimize階段:遍歷AST厦瓢,找到其中的一些靜態(tài)節(jié)點(diǎn)并進(jìn)行標(biāo)記,方便在頁面重渲染的時(shí)候進(jìn)行diff比較時(shí)啤月,直接跳過這一些靜態(tài)節(jié)點(diǎn)煮仇,優(yōu)化runtime的性能。
generate階段:將最終的AST轉(zhuǎn)化為render函數(shù)字符串谎仲。