js模板的应用
最近在工作中主要用到的模板是mustache, 这里非常想吐槽一下这个模板的设计之奇葩!! 于是就对模板这个东西稍稍研究了一下.
以前也研究过一点js的模板, 大部分的功能简单的前端模板都是采用全局替换的方法和with语句, 通过new Function来实现的, 并且采用js的原生语法, 其实这只是特别简单的处理方法, 以前我对模板的理解也仅仅到此.
一个真正的模板不应该只是全局的替换, 而是应该包括了语法分析, 解析,最后动态编译成编程语言. 对应在程序中大概是通过lexer语法分析器把模板转换成Token流, 再使用parser使用token流生成对应的node节点, 这个node节点是可以转换成ast抽象语法树的, 最后在编译成编程语言, 这样一个流程.
对于JS来说, 所有模板的在最后都会通过new Function生成方法, 这使我对模板的加载有了一个新的思路, 是否可以把模板以script的形式当成一个js文件发布, 这样便可以通过jsonp的形式去载入模板. 再进一步说, 甚至可以通过amd或者commonjs规范的define和require来管理编译好了之后的模板呢
浙公网安备 33010602011771号