Вопрос по node.js, mustache, express – Node.js + Express - Как заставить работать частички Усов?

5

Я пытаюсь заставить Усов работать должным образом с Express, и, как можно догадаться, у меня проблемы.

Следующая строка инициализирует усы красиво и чисто. Переменные отображаются как ожидается.

<code>app.register('html', require(__dirname+'/public/js/libs/mustache.js'));
</code>

Тем не менее, проблемы начинают расти, когда в микс добавляются частичные значения. В случае с усами этот частичный должен вызывать представление заголовка / частичное.

<code>{{> header}}
</code>

Но увы ничего не происходит. : / Даже когда я предлагаю частичное непосредственно, усы не могут сделать это.

<code>app.get('/', function(req, res) {
    res.render('welcome', {
        partials: {
            header: '<h1>Header</h1>'           
        }
    });
});
</code>

Таким образом, кажется, что партиалы вообще не работают. Я обнаружил один хак, который частично работает:

http://bitdrift.com/post/2376383378/using-mustache-templates-in-express

После этого партиалы рендерится, когда они предлагаются непосредственно при вызове рендеринга (см. Выше), но все равно не удается рендерить партиалы непосредственно в представления / макеты:

Layout looks something like this:

<code>Behold, the header
{{> header}}
<p>Let's move to more important stuff...</p>
</code>

Header view looks something like this:

<code><h1>Header</h1>
</code>

Express может самостоятельно загружать представления, но он не знает, как обрабатывать частички усов ...

Ваш Ответ

3   ответа
2

Удалось заставить это работать с последней версией hogan-express.

https://github.com/vol4ok/hogan-express

Все, что нужно, это установить Hogan-Express и использовать его в качестве движка шаблонов в Express. Нет взлома или настройки не требуется.

Все, что я сделал, это установил Hogan-Express и использовал его в качестве движка шаблонов в Express. :) Не требует взлома или тюнинга. crappish
Любые дальнейшие комментарии о том, как вы поступили или с какими проблемами столкнулись чуть-чуть больше для начальной загрузки чьего-либо процесса;) (тогда я добавлю голос)
0

Используя экспресс (как минимум версия 3) иусики-экспресс, Вы можете загрузить партиалы как обычно, используя двойные усы, которые начинаются со знака больше чем.

Во-первых, учтите, что в нашем приложении добавлено следующееapp.js файл:

/** import the module */

import mustache from 'mustache-express';

/** view engine setup */

app.engine('mst', mustache());
app.set('view engine', 'mst');
app.set('views', path.join(__dirname, 'mvc/views'));

/** the route where we will display the partials */

app.get('/', (req, res) => {
  let view = {
    title: 'Homepage',
    // ...
  };

  /** we are going to use a file called template.mst for rendering */
  res.render('template', view);
});

Любые двойные усы, начинающиеся со знака «больше» (т.е.{{> file}}) будет считатьсячастичный, Файл в частичном будет отображаться во время выполнения. Считайте этот файл частичным, который мы хотим вставить:

mvc/views/partial.mst

<h2>418 | I'm a teapot</h2>

И вот наш шаблон:

mvc/views/template.mst

<h1>template.mst file</h1>

<!-- output: <h2>418 | I'm a teapot</h2> -->
{{> partial}}
0

Я не уверен, что именно в вашем./public/js/libs/mustache.js ... я использую модуль усов из npm + вариант шаблонного объектавы связаны с.

В любом случае, объект, который вы передаетеapp.register нужно позвонитьmustache.to_html(template, locals, partials) в какой-то момент.

Вам необходимо передать объект partials в качестве третьего аргумента усамto_html.

Похожие вопросы