最简单的node.js + nunjucks例子

可能不会使用node.js和Nunjucks进行任何实际的开发,但是现在由于某种原因需要:

  • 预编译一些简单的模板与Nunjucks JavaScript
  • 运行node.js下的预编译模板

我已经做好了:

  • 安装node.jsnpm (例如有nodenpm命令)
  • mkdir njtest && cd njtest
  • 安装nunjucks npm install nunjucks (有一个node_modules/nunjucks目录)
  • mkdir templates
  • 在模板中,我创build了两个文件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来获得一个正在运行的Web服务器什么将使用预编译的template.js

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

我知道,将需要创build一个文件让说app.js和需要运行它的node – 但应包含?

 require 'nunjucks'; 

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

从初始化Node应用程序开始,如下所示:

 cd njtest npm init 

你可以点击“回车”接受大多数问题的默认设置,如果你创buildapp.js之后这样做那么它会自动检测到这个问题,并将其用作简单服务器的入口点。

安装快车:

 npm install express --save 

然后创buildapp.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然后popup你的页面!

希望有帮助…