2015-06-22 61 views
12

可能永远不会使用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> 
  • index.html
{% extends "layout.html" %} 

{% block body %} 
hello world 
{% endblock %} 
  • 我precomplied模板与
./node_modules/nunjucks/bin/precompile templates >templates.js 

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

我应该to do旁边得到一个正在运行的网络服务器什么将使用预编译template.js

请不要搜索任何先进behing这个问题。对于了解node和javascript的人来说,这可能是一个愚蠢简单的问题。

我知道,将需要,创建一个文件让说app.js,并需要运行它与node - 但应包含?

require 'nunjucks'; 

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

回答

15

开始通过初始化您的节点应用如下:

cd njtest 
npm init 

您可以点击“进入”接受了大部分问题的默认值,如果你这样做是创建app.js然后它会自动检测到它并将其用作简单服务器的入口点。

安装快捷:

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突然冒出你的页面!

希望可以帮到...