新写的一款模板引擎,还处于测试阶段,欢迎添砖加瓦~
至于说为什么是“终结者”,因为个人觉得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 欢迎讨论!
建议去看看swig,连宏都有,基本上swig就够用了,可惜的是作者不再维护了,但目前的功能用起来没任何缺陷,楼主要是能实现跟swig一样的功能或者更多并长期维护就更好了
@zhengnz 功能是源自需求的,小而简单的东西,能满足需求就好,就一个网页而已,就能有几个人要用到宏呢? 个人看法。。
- https://github.com/magicdawn/ract 建设中
- https://github.com/magicdawn/razor-tmpl 准备重写
- https://github.com/magicdawn/ractive-engine 玩具, 用的 ractive.js
- https://github.com/magicdawn/nodebars 玩具, 用的 handlebars …
不要又想搞个大新闻。。动不动就下一代xxxx,xxxx终结者,终极xxx解决方案,你们哪,有一点好,一有点东西比谁发github都快,这样不行的