因为工作需要兼练习,写了一个简单的Javascript模版引擎:https://github.com/fillano/fit
可以在伺服器端及浏览器端使用(工作上是在浏览器端使用),透过npm或bower都可以安装:
用npm安装的话:
npm install fit-template
用bower安装的话:
bower install fit-template
因为工作需求简单,所以功能也非常简单,只支援赋值、foreach迴圈及if/else逻辑分支三种语法。没有外部依赖,档案也蛮小,压缩后是3.7KB。
一个简单的hello world範例:
var fit = require('fit-template');var data = {name: 'fillano'};var template = '<div>Hello {{=$name}}</div>';var render = fit(template);console.log(render(data));//显示:<div>Hello fillano</div>
其实一行也可以:
console.log(require('fit-template')('<div>Hello {{=$name}}</div>')({name: 'hildegard'}));//显示:<div>Hello hildegard</div>
至于是要练习什么...
之前看过Douglas Crockford在美丽程式这本书中写了一个「由上而下运算子优先权」的剖析器,引发了一点兴趣,所以也想有机会时练习写一个剖析器。这个模版引擎是用简单的递迴下降剖析器的方式实作,这样要解决迴圈跟逻辑分支嵌套(Nested)好像比较容易。文组出来的逻辑比较差XD