由於parse函數代碼實在過於龐大,我這裡就不一次性貼出源代碼了,大家可以前往(
https://github.com/vuejs/vue/blob/0baa129d4cad44cf1847b0eaf07e95d4c71ab494/src/compiler/parser/index.js#L79)查看源代碼。
我們來總結一下該函數的主要功能:
1、warnOnce 函數(用於提示錯誤)
2、closeElement (處理標籤的結束,匹配</ 開頭)
3、trimEndingWhitespace 刪除結尾的空白節點
4、驗證根容器的合法性
規則如下:
1、標籤名稱不能是 slot 或者 template
2、不能存在 v-for 指令
5、parseHTML 函數(解析html的核心函數),該函數會有單獨的篇章來分析,我們先來說一下 「parseHTML 」 函數的參數,主要有12個參數
1、warn 類型為函數
主要用於錯誤提示
2、expectHTML 類型為布爾值
主要用於判斷出來標籤結束
3、isUnaryTag 類型為布爾值
判斷是否為一元標籤 如:<br/>、<hr /> <input /> <img />等
4、canBeLeftOpenTag 類型為函數
是否為此類標籤:’colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source’
5、shouldDecodeNewlines 類型為布爾值
解碼換行符
6、
shouldDecodeNewlinesForHref 類型為布爾值
解碼href換行符
7、shouldKeepComment 類型為布爾值
是否保留注釋
8、outputSourceRange 類型為布爾值
是否保留匹配範圍(start、end)的位置
9、start 類型為函數
處理匹配的標籤開始
10、end 類型為函數
處理匹配的標籤結束
11、chars 類型為函數
處理匹配的空白標籤
12、comment 類型為函數
處理模板內的注釋標籤
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/209377.html
微信掃一掃
支付寶掃一掃