Одно тонкое, но существенное отличие состоит в том, как две библиотеки подходят к области видимости. Усы вернутся к родительской области, если не смогут найти переменную в текущем контексте; Рули вернут пустую строку.
Это едва упоминается в GitHub README, где для этого есть одна строка:
Рули немного отличаются от усов в том, что по умолчанию они не выполняют рекурсивный поиск.
Однако, как уже отмечалось, есть флаг, который заставляет руль вести себя так же, как усы - но это влияет на производительность.
Это влияет на то, как вы можете использовать #переменные в качестве условных выражений .
Например, в Усы вы можете сделать это:
{{#variable}}<span class="text">{{variable}}</span>{{/variable}}
Это в основном означает «если переменная существует и является правдивой, выведите диапазон с переменной в ней». Но в Handlebars вы должны либо:
- использовать
{{this}}вместо
- использовать родительский путь, т. е.
{{../variable}}чтобы вернуться в соответствующую область
- определить дочернее
variableзначение в родительском variableобъекте
Подробнее об этом, если вы хотите их, здесь .