Предварительно скомпилируйте шаблоны усов или загрузите их извне?
Было бы полезно иметь функцию Coffeescript include, чтобы она могла загружать внешние шаблоны усов при компиляции в javascript и не загромождать файлы кофе.
На самом деле вы можете загружать файлы .mustache во время выполнения, но вам нужно вызвать их с помощью запроса ajax с некоторыми нарушениями производительности.
Я хотел бы предварительно скомпилировать некоторые статические шаблоны усов и включить их в созданную функцию javascript, которая может быть Stitched и сжата в одном файле.
Для этого существует проект или script?
Ответы
Ответ 1
Я думаю, что это решение для вас, javascript шаблона precompiller для усов и othe шаблонов двигателей https://github.com/kupriyanenko/jsttojs
например, используйте с командной строкой
jsttojs templates compiled/templates/index.js --ext mustache --watch
или использовать решение для grunt, grunt-jsttojs
Ответ 2
Прежде всего вы можете использовать что-то вроде этого:
<script type="text/x-mustache" id="tid...">
... mustache template ...
</script>
включить ваши шаблоны в выделенные блоки script, а не как строки в коде.
getElementByID()
+ innerHtml()
предоставит вам источник, который вы можете использовать.
Об усах вообще - вы не можете его скомпилировать строго говоря. Шаблоны интерпретируются каждый раз, когда вы "создаете экземпляр" шаблона.
Если вам нужно скомпилировать их, подумайте о том, как использовать мой движок Kite:
http://code.google.com/p/kite/ или любые другие скомпилируемые шаблоны:
http://jsperf.com/dom-vs-innerhtml-based-templating/99
Ответ 3
Абсолютно, это то, что мы делаем, где я работаю. Все шаблоны входят в один файл html и вставляются в dom во время сборки. Каждый шаблон хранится в теге script неизвестного типа, поэтому браузер просто игнорирует его. Затем вы можете ссылаться на них с помощью селекторов.
<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/
Ответ 4
Я смотрю на что-то подобное. Я еще не пробовал этого, но, похоже, вы могли бы использовать Node.js и Mu, сборку Усы для Node.js, чтобы сделать это. Псевдо-JS-код...
var compiledTemplate = Mu.compile("myTemplateFile.html")
fs.writeFile("myCompiledTemplate.js", compiledTemplate.toString());
Ответ 5
Библиотека Twitter Hogan.js выполняет задание.
Ответ 6
Вы можете отобразить строку шаблона, включенную непосредственно в ваш источник, используя Mustache.to_html(), если это поможет.