可能永远不会使用node.js或Nunjucks进行任何真正的开发,但现在出于某种原因需要:
Nunjucks
node.js
我做了:
node.js
和npm
(例如有node
和npm
命令)mkdir njtest && cd njtest
npm install nunjucks
安装了nunjucks(获得node_modules/nunjucks
目录)mkdir templates
我创建了两个文件index.html
和layout.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服务器端而不是浏览器。
答案 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然后弹出您的页面!
希望有帮助...