Jestem nowy (ish) w całej aplikacji pełnego stosu javascript i zupełnie nowy w Angular, więc miałem nadzieję, że ktoś umieści tutaj opis bezpośrednio dla mnie.
Dlaczego miałbym używać struktury szablonów, takiej jak Jade lub Handlebars, podczas pisania aplikacji po stronie klienta przy użyciu AngularJS.
Powinienem powiedzieć, że nigdy też nie korzystałem z żadnego z tych frameworków do tworzenia szablonów. Więc nie znam całkowicie zalet. Ale kiedy patrzę na przykład na kierownicę, robi wiele takich samych rzeczy, jak robiłbym w Angular, takich jak zapętlanie itp.
O ile wiem, najbardziej sensowne byłoby utworzenie szablonów w Angular przy użyciu odpowiedniego kodu HTML, a następnie wykonanie wszystkich szablonów po stronie klienta i połączenie tego z pierwszym podejściem API, na przykład przy użyciu węzła i mongo.
Powodem tego zamieszania jest to, że wiele przykładów, które znajduję na GitHub, wykorzystuje Jade i wydaje mi się to sprzeczne z intuicją.
Proszę, oświeć mnie i wyprostuj. Bardzo chciałbym nauczyć się sprawdzonych metod od ludzi, którzy wiedzą znacznie więcej niż ja.
Dzięki
Używam Jade do generowania szablonów używanych przez AngularJS, ponieważ nienawidzę pisać zwykłego HTML. Wygląda to mniej więcej tak:
… Co moim zdaniem jest dużo czystsze niż zwykły HTML.
źródło
ng-inlude
prawdopodobnie używany razem zng-src
, różni się znacznie od miksów Jades i zawiera?Naprawdę nie rozumiem, dlaczego ludziom zależy na różnicy między tym:
i to:
Tyle że uważam, że jeden jest bardziej czytelny dla człowieka. Nieznacznie . Nie rozumiem, dlaczego ludzie tak żarliwie podchodzą do tego tematu. To wszystko dla rowerów. Różnica jest znikoma i każdy kompetentny programista mógłby łatwo przetłumaczyć jedno na drugie po pięciu sekundach w Google. Używaj tego, co chcesz i pozwól innym kłócić się o nic. Wybieraj swoje bitwy i angażuj się w debaty o rzeczach, które naprawdę mają znaczenie, takich jak reaktory atomowe;)
źródło
if
do równania, wszystko nagle się zmienia. Zobacz powyżej o „użytkownikach premium”.if
s w swoim jadeitowym znaczniku, to i tak potrzebujesz już jakiegoś silnika szablonów i musiałbyś przekonwertować go na dowolnąif
składnię używaną przez ten silnik. Naprawdę nie rozumiem twojej krytyki.Tak więc TL; DR na serwerze możesz użyć dowolnego języka [jade, haml, ...] do wygenerowania tylko struktury html dla swojej aplikacji, nie ma to nic wspólnego z angularJS, ponieważ będzie renderować i działać z HTML na środowisko uruchomieniowe na frontend.
Nie musisz używać Jade na serwerze i sugeruję nie używać, ponieważ wprowadzi to w błąd nowych programistów. W projektach, które widzisz, używają Jade tylko dlatego, że jest czystszy i są do tego przyzwyczajeni, a jeśli używa z angularJS, jedynym zadaniem jest wygenerowanie czystego HTML bez żadnej logiki.
źródło
Przyjęta odpowiedź jest nieco jednostronna i pomija fakt, że każda konfiguracja prekompilatora dla HTML świetnie nadaje się do KAŻDEGO rodzaju projektu HTML: kompozycji i wynikającej z tego elastyczności znaczników.
Pracujesz sam nad aplikacją kątową? Spróbuj Jade.
Jade poprawia zdolność do modularyzacji HTML, zmniejsza ilość czasu spędzanego na debugowaniu HTML, a także zachęca do tworzenia spisów znaczników.
Podczas projektowania części HTML może być bardzo dużo iteracji. Jeśli dane wyjściowe HTML są oparte na zestawie plików jade, zespół może łatwo działać elastycznie w przypadku zmieniających się wymagań. Ponadto zmiana znaczników poprzez ponowne komponowanie dołączeń jade jest znacznie bardziej niezawodna niż ponowne pisanie czystego HTML.
Biorąc to pod uwagę, zdaję sobie sprawę z ogólnej niechęci do mieszania kątów z jadeitem na etapie produkcji lub rozwoju. Wprowadzenie kolejnego wymaganego zestawu wiedzy o składni jest złym pomysłem dla większości zespołów, a użycie jade może ukryć nieefektywne zarządzanie projektami poprzez oderwanie niektórych prac, które byłyby zabronione przez zasady DRY (np. Lenistwo w przygotowywaniu znaczników)
źródło
Przeczytałem wszystkie powyższe odpowiedzi i byłem trochę zaskoczony, że nikt nie wspomniał o jednym aspekcie, co sprawia, że używanie jade zamiast generowania szablonów AngularJS jest bardzo przydatną rzeczą.
Jak już powiedziano, w produkcji realistyczne scenariusze różnią się między pisaniem surowego html a jade, ale ważniejszą rzeczą, o której nigdy nie powinniśmy zapominać, jest to, że czasami potrzebujemy dynamicznie zmienianych i ponownie zainicjowanych szablonów angularjs.
Mówiąc prościej, czasami musimy zmienić HTML za pomocą innerHTML, a następnie zmusić AngularJS do ponownej kompilacji zawartości. I to jest dokładnie ten rodzaj zadania, kiedy generowanie takich widoków przez jade może przynieść korzyści.
Ponadto AngularJS dobrze współpracuje z modelami, których struktura jest z definicji dobrze znana. Właściwie zdarza się, że tak naprawdę nie znamy dokładnej struktury (wyobraź sobie, powiedzmy, renderer JSON). AngularJS będzie tutaj dość niezdarny (nawet gdyby budował aplikację kątową), a jade zrobi to.
źródło
Możesz dołączyć szablony kątowe za pośrednictwem Jade.
W przypadku szablonów buforowania postrzegam to jako znacznie mniej delikatne niż włączenie szablonów uciekających w plikach javascript.
Zobacz: https://docs.angularjs.org/api/ng/service/$templateCache
źródło
Jade jest zdecydowanie bliżej html niż powiedzmy Haml. Tak więc zmiana kontekstu jest właściwie bardzo minimalna. Jednak nie jest całkowicie nieobecny. Dla dewelopera może to w ogóle nie mieć znaczenia. Ale kiedy projektant przychodzi i pyta, jak sprawić, by zagnieżdżony tag działał poprawnie, rozwiązujesz niepotrzebny problem, który stworzyłeś w pierwszej kolejności.
HTML można nadal pisać bardzo czytelnie, a częściowe mogą być używane, aby uczynić go bardziej zrozumiałym. 500 wierszy czegokolwiek jest trudnych do odczytania - czy to Jade, czy HTML.
Oto szablon Jade
I odpowiednik HTML
Kiedy jest napisany czytelnie, nie uważam, aby HTML był szczególnie niekorzystny, aby uzasadniać zmianę. Rzeczywiście, kątowe wsporniki są obrzydliwe. Ale wolałbym je mieć, niż zajmować się wątpliwościami projektanta, czy wprowadzony przeze mnie kierunek łamania html. (Może nie. Ale udowodnienie, że nie jest to wartościowy wysiłek)
źródło
Po pierwsze, zawsze potrzebujesz jakiegoś szablonu po stronie serwera.
Tworzenie szablonów po stronie klienta ma ogromne wady w czasie ładowania, więc często jest łagodzone przez renderowanie niektórych statycznych elementów na serwerze. W ten sposób, gdy użytkownik częściowo załaduje stronę, będzie już widział niektóre elementy na stronie.
I cóż, szablony są przydatne w tym przypadku, chociaż ludzie czasami używają zamiast tego statycznego generatora HTML, takiego jak Jekyll.
Jest jeszcze jeden powód używania Jade, o którym wcześniej nie wspomniano.
Biała przestrzeń.
Jeśli piszesz obsługiwany przez człowieka kod HTML z wcięciami i znakami końca wiersza, każdy pojedynczy podział wiersza spowoduje powstanie węzła tekstowego spacji. W niektórych przypadkach może dość mocno przykręcić formatowanie elementów wbudowanych i sprawić, że kod javascript będzie bardziej dziwny.
Możesz przeczytać więcej szczegółów tutaj: https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Whitespace_in_the_DOM
Jeśli piszesz kod Jade, jest on kompilowany do jednowierszowego kodu HTML, który nie ma tego problemu.
źródło
Pracując w zespole, front-end prawdopodobnie preferuje projektowanie swoich stron jako statyczny html. Tłumaczenie tego statycznego html na dynamiczne szablony jest źródłem błędów, a dodanie jade dodaje taki krok do tłumaczenia.
Jak wielu innych, wolę prostotę!
źródło