2014-10-22 68 views
0

我来自一个PHP背景,我已经使用了CakePHP和Laravel等框架,并且在所有这些框架中使用布局和视图都很容易。 ,并利用这些模板引擎PHP内的可能性提供了一种方法做的事情,如:For循环和布局支持express.js模板引擎

<?php for($i=0; $i<1000; $i++){ ?> 
    <td>demo</td> 
<? } ?> 

现在,随着节点和express.js开始我发现模板引擎似乎很基本在这里。我试过HJS,霍根,痛饮,小胡子,车把......他们都同时提供:

  • 布局支持(模板和视图)
  • 办法做到循环像我之前命名。

我错过了什么吗?我是否要求太多? 你会推荐我哪一个?

+0

你试过** EJS **吗? – 2014-10-22 11:13:18

+0

@ArunGhosh nop,但它似乎[它需要另一个插件的布局支持](https://github.com/Soarez/express-ejs-layouts),对不对? – Alvaro 2014-10-22 11:15:10

+0

看一看http://www.embeddedjs.com/ – 2014-10-22 11:16:39

回答

2

很多JavaScript的模板引擎都采用哲学观点,认为在逻辑和表示之间强制执行相当严格的分离会更好,这意味着模板中允许的代码/逻辑的复杂性是有意限制的。有关此主题的快速概述,请参阅http://blog.startifact.com/posts/older/the-new-hot-thing-in-web-development-client-side-templating-languages.html(这是关于客户端模板的,但由于它是Javascript,因此很多相同的模板语言是在node.js/Express中流行的模板语言)。这种无逻辑模板的思想也存在于PHP世界中,但它并不常见。

有关此主题的更多学术性处理,请参阅此论文:http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf。 (作者还是一个流行的Java模板引擎的作者,名为StringTemplate。)作者提出了很多优点,总的来说,我赞同无逻辑模板的概念,但有时它可能不方便,而且我发现自己更多的围绕它...看到this link进一步考虑。显然,也有人希望能够从模板中获得任何东西(就像你可以在PHP中一样),并相信依靠程序员的自我约束不要在视图中放置太多代码是很好的,这是模板的地方像EJS这样的引擎进来。

说了这么多,重要的是要注意,你想要在Handlebars(这是一种“无逻辑”的语言)中可能实现的,也可能是你尝试过的许多其他的。要在Handlebars中执行此操作,您需要创建一个自定义助手。这可能是你在找什么:

https://www.npmjs.org/package/handlebars-helper-repeat

用法示例:

{{#repeat 10}} 
    {{> button }} 
{{/repeat}} 

您还可以扩展它能够支持参数能够控制的起始编号或增量尽管这可能会在准备模板数据的同时进入JS代码中更好的逻辑(根据Handlebars哲学)。

关于布局,Handlebars(这是我最熟悉的模板引擎)中最接近的部分是partials。这个链接提供了一个很好的介绍:http://blog.teamtreehouse.com/handlebars-js-part-2-partials-and-helpers

就我个人而言,我是一个叫做Derby的真棒框架(建立在Express上)模板语言的忠实粉丝。它的模板语言与Handlebars类似,但带有几个方便的扩展 - 足以让它更方便使用,而不会让太多的逻辑陷入模板。不幸的是,我不认为它有一个独立的版本(即你必须使用完整的Derby框架),但是你可以在Handlebars中创建自定义助手以达到类似的效果。

+0

P.S. Derby支持布局,并且还支持[组件](http://derbyjs.com/0.5/views#components)。 – 2014-10-22 12:43:28

+0

如果您也有兴趣考虑客户端解决方案,那么您可能还想查看[AngularJS](https://angularjs.org/),如果您还没有(但我最喜欢的还是德比) 。 – 2014-10-22 12:50:17