新写的一款模板引擎,还处于测试阶段,欢迎添砖加瓦~
至于说为什么是“终结者”,因为个人觉得Saker并没什么太大缺陷,不像别的主流模板引擎那样往往都有这样那样的问题难以服众,比如Pug,反对的会说需要专门学习,设计师传个HTML给我我还得要HTML To Pug,这什么跟什么啊。。比如ejs,看到这<%>的ASP时代的写法就直接pass了。。而Handlebars的无逻辑模板设计,连最简单的
{{#if code === 1 }}
都没法写,还得专门搞个啥helper。。。 于是,Saker应运而生~
先贴段模板代码:
<h2>Name List</h2>
<article>
@if(code === 1) {
<ul>
@{
data.forEach(function(person) {
<li class="@(person.gender === 'female' ? 'pink' : '')">
<a href="/details/@person.id">@person.name</a>
</li>
});
}
</ul>
} else {
<p>Sorry, no data!</p>
}
</article>
如果你有了解或者就是使用过其他的模板引擎,我相信你应该很容易发现这段模板代码的优点——至少是外在的:
- 学习成本低,不像Pug那样完全创造了新的语言;
- 结构非常清晰,不像ejs那样各种<%>,与HTML标签的<%>混在一起很难看,而且<%>的前后匹配不符合一般思维,而Saker采用的就是JavaScript语言的小括号和大括号;
- 除原始HTML之外的代码量非常少,仅需要 ‘@’,’{’, ‘}’ 等,后端JavaScript和前端HTML可以混写,引擎会智能判断这是js还是HTML;
- 模板完全支持表达式和复杂逻辑(因为采用的就是JavaScript),相信实际项目中使用过Handlebars的一定有所感触。。。
GitHub地址:https://github.com/eshengsky/saker欢迎讨论!