最简单的node.js + nunjucks示例

时间:2015-06-22 11:22:44

标签: node.js nunjucks

可能永远不会使用node.js或Nunjucks进行任何真正的开发,但现在出于某种原因需要:

  • 使用Nunjucks
  • 将一些简单模板预编译为javascript
  • node.js
  • 下运行预编译模板

我做了:

  • 已安装node.jsnpm(例如有nodenpm命令)
  • mkdir njtest && cd njtest
  • 使用npm install nunjucks安装了nunjucks(获得node_modules/nunjucks目录)
  • mkdir templates
  • 模板中的
  • 我创建了两个文件index.htmllayout.html,其中包含以下jinja2/nunjucks内容

  • layout.html

<!doctype html>
<head>
        <title>simple example</title>
</head>
<body>
        <h1>Simple example</h1>
        {% block body %}{% endblock %}
</body>
  • index.html
{% extends "layout.html" %}

{% block body %}
hello world
{% endblock %}
  • 我使用
  • 预编译了模板
./node_modules/nunjucks/bin/precompile templates >templates.js

并在templates.js我有预编译的代码。

我应该to do接下来要获得正在运行的网络服务器,将使用预编译的template.js

请不要搜索任何高级问题。对于知道节点和javascript的人来说,这可能是一个愚蠢的简单问题。

我知道,需要创建一个文件,让我们说app.js并且需要使用node运行它 - 但是应该包含什么?

require 'nunjucks';

可能类似于:var res = nunjucks.render('templates.js');还有什么? (最简单的(一次)解决方案)。注意:想要使用Nunjucks服务器端而不是浏览器。

1 个答案:

答案 0 :(得分:19)

首先按如下方式初始化您的Node应用程序:

cd njtest
npm init

您可以点击“Enter”接受大多数问题的默认值,如果您在创建app.js之后这样做,那么它会自动检测到并将其用作条目指出你的简单服务器。

安装Express:

npm install express --save

然后按如下方式创建app.js

var express     = require( 'express' ),
    app         = express(),
    nunjucks    = require( 'nunjucks' ) ;

// Define port to run server on
var port = process.env.PORT || 9000 ;

// Configure Nunjucks
var _templates = process.env.NODE_PATH ? process.env.NODE_PATH + '/templates' : 'templates' ;
nunjucks.configure( _templates, {
    autoescape: true,
    cache: false,
    express: app
} ) ;
// Set Nunjucks as rendering engine for pages with .html suffix
app.engine( 'html', nunjucks.render ) ;
app.set( 'view engine', 'html' ) ;

// Respond to all GET requests by rendering relevant page using Nunjucks
app.get( '/:page', function( req, res ) {
    res.render( req.params.page ) ;
} ) ;

// Start server
app.listen( port ) ;
console.log( 'Listening on port %s...', port ) ;

现在启动浏览器,转到http://localhost:9000然后弹出您的页面!

希望有帮助...