Ich bin neu (ish) in den gesamten Javascript-Full-Stack-Anwendungen und völlig neu in Angular, also hatte ich gehofft, dass jemand hier den Rekord für mich klarstellen kann.
Warum sollte ich beim Schreiben clientseitiger Apps mit AngularJS ein Vorlagen-Framework wie Jade oder Lenker verwenden müssen?
Ich sollte sagen, dass ich auch nie eines dieser Template-Frameworks verwendet habe. Daher kenne ich die Vorteile nicht vollständig. Aber wenn ich mir zum Beispiel Lenker anschaue, macht es viele der gleichen Dinge wie in Angular, wie z. B. Schleifen usw.
Soweit ich das beurteilen kann, wäre es am sinnvollsten, die Vorlagen in Angular mit geeignetem HTML zu erstellen und dann alle Vorlagen clientseitig zu erstellen und dies mit einem API-First-Ansatz zu kombinieren, der beispielsweise Node und Mongo verwendet.
Der Grund für diese Verwirrung ist, dass viele der Beispiele, die ich auf GitHub finde, Jade verwenden, und es scheint mir nicht intuitiv zu sein.
Bitte erleuchten Sie mich und stellen Sie mich gerade. Ich würde gerne einige Best Practices von Leuten lernen, die viel mehr wissen als ich.
Vielen Dank
Ich verwende Jade, um Vorlagen zu generieren, die von AngularJS verwendet werden, weil ich es hasse, einfaches HTML zu schreiben. Es sieht ungefähr so aus:
… Was meiner Meinung nach viel sauberer ist als einfaches HTML.
quelle
ng-inlude
, verwendet möglicherweise zusammen mitng-src
unterscheiden sich sehr von Jades Mixins und und enthält?Ich verstehe ehrlich gesagt nicht, warum sich die Leute für den Unterschied interessieren:
und das:
Nur dass ich eine etwas besser lesbare finde. Etwas . Ich verstehe nicht, warum die Leute so leidenschaftlich über das Thema sind. Es ist alles Bikeshedding. Der Unterschied ist vernachlässigbar und jeder kompetente Programmierer könnte nach fünf Sekunden bei Google leicht ineinander übersetzen. Verwenden Sie, was Sie wollen, und lassen Sie alle anderen über nichts streiten. Wähle deine Schlachten aus und diskutiere über Dinge, die wirklich wichtig sind, wie Atomreaktoren;)
quelle
if
zur Gleichung hinzufügen , ändert sich plötzlich alles. Siehe oben über "Premium-Benutzer".if
s in Ihrem Jade-Markup haben, benötigen Sie ohnehin bereits eine Art Template-Engine und müssen diese inif
die von dieser Engine verwendete Syntax konvertieren . Ich verstehe Ihre Kritik nicht wirklich.TL; DR, auf dem Server können Sie eine beliebige Sprache [Jade, Haml, ...] verwenden, um nur eine HTML-Struktur für Ihre Anwendung zu generieren. Dies hat nichts mit angleJS zu tun, da es mit HTML gerendert wird und mit HTML arbeitet Laufzeit im Frontend.
Sie müssen Jade nicht auf dem Server verwenden, und ich schlage vor, es nicht zu verwenden, da dies neue Entwickler verwirren wird. In Projekten, die Sie sehen, verwenden sie Jade nur, weil es sauberer ist und sie daran gewöhnt sind. Wenn es mit angleJS verwendet wird, besteht die einzige Aufgabe darin, einfaches HTML ohne Logik zu generieren.
quelle
Die akzeptierte Antwort ist etwas einseitig und vernachlässigt die Tatsache, dass jedes Setup des Pre-Compilers für HTML für JEDE Art von HTML-Projekt von großem Nutzen ist: Komposition und daraus resultierende Markup-Flexibilität.
Allein an einer eckigen App arbeiten? Probieren Sie Jade aus.
Jade verbessert Ihre Fähigkeit, HTML zu modularisieren, verringert den Zeitaufwand für das Debuggen von HTML und fördert das Erstellen von Markup-Inventaren.
Während der Entwurfszeit kann es zu einer schrecklichen Iteration von HTML-Teilen kommen. Wenn die HTML-Ausgabe auf einer Reihe von Jade-Dateien basiert, kann das Team problemlos auf sich ändernde Anforderungen reagieren. Das Ändern des Markups durch erneutes Zusammenstellen von Jade-Includes ist wesentlich robuster als das erneute Schreiben von reinem HTML.
Davon abgesehen erkenne ich die allgemeine Abneigung gegen das Mischen von Winkel mit Jade in der Produktions- oder Entwicklungsphase. Die Einführung eines weiteren erforderlichen Satzes von Syntaxkenntnissen ist für die meisten Teams eine schlechte Idee, und die Verwendung von Jade kann ineffizientes Projektmanagement verbergen, indem einige Arbeiten abstrahiert werden, die nach DRY-Prinzipien verboten wären (z. B. Faulheit bei der Vorbereitung von Markups).
quelle
Ich habe alle Antworten oben gelesen und war ein bisschen überrascht, dass niemand einen Aspekt erwähnt hat, der die Verwendung von Jade über das Generieren von AngularJS-Vorlagen zu einer sehr nützlichen Sache macht.
Wie bereits erwähnt, ist in der Produktion der Unterschied zwischen der Eingabe von rohem HTML und Jade in realistischen Szenarien tatsächlich bemerkenswert. Wichtiger ist jedoch, dass wir manchmal dynamisch geänderte und neu initialisierte AngularJS-Vorlagen benötigen.
Um es einfach auszudrücken , manchmal müssen wir HTML über innerHTML ändern und dann AngularJS zwingen, Inhalte neu zu kompilieren. Und genau diese Art von Aufgabe, wenn das Generieren solcher Ansichten über Jade Vorteile bringt.
AngularJS funktioniert auch gut mit Modellen, deren Struktur per Definition bekannt ist. Tatsächlich kommt es vor, dass wir die genaue Struktur nicht kennen (stellen Sie sich beispielsweise JSON-Renderer vor). AngularJS wird hier ziemlich ungeschickt sein (selbst wenn eine eckige App erstellt wird), während Jade die Arbeit erledigt.
quelle
Sie können eckige Vorlagen über Jade einfügen.
Für das Zwischenspeichern von Vorlagen halte ich dies für weniger fragil als das Einfügen der maskierten Vorlagen in die Javascript-Dateien.
Siehe: https://docs.angularjs.org/api/ng/service/$templateCache
quelle
Jade ist definitiv viel näher an HTML als Haml zu sagen. Der Kontextwechsel ist also eigentlich sehr minimal. Es fehlt jedoch nicht ganz. Für einen Entwickler ist das möglicherweise überhaupt nicht wichtig. Wenn Ihr Designer Sie jedoch fragt, wie ein verschachteltes Tag ordnungsgemäß funktioniert, lösen Sie ein unnötiges Problem, das Sie ursprünglich erstellt haben.
HTML kann immer noch gut leserlich geschrieben werden und Partials können verwendet werden, um es verständlicher zu machen. 500 Zeilen von allem sind schwer zu lesen - sei es Jade oder HTML.
Hier ist eine Jade-Vorlage
Und das entsprechende HTML
Wenn ich leserlich geschrieben bin, sehe ich HTML nicht als besonders benachteiligt an, um einen Wechsel zu rechtfertigen. Sicher genug, die eckigen Klammern sind ein Dorn im Auge. Aber ich hätte sie lieber, als mich mit den Zweifeln des Designers auseinandersetzen zu müssen, ob die von mir eingeführte Indirektion das HTML bricht. (Es kann nicht. Aber zu beweisen, dass es keine würdige Anstrengung ist)
quelle
Zunächst benötigen Sie immer eine Art serverseitiges Templating.
Reines clientseitiges Templating hat große Nachteile in der Ladezeit, daher wird es häufig durch das Rendern einiger statischer Elemente auf dem Server verringert. Auf diese Weise werden beim teilweisen Laden einer Seite durch den Benutzer bereits einige Elemente auf der Seite angezeigt.
Und gut, Vorlagen sind in diesem Fall praktisch, obwohl die Leute manchmal stattdessen einen statischen HTML-Generator wie Jekyll verwenden.
Es gibt einen anderen Grund für die Verwendung von Jade, der hier zuvor nicht erwähnt wurde.
Leerzeichen.
Wenn Sie von Menschen verwaltbares HTML mit Einrückungen und Zeilenumbrüchen schreiben, führt jeder einzelne Zeilenumbruch zu einem Leerzeichen-Textknoten. In einigen Fällen kann dies die Formatierung von Inline-Elementen ziemlich verschrauben und den Javascript-Code seltsamer machen.
Weitere Informationen finden Sie hier: https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Whitespace_in_the_DOM
Wenn Sie Jade-Code schreiben, wird dieser in einzeiligen HTML-Code kompiliert, bei dem dieses Problem nicht auftritt.
quelle
Wenn Sie in einem Team arbeiten, zieht es das Front-End wahrscheinlich vor, die Seiten als statisches HTML zu gestalten. Das Übersetzen dieses statischen HTML-Codes in dynamische Vorlagen ist eine Fehlerquelle, und das Hinzufügen von Jade fügt einen solchen Übersetzungsschritt hinzu.
Wie viele andere bevorzuge ich die Einfachheit!
quelle