Разница между compile (), parse () и render () в mustache.js - PullRequest
10 голосов
/ 22 февраля 2012

В чем разница между:

Mustache.compile(), Mustache.parse() и Mustache.render()

в новой mustache.js версии 0.5.0,и, возможно, для бонусных баллов вы могли бы сказать нам, в чем разница между разбором и компиляцией в целом.

Ответы [ 3 ]

17 голосов
/ 22 февраля 2012

РЕДАКТИРОВАТЬ

С изменением API , представленным в версии 0.8.0 , метод compile() был интегрирован в parse().Ручная компиляция шаблонов больше не требуется.


Mustache.parse()

Синтаксически анализирует шаблон и создает из него тело функции JavaScript ( строка ).Во время этого процесса он уведомляет о любых синтаксических ошибках, встречающихся в шаблоне.

Mustache.compile()

Использует тело функции, возвращенное из успешного parse(), для создания фактической функции JavaScript.Созданная функция помещается в кэш для повторного использования.

Mustache.render()

Принимает соответствующую функцию для данного шаблона (тот, который был создан compile()) и применяет еек фактическим данным.Это создает результат, предназначенный для отображения на экране.

2 голосов
/ 13 ноября 2016

Просто совет Mustache.parse(template) не является обязательным и ускоряет будущее использование шаблона. Это полезно, когда вы хотите повторно использовать шаблон с набором (больших) данных. Если это не так, достаточно вызова Mustache.render(), который генерирует окончательный результат.

1 голос
/ 17 июля 2018

Немного больше: если вы работаете с пользовательскими разделителями (вместо {{ и }}), вы можете использовать Mustache.parse перед вызовом Mustache.render с пользовательскими разделителями в качестве параметра.

Пример:

var template = "<h1>Hello {{$name$}}</h1>"
var customTags = [ '{{$', '$}}' ];
Mustache.parse(template, cutomTags);
var result = Mustache.render(template, { name: "John" };
console.log(result);

В результате:

Hello John
...