Визуализация нефритового шаблона с макетом (без экспресса)

Когда вы визуализируете нефритовые шаблоны в экспресс-режиме, вы можете настроить свое приложение с помощью 'параметров просмотра', {layout: true} , и визуализированные шаблоны автоматически получат вставлен в локальную часть body шаблона макета.

Я пытаюсь добиться эквивалентного поведения файлов рендеринга из node.js, но без экспресс-фреймворка (я просто создаю статические файлы как часть более крупного конвейера).

Здесь есть два варианта:

  • Загрузить и основной шаблон, и макет, преобразовать в функции, сначала отобразить шаблон, а затем передать результаты в функцию макета
  • Использовать стандартное наследование шаблона и блочную структуру , но тогда я явно использую именованные блоки

Это единственные варианты (которые, честно говоря, по-прежнему хороши), или мне не хватает какой-то хитрости?


Править

Вот черновой вариант первого вариант на случай, если кому-то интересно:

// Load jade
var jade = require('jade');

// Load actual template text
var layout = fs.readFileSync('layout-path', 'utf8')
    tpl = fs.readFileSync('tpl-path', 'utf8');

// Compile template rendering function
layout = jade.compile(layout, { pretty: true, filename: 'layout-path' });
tpl = jade.compile(tpl, { pretty: true, filename: 'tpl-path' });

// Render jade template, passing in the info
var output = layout({ body: tpl({ local1: some_var, local2: some_var }) }

// Write rendered content to file
fs.writeFileSync('output.html', output);

6
задан AJ. 22 February 2012 в 16:46
поделиться