Самый простой пример node.js + nunjucks

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

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

Я сделал:

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


person kobame    schedule 22.06.2015    source источник


Ответы (1)


Начните с инициализации приложения Node следующим образом:

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 и откроется ваша страница!

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

person Andy Neale    schedule 22.10.2015
comment
Небольшое дополнение для тех, кто действительно новичок, также необходимо npm install nunjucks --save, если он еще не установлен глобально. - person dbainbridge; 12.01.2019