心血来潮,来写一个模板引擎吧!
功能就不多说了
实现思路
从最简单的开始吧
假设一个模板长这样
<h1><% var world = 'world!'; %> hello <%= world %></h1>
模板转化后应该到这样的:
1 | // 假设输出的结果存放在变量p中 |
总结一下这个过程,其实就只有三条规则:
%>...<%
转换为%>p += '...';<%
, 起始和结束同此, 将内容直接作为输出<%...%>
转换为...;
, 逻辑处理, 直接执行<%=...%>
转换为p += (...);
, 将运算结果作为输出
实现
实现就很简单了把上面的规则写成代码,
1 | tpl.replace(/(\s)+/g, " ") // 主要是为了处理换行 |
然后包装一下
1 | function render (tpl) { |
完成!
测试
1 | // 模板 |
大功告成
当然中间还是遇到了很多问题,不过最终的结果还是非常好的,这个轮子项目已经放在github仓库