模板解析三部曲
- parse 将模板解析成ast语法树
- transform 将语法树进行一些预处理
- genarater 生成最终代码
parse
分别对不同类型的字符串取开始和结束位置进行截取,并删除源字符串,直到源字符串长度变为0为止,以此规则分别对dom节点(以尖角号开始<)、表达式(以{{开始)、文本等进行依次进行词法解析,
parseText
文本字符串解析,根据结尾是否是<或者是{{来判断结尾的位置,哪个结尾的位置靠前就使用哪个索引来截取
parseInterpolation
处理表达式信息
parseElement
处理元素信息
正则:
获取标签名div:/^<\/?([a-z][^\t\r\n\f />]*)/i.exec('<div></div>')[1]