Javascript Node.js是否有模板引擎?

Javascript Node.js是否有模板引擎?,javascript,template-engine,node.js,Javascript,Template Engine,Node.js,我正在尝试使用Node.js构建整个web应用程序。是否有一个模板引擎类似于(例如)Django模板引擎或类似的引擎,至少允许您扩展基本模板?如果您正在寻找模板的最低限度方法,您可以查看 一个功能更全面的替代方案是。它有点像你从Django那里得到的东西 您的里程数可能会有所不同-它们是为浏览器Javascript环境而设计的,而不是Node.js。一直都有新的模板引擎 Underline.js为js添加了很多函数式编程支持,并提供了模板 就在今天,我听说了这件事:你试过了吗?如果你试过,请随时

我正在尝试使用Node.js构建整个web应用程序。是否有一个模板引擎类似于(例如)Django模板引擎或类似的引擎,至少允许您扩展基本模板?

如果您正在寻找模板的最低限度方法,您可以查看

一个功能更全面的替代方案是。它有点像你从Django那里得到的东西


您的里程数可能会有所不同-它们是为浏览器Javascript环境而设计的,而不是Node.js。

一直都有新的模板引擎

Underline.js为js添加了很多函数式编程支持,并提供了模板

就在今天,我听说了这件事:

你试过了吗?
如果你试过,请随时发布你在网站上可能遇到的任何问题

虽然它最初是为浏览器设计的,但它与Jaxer和Rhino配合得很好


我还不知道node.js,但如果你能在内存中缓存一些js和函数,速度应该会更惊人。

你应该能够使用mustache.js,如果它不起作用,请将问题发送给我,我会解决,因为我将在node.js中使用它们


我知道它在没有DOM的情况下工作,因为许多CouchDB独立应用程序正在Spidermonkey视图服务器中使用它。

有一个Django模板引擎到JavaScript的端口。然而,它已经很久没有更新了,但它可能仍然有足够的功能

您应该看一看,它的设计明确考虑了node.js的异步特性。它甚至允许在模板内部使用异步代码块

以下是文档中的一个示例:

<html>
  <head>
    <% ctx.hello = "World";  %>
    <title><%= "Hello " + ctx.hello %></title>
  </head>
  <body>

    <h1><%? setTimeout(function () { res.print("Async Header"); res.finish(); }, 2000)  %></h1>
    <p><%? setTimeout(function () { res.print("Body"); res.finish(); }, 1000)  %></p>

  </body>
</html>


我为Simon Willison开发了一个相当完整的Django模板语言端口(node.js的实用程序函数,借用了Django的一些有用概念)

请参阅文档。

也可以尝试。;-)这是我昨天刚刚发布的一个新版本,但我现在使用它有一段时间了,而且它稳定且快速(模板被编译为原生JS函数)


它拥有最好的模板引擎语法和丰富的功能集,尽管它的代码很小(缩小了8.5K)。它有一些指令,允许您引入条件、迭代数组/散列、定义可重用的模板组件等。

如果您喜欢haml,但想要更好地检查node,我还编写了haml.js:)

Google的闭包模板是一个本机JavaScript模板系统,似乎很适合NodeJS。用于集成它们。

haml是node.js的良好选择

haml js

!!! XML
!!! strict
%html{ xmlns: "http://www.w3.org/1999/xhtml" }
  %head
    %title Sample haml template
  %body
    .profile
      .left.column
        #date= print_date()
        #address= current_user.address
      .right.column
        #email= current_user.email
        #bio= current_user.bio
html

<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Sample haml template
</title></head><body><div class="profile"><div class="left column"><div id="date">January 1, 2009
</div><div id="address">Richardson, TX
</div></div><div class="right column"><div id="email">tim@creationix.com
</div><div id="bio">Experienced software professional...
</div></div></div></body></html>

haml模板示例
2009年1月1日
德克萨斯州理查森
tim@creationix.com
经验丰富的软件专业人士。。。

查看节点js模块wiki页面。他们列出了所有支持node.js的节点。

我听说了{dust}

警告:JinJs不再维护。它仍在工作,但与最新版本的express不兼容。

你可以试试使用。它是Jinja的一个端口,是一个非常好的Python模板系统。您可以使用npm安装它,如下所示:

npm install jinjs
在template.tpl中:

I say : "{{ sentence }}"
在template.js中:

jinjs = require('jinjs');
jinjs.registerExtension('.tpl');
tpl = require('./template');
str = tpl.render ({sentence : 'Hello, World!'});
console.log(str);
输出将是:

I say : "Hello, World!"

我们正在积极开发,很快就会有一份好的文档。

您可以使用DojoToolkit.org的dojox.dtl。请注意,Dojo1.7可以很好地在NodeJ上运行,并作为服务器端库执行。如果你感兴趣,我可以给你一个简单的例子。

试试node.js的类似于asp.net mvc的razor语法

!!! XML
!!! strict
%html{ xmlns: "http://www.w3.org/1999/xhtml" }
  %head
    %title Sample haml template
  %body
    .profile
      .left.column
        #date= print_date()
        #address= current_user.address
      .right.column
        #email= current_user.email
        #bio= current_user.bio

还包括结帐:


//示例
var tmpl=vash.compile('
@model.a,@model.b
'); var html=tmpl({“a”:“hello”,“b”:“world”}); res.write(html);
我从Twitter上找到了Tim O'Reilly在他的网站上推荐的。我没有最佳实践,但我信任推特和O'Reilly。你应该试试……

这是对几种发动机的一个很好的评估

我将Twig与Symfony一起使用,现在我正在涉猎node.js,因此我正在研究和,如果您使用django,您可能会喜欢它。

老实说,node.js最好、最简单的模板引擎是(IMHO)Plates()。您可能还想查看Node.js()的Flatiron MVC框架。

您可以尝试(它的灵感来自焊接/板材):

例如:

{ post:
  { title: "Next generation templating: Start shaving!"
  , text: "TL;DR You should really check out beardless!"
  , comments:
    [ {text: "Hey cool!"}
    , {text: "Really gotta check that out..."}  ]
  }
}
您的模板:

<h1 data-template="post.title"></h1>
<p data-template="post.text"></p>
<div>
  <div data-template="post.comments" class="comment">
    <p data-template="post.comments.text"></p>
  </div>
</div>

输出:

<h1>Next generation templating: Start shaving!</h1>
<p>TL;DR You should really check out beardless!</p>
<div>
  <div class="comment">
    <p>Hey cool!</p>
  </div>
  <div class="comment">
    <p>Really gotta check that out...</p>
  </div>
</div>
下一代模板:开始剃须!
TL;医生,你真的应该检查一下无须

嘿,酷

真的要检查一下


我刚刚发现JavaScript V8引擎比Ruby、PHP和Python更快。对于动态语言来说,速度惊人。不过比Java和C#慢。@Nosredna:Java怎么可能比任何东西都快呢?!)@丹尼尔java实际上很快,在Debian的射击基准测试中击败了艾达、C和C++,但是任何人都不关心语法、生产力和其他性能,而应该使用(Web框架C)NoDE.JS不是语言。这完全是关于设计和js处理IO的方式,这是非常棒的。如果重新设计ruby的IO库,可以让ruby web框架快速运行。很棒的库,我在客户端和node.js工作中都使用它。他们的模板引擎是基于John Resig的JS Micro模板引擎()的,我以前使用过很多次。在使用node.js时,这是你最好的选择。这些支持继承吗?@Nick jinjs似乎支持继承,请参见第一行:node.js不理解DOM。。。纯粹使用DOM,但因为它会生成字符串。这是国际米兰