使用类似php的语法为node.js创建模板库


Templating library for node.js with php-like syntax

node.js是否有一个库可以用特定的语法"解析"文件的内容?例如,我有一个文件要在node.js服务器上提供:

<!DOCTYPE html>
<html>
<head>...</head>
<body>
    <?node echo Date.getTime(); ?> <!-- or something like this, I hope you have got the idea -->
</body>
</html>

然后它返回一个HTML文档:

<!DOCTYPE html>
<html>
<head>...</head>
<body>
    08.08.2013 <!-- or something like this, I hope you have got the idea -->
</body>
</html>

我不知道如何更准确地描述它,比如PHP for Apache服务器,但用于node.js服务器。

只需使用CGI节点。它允许你在任何网络主机上运行Node.js,就像PHP:一样

<html>
    <head>
    </head>
    <body>
        <? var helloWorld = 'Hello World!'; ?>
        <?= helloWorld ?>
    <br>
    <b>I can count to 10: </b>
    <? for (var index = 0; index <= 10; index++) { ?>
        <?= index ?>
    <? } ?>
    </body>
</html>

EJS模板看起来和感觉都像PHP和ASP,但都是纯JS:https://ejs.co/

他们的例子:

<ul>
<% for(var i=0; i<supplies.length; i++) {%>
   <li><%= supplies[i] %></li>
<% } %>
</ul>

您谈论的是模板引擎。有很多可能性,其中最受欢迎的是

http://jade-lang.com/

它与Express框架集成时特别好。你可以在这里找到一个模板引擎的大列表:

https://github.com/joyent/node/wiki/modules#wiki-模板化

您可以使用Undercore模板。它可以让你写这样的模板:

<ul>
<% _.each(people, function(name) { %>
  <li><%= name %></li>
<% }); %>
</ul>

我可能会迟到一点,但我昨天做了这样的工作,它的工作原理与php惊人地相似。例如,你可以做之类的事情

<?j
include_once("header.jhtml");
for(var i = 0; i < 10; i++) { ?>
<span id="<?j print(i) ?>">
<?j}
print($.req.url);
include("footer.jhtml");
?>

它将像php中一样包括头文件(如果以前没有包括),然后打印id为0到9的10个跨度,然后打印请求url($是包括请求数据的上下文变量),然后包括页脚文件。所以它基本上是php和js语法。我可能会在这个周末在npm上提供它。不过,正如我所说,它还处于早期阶段,我为此工作了一天。