最简单的node.js + nunjucks示例

kob*_*ame 13 node.js nunjucks

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

  • 将一些简单的模板预编译到javascript中 Nunjucks
  • 运行下的预编译模板 node.js

我已经做好了:

  • 安装node.jsnpm(例如有nodenpm命令)
  • mkdir njtest && cd njtest
  • 安装了nunjucks npm install 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>
Run Code Online (Sandbox Code Playgroud)
  • index.html
{% extends "layout.html" %}

{% block body %}
hello world
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
  • 我用模板预编译了模板
./node_modules/nunjucks/bin/precompile templates >templates.js
Run Code Online (Sandbox Code Playgroud)

templates.js我有预编译的代码.

接下来我应该to do得到一个运行的Web服务器将使用预编译的template.js什么?

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

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

require 'nunjucks';
Run Code Online (Sandbox Code Playgroud)

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

And*_*ale 20

首先初始化Node应用程序,如下所示:

cd njtest
npm init
Run Code Online (Sandbox Code Playgroud)

您可以按"Enter"接受大多数问题的默认值,如果您创建app.js 执行此操作,那么它将自动检测到并将其用作简单服务器的入口点.

安装Express:

npm install express --save
Run Code Online (Sandbox Code Playgroud)

然后创建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 ) ;
Run Code Online (Sandbox Code Playgroud)

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

希望有帮助......