Vue 深入学习 1—mustache 模板引擎原理
mustache 是 “胡子”的意思,因为它的嵌入标记 {{ }} 旋转过来很像胡子,Vue 中的 {{ }} 语法也引用了 mustache,这也是我深入学习的目的。
1、原始 js 方式使 数据 变为视图
复制代码
2、mustache 的底层原理
要实现这样的:
复制代码
实现方式:Mustache.render(templateStr, data); templateStr 模板字符串,data 数据,render 返回填充后 dom 字符串。
实现原理:第①步:将模板字符串编译成 tokens 形式,第②步:将 tokens 与数据结合,解析成 dom 字符串。
2、什么是 tokens?
JS 的嵌套数组,模板字符串的 JS 表示形式。
模板字符串:<h1>我买了一辆{{thing}},{{money}}W</h1>
转换成下面的 tokens
复制代码
实现 tokens 思路:用到了《数据结构》中栈的原理,遇到 #
号进栈,遇到 /
线出栈; #
号标记的 tokens,需要递归处理它的下标为 2 的小数组。遍历传入的 tokens 的每一个 token,遇到第一项是 # 和 / 的分别做处理,其余的做一个默认处理。大致思路是当遍历到的 token 的第一项为 # 时,就把直至遇到配套的 / 之前,遍历到的每一个 token 都放入一个容器(collector)中,把这个容器放入当前 token 里作为第 3 项元素。
复制代码
版权声明: 本文为 InfoQ 作者【魁首】的原创文章。
原文链接:【http://xie.infoq.cn/article/3de405f225b65d6e6351bbcc8】。文章转载请联系作者。
评论