Простейший пример node.js + nunjucks

Вероятно, никогда не будет использовать node.js или Nunjucks для какой-либо реальной разработки, но теперь по какой-то причине необходимо:

  • предварительно скомпилируйте некоторые простые шаблоны javascript с помощью Nunjucks
  • запустите предварительно скомпилированные шаблоны под node.js

Я сделал:

  • установлены node.js и npm (например, имеют команду node и npm)
  • mkdir njtest && cd njtest
  • установил nunjucks с помощью npm install 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?

Пожалуйста, не ищите что-нибудь продвинутое, чтобы ответить на этот вопрос. Вероятно, это глупый вопрос для тех, кто знает node и javascript.

Что мне известно, вам понадобится, создайте файл, сообщите app.js и нужно запустить его с помощью node - но что должно содержать?

require 'nunjucks';

и, вероятно, что-то вроде: var res = nunjucks.render('templates.js'); и что еще? (самое простое (одноразовое) решение). Примечание: хотите использовать Nunjucks на стороне сервера, а не в браузере.

Ответ 1

Начните с инициализации приложения 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 и вытащите свою страницу!

Надеюсь, что это поможет...