Одно тонкое, но существенное различие заключается в том, как две библиотеки подходят к области видимости. Mustache вернется в родительскую область видимости, если не сможет найти переменную в текущем контексте; Handlebars вернет пустую строку.
Это почти не упоминается в README GitHub, где для этого есть одна строчка:
Handlebars немного отличается от Mustache, поскольку по умолчанию не выполняет рекурсивный поиск.
Однако, как там отмечено, есть флаг, заставляющий Handlebars вести себя так же, как и Mustache, но это влияет на производительность.
Это влияет на то, как вы можете использовать переменные #
в качестве условных выражений.
Например, в Moustache вы можете сделать это:
{{#variable}}<span class="text">{{variable}}</span>{{/variable}}
Это в основном означает «если переменная существует и является правдивой, выведите диапазон с переменной в нем». Но в Handlebars вам придется:
- вместо этого используйте
{{this}}
- используйте родительский путь, то есть
{{../variable}}
, чтобы вернуться в соответствующую область
- определить дочернее
variable
значение в родительском variable
объекте
Дополнительные сведения об этом, если они вам нужны, можно найти здесь.
person
guypursey
schedule
02.11.2014
{{#-first}}
и{{#-last}}
мы должны заменить символ-
на@
. - person Millas   schedule 01.10.2019