Механизм шаблонов Mustache (подобный) для Express?

Существует ли механизм шаблонов для Express (node.js), основанный на Mustache или использующий аналогичный синтаксис?

Все, что я смог найти, это haml, jade, ejs, jquery templates и один на основе CoffeeScript (я пишу простой JS).

Я хочу написать "обычный" html, поэтому подойдут только ejs и jqtpl. Я уже использую mustache с backbone, поэтому было бы лучше также использовать его на стороне сервера с Node.js.


person Xomby    schedule 16.01.2012    source источник
comment
Hogan.js — это обертка с усами для экспресс-флага только -h для экспресс-генератора приложений.   -  person Muhammad Umer    schedule 17.02.2015


Ответы (8)


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

Имена файлов представлений имеют форму «.», где это имя модуля, который потребуется. Например, представление layout.ejs сообщит системе представления >require('ejs'), загружаемый модуль должен экспортировать метод exports.compile(str, >options) и вернуть функцию для соответствия Express.

Изменить: из руководства по усам в разделе "Использование":

Ниже приведен краткий пример использования mustache.js:

var view = {
  title: "Joe",
  calc: function () {
    return 2 + 4;
  }
};

var output = Mustache.render("{{title}} spends {{calc}}", view);

В этом примере функция Mustache.render принимает два параметра: 1) шаблон усов > и 2) объект представления, который содержит данные и код, необходимые для рендеринга > шаблона.

Из вышесказанного я подозреваю, что вы можете просто экспортировать Mustache.render, но я не проверял это. Литералы объектов, используемые в качестве данных, выглядят одинаково, но если они отличаются, вы, вероятно, могли бы просто обернуть Mustache.render в функцию, которая правильно его форматирует.

Изменить: ссылка на оболочку Xomby содержит пример того, как обернуть руль для экспресса, Mustache должен быть похожим.

person mtsr    schedule 16.01.2012

Просто наткнулся на эту древнюю ветку, но никто не упомянул консолидировать.js, который кажется «правильным» способом в Express 3 (см. http://expressjs.com/faq.html). Он также предоставляет простой способ переключения/экспериментирования с системами шаблонов.

Вот простой пример: http://invitingthebell.com/2012/12/24/mustache-templates-in-express-3-0/.

Код, если он исчезнет:

var express = require('express')
 , cons = require('consolidate')
 , app = express();

// assign the mustache engine to .html files
app.engine('html', cons.mustache);

// set .html as the default extension 
app.set('view engine', 'html');

app.set('views', __dirname + '/views');

// test mustache
app.get('/', function(req, res){ 
  var viewdata = { 'test' : 'Hey now.'};
  res.render('index', viewdata);
});

app.listen(3000);

Файл index.html в каталоге представлений:

<html>
  <head><title>Some CMS</title></head>
  <body>
    <h1>Mustache</h1>
    <p>What do you say?</p>
    <p>{{test}}</p>
  </body>
</html>
person Sean Chou    schedule 26.07.2013

Попробуйте Hogan.js http://twitter.github.com/hogan.js/

Я думаю, это то, что Twitter и LinkedIn используют в производстве.

person Don Park    schedule 26.01.2012

Вот рабочий пример/руководство по использованию NodeJS, ExpressJS и механизма шаблонов MustacheJS:

http://devcrapshoot.com/javascript/nodejs-expressjs-and-mustachejs-template-engine

Вы можете создать полноценную веб-страницу, как обычно, разместив поля mustacheJS там, где вам удобно. Используйте экспресс для перехода на страницу, используйте узел fs.readFileSync(); чтобы получить html-файл, используйте усы, чтобы обновить данные на странице, а затем выплюнуть их клиенту.

Это довольно аккуратно. Я надеюсь, что это помогает!

-A-

person Addam Driver    schedule 21.06.2012

Вы уже пробовали stache? Он больше не поддерживается, но вы можете перейти по некоторым ссылкам и получить более свежие материалы.

person castle1971    schedule 16.01.2012

Я нашел Handlebars.js, который является расширением системы/языка шаблонов Mustache.

И есть очень простая оболочка для использования с Express.

person Xomby    schedule 16.01.2012

Конечно, лучший способ сделать это - пост здесь:

http://iamtherockstar.com/blog/2011/11/21/using-mustache-templates-express-apps/

До сих пор это отлично сработало для меня. Единственная проблема, которую я обнаружил, заключается в том, что для представлений не используются партиалы в корневом пути. Например, партиалы в представлении/частицах — движок по умолчанию находит только партиалы как вид. Дайте мне знать, если вы это выясните!

person Jeff    schedule 17.01.2012

Проверьте хендлербары. " Handlebars предоставляет возможности, необходимые для эффективного создания семантических шаблонов без каких-либо затруднений. Handlebars в значительной степени совместим с шаблонами Mustache. В большинстве случаев можно заменить Mustache на Handlebars и продолжить использование ваших текущих шаблонов. Полную информацию можно найти здесь " - Рули

person cinfwatd    schedule 03.03.2015