Прекомпилировать шаблоны усов или загрузить внешне? - PullRequest
10 голосов
/ 02 сентября 2011

Было бы полезно иметь включаемую функцию Coffeescript, чтобы она могла загружать внешние шаблоны усов при компиляции в javascript и не загромождать файлы кофе.

На самом деле вы можете загружать файлы .mustache во время выполнения, но вам нужно вызывать их с помощью ajax-запроса с некоторыми потерями производительности.

Я хотел бы предварительно скомпилировать некоторые статические шаблоны усов и включить их в сгенерированную функцию javascript, которая может быть Сшита и сжата в одном файле.

Есть проект или сценарий для этого?

Ответы [ 6 ]

7 голосов
/ 03 ноября 2012

Я думаю, что это решение для вас, прекомпилятор шаблонов javascript для усов и других шаблонных движков https://github.com/kupriyanenko/jsttojs

например, используйте с командной строкой

jsttojs templates compiled/templates/index.js --ext mustache --watch

или используйте решение для ворчания, Грунт-jsttojs

2 голосов
/ 11 ноября 2011

Я смотрю на что-то подобное. Я еще не пробовал это сделать, но похоже, что вы можете использовать Node.js и Mu , сборку Mustache для Node.js, чтобы сделать это. Псевдо-JS код ...

var compiledTemplate = Mu.compile("myTemplateFile.html")
fs.writeFile("myCompiledTemplate.js", compiledTemplate.toString());
2 голосов
/ 08 сентября 2011

Безусловно, это то, что мы делаем там, где я работаю. Все шаблоны помещаются в один HTML-файл и вставляются в DOM во время сборки. Каждый шаблон хранится в теге script типа unknown, поэтому браузер просто игнорирует его. Затем вы можете ссылаться на них с помощью селекторов.

<script type="unknown" id="id_of_template">
  <ul>
  {{#words}}
    <li>{{.}}</li>
  {{/words}}
  </ul>
</script>

render = (template) ->
  view =
    words: [ 'hello', 'there' ]
  template = $('#' + template).html()
  html = Mustache.to_html template, view

У Джона Ресига есть хорошая статья о технике http://ejohn.org/blog/javascript-micro-templating/

2 голосов
/ 08 сентября 2011

Прежде всего вы можете использовать что-то вроде этого:

<script type="text/x-mustache" id="tid...">
  ... mustache template ...
</script>

, чтобы включать ваши шаблоны в выделенные блоки скриптов, а не в виде строк в коде.getElementByID() + innerHtml() даст вам источник, который вы можете использовать.

Об усах вообще - вы не можете составить это строго говоря.Шаблоны интерпретируются каждый раз, когда вы «создаете» шаблон.

Если вам нужно их скомпилировать, рассмотрите возможность использования моего движка Kite: http://code.google.com/p/kite/ или любых других скомпилируемых шаблонов: http://jsperf.com/dom-vs-innerhtml-based-templating/99

1 голос
/ 29 октября 2013

Библиотека Твиттера Hogan.js справляется с работой.

0 голосов
/ 08 сентября 2011
...