Główne różnice, które widziałem to:
- Kierownice dodaje
#if
,#unless
,#with
, i#each
- Kierownica dodaje pomocników
- Szablony kierownicy są kompilowane (wąsy też mogą być)
- Kierownica obsługuje ścieżki
- Pozwala na użycie
{{this}}
w blokach (które generują wartość ciągu bieżącego elementu) Handlebars.SafeString()
(i może jakieś inne metody)- Kierownica jest 2 do 7 razy szybsza
- Wąsy obsługują sekcje odwrócone (tj.
if !x ...
)
(Proszę mnie poprawić, jeśli się mylę z powyższym.)
Czy brakuje mi innych istotnych różnic?
handlebars.js
mustache
client-side-templating
templating-engine
Chad Johnson
źródło
źródło
Odpowiedzi:
Prawie go przybiłeś, ale szablony wąsów można również skompilować.
Wąsy brakuje pomocników i bardziej zaawansowanych bloków, ponieważ stara się być bez logiki. Niestandardowe pomocniki kierownicy mogą być bardzo przydatne, ale często kończą się wprowadzaniem logiki do szablonów.
Wąsy mają wiele różnych kompilatorów (JavaScript, Ruby, Python, C itp.). Kierownice zaczęły się w JavaScript, teraz istnieją projekty takie jak django-handlebars , handlebars.java , handlebars-ruby , lightncandy (PHP) i handlebars-objc .
źródło
Zalety wąsów:
Wady wąsów:
Zalety kierownicy:
Wady kierownicy:
Źródło: Rzutowanie szablonów po stronie klienta: wąsy, kierownica, dust.js i więcej
źródło
tr:nth-child(even)
itr:nth-child(odd)
lubtr:nth-child(2n)
. Chociaż to tylko przykład, czuję, że (przez większość czasu) jeśli coś jest trudne lub niezręczne z Wąsem, to robisz to źle; jest na to lepsze miejsce.Jedną subtelną, ale znaczącą różnicą jest sposób, w jaki obie biblioteki podchodzą do zakresu. Wąsy powrócą do zakresu nadrzędnego, jeśli nie będą w stanie znaleźć zmiennej w bieżącym kontekście; Kierownica zwróci pusty ciąg.
Jest to ledwie wspomniane w GITHub README, gdzie jest jedna linia:
Jednak, jak wspomniano, istnieje flaga, dzięki której Kierownica zachowuje się tak samo jak Wąsy - ale wpływa to na wydajność.
Ma to wpływ na sposób używania
#
zmiennych jako warunków warunkowych.Na przykład w Mustache możesz to zrobić:
Zasadniczo oznacza to „jeśli zmienna istnieje i jest zgodna z prawdą, wypisz zakres z tą zmienną”. Ale w kierownicach musisz albo:
{{this}}
zamiast tego{{../variable}}
aby wrócić do odpowiedniego zakresuvariable
wartość potomną wvariable
obiekcie nadrzędnymWięcej informacji na ten temat, jeśli chcesz, tutaj .
źródło
UWAGA: Ta odpowiedź jest nieaktualna. Było to prawdą w momencie publikacji, ale już nie jest.
Wąsy mają tłumaczy w wielu językach, podczas gdy Kierownica jest tylko Javascript.
źródło
Kolejną różnicą między nimi jest rozmiar pliku:
Aby zobaczyć korzyści płynące z Handlebars.js, musimy użyć wstępnie skompilowanych szablonów.
Źródło: Przegląd silników szablonów JavaScript
źródło
Jeszcze jedną subtelną różnicą jest traktowanie wartości fałszowania w
{{#property}}...{{/property}}
blokach. Większość implementacji wąsów będzie po prostu przestrzegać fałszywości JS, nie renderując bloku, jeśliproperty
jest''
lub „0”.Kierownice będzie renderować bloku na
''
i0
, ale nie inne wartości falsy. Może to powodować problemy podczas migracji szablonów.źródło
Wydaje mi się, że jeden ze wspomnianych wad „Kierownic” nie jest już naprawdę ważny.
Handlebars.java pozwala nam teraz udostępniać te same języki szablonów zarówno klientowi, jak i serwerowi, co jest dużą wygraną dla dużych projektów z ponad 1000 komponentów, które wymagają renderowania na serwerach dla SEO
Spójrz na https://github.com/jknack/handlebars.java
źródło
— Oprócz użycia „this” dla kierownicy i zagnieżdżonej zmiennej w bloku zmiennych dla wąsów, możesz także użyć zagnieżdżonej kropki w bloku dla wąsów:
źródło