Je suis nouveau (ish) à l'ensemble des applications javascript full stack, et complètement nouveau pour Angular, donc j'espérais que quelqu'un puisse mettre les choses au clair pour moi ici.
Pourquoi aurais-je besoin d'utiliser un cadre de création de modèles comme Jade ou Handlebars lors de l'écriture d'applications côté client à l'aide d'AngularJS.
Je dois dire que je n'ai jamais utilisé aucun de ces frameworks de modèles. Je ne connais donc pas complètement les avantages. Mais quand je regarde Handlebars par exemple, il fait beaucoup des mêmes choses que je le ferais dans Angular, comme la boucle, etc.
Pour autant que je sache, il serait plus logique de créer les modèles dans Angular en utilisant le code HTML approprié, puis de faire tout le modèle côté client, et de combiner cela avec une première approche API utilisant node et mongo par exemple.
La raison de cette confusion est que beaucoup d'exemples que je trouve sur GitHub utilisent Jade, et cela me semble contre-intuitif.
Veuillez m'éclairer et me redresser. J'aimerais apprendre quelques bonnes pratiques de personnes qui en savent beaucoup plus que moi.
Merci
J'utilise Jade pour générer des modèles consommés par AngularJS parce que je déteste écrire du HTML brut. Cela ressemble à quelque chose comme:
… Ce qui, à mon avis, est beaucoup plus propre que le simple HTML.
la source
ng-inlude
- ce que , éventuellement utilisé avecng-src
, diffère beaucoup des mixins et et comprend Jades?Honnêtement, je ne comprends pas pourquoi les gens se soucient de la différence entre ceci:
et ça:
Sauf que j'en trouve un un peu plus lisible par l'homme. Un peu . Je ne comprends pas pourquoi les gens sont si fervents sur le sujet. Ce n'est que du vélo. La différence est négligeable et tout programmeur compétent pourrait facilement traduire l'un dans l'autre après cinq secondes sur Google. Utilisez ce que vous voulez et laissez tout le monde se quereller pour rien. Choisissez vos batailles et engagez-vous dans des débats sur des choses qui comptent vraiment, comme les réacteurs atomiques;)
la source
if
à l'équation, tout change soudainement. Voir ci-dessus à propos des "utilisateurs premium".if
s dans votre balisage jade, vous avez de toute façon déjà besoin d'un moteur de création de modèles et vous devrez le convertir en n'importe quelleif
syntaxe utilisée par ce moteur. Je ne comprends pas vraiment vos critiques.Donc TL; DR, sur le serveur, vous pouvez utiliser n'importe quel langage [jade, haml, ...] pour générer uniquement une structure html pour votre application, cela n'a rien à voir avec angularJS car il rendra et fonctionnera avec HTML à runtime sur le frontend.
Vous n'êtes pas obligé d'utiliser Jade sur le serveur, et je suggère de ne pas l'utiliser car cela déroutera les nouveaux développeurs. Dans les projets que vous voyez, ils utilisent Jade uniquement parce qu'il est plus propre et qu'ils y sont habitués, et s'il l'utilise avec angularJS, le seul travail est de générer du HTML sans aucune logique.
la source
La réponse acceptée est quelque peu unilatérale et néglige le fait que toute configuration de pré-compilateur pour HTML a une grande utilité pour TOUT type de projet HTML: composition et flexibilité de balisage qui en résulte.
Travailler seul sur une application angulaire? Essayez Jade.
Jade améliore votre capacité à modulariser le HTML, réduit le temps que vous passez à déboguer le HTML et encourage également la création d'inventaires de balisage.
Au moment de la conception, il peut y avoir une quantité énorme d'itérations sur les parties HTML. Si la sortie HTML est basée sur un ensemble de fichiers jade, il est facile pour l'équipe de faire preuve de souplesse face à l'évolution des besoins. De plus, changer le balisage via la recomposition des inclut jade est beaucoup plus robuste que la réécriture de HTML pur.
Cela étant dit, je reconnais l'aversion générale pour le mélange angulaire et jade au stade de la production ou du développement. L'introduction d'un autre ensemble requis de connaissances syntaxiques est une mauvaise idée pour la plupart des équipes et l'utilisation du jade pourrait masquer une gestion de projet inefficace en faisant abstraction de certains travaux qui seraient interdits par les principes de DRY (par exemple, être paresseux lors de la préparation du balisage)
la source
J'ai lu toutes les réponses ci-dessus et j'ai été un peu surpris que personne n'ait mentionné un aspect qui rend l'utilisation de jade sur la génération de modèles AngularJS une chose très utile.
Comme il a déjà été dit, en production, la différence de scénarios réalistes entre la saisie de html brut et de jade est en fait notable, mais la chose la plus importante que nous ne devons jamais oublier est que parfois nous avons besoin de manière dynamique modèles angularjs modifiés et réinitialisés dynamiquement.
Pour faire simple, nous devons parfois changer le code HTML via innerHTML, puis forcer AngularJS à recompiler le contenu. Et c'est exactement le type de tâche lorsque la génération de telles vues via jade peut avoir des avantages.
De plus, AngularJS fonctionne bien avec les modèles, dont la structure est par définition bien connue. En fait, il arrive que nous ne connaissions pas la structure exacte (imaginez, disons, le rendu JSON). AngularJS sera assez maladroit ici (même si nous construisons une application angulaire), tandis que jade fera le travail.
la source
Vous pouvez inclure des modèles angulaires via Jade.
Pour les modèles de mise en cache, je perçois cela comme beaucoup moins fragile que d'inclure les modèles échappés dans les fichiers javascript.
Voir: https://docs.angularjs.org/api/ng/service/$templateCache
la source
Jade est certainement beaucoup plus proche du html que de dire Haml. Le changement de contexte est donc en fait très minime. Pourtant, ce n'est pas complètement absent. Cela n'a peut-être pas d'importance pour un développeur. Mais lorsque votre concepteur vient et vous demande comment faire fonctionner correctement une balise imbriquée, vous résolvez un problème inutile que vous avez créé en premier lieu.
Le HTML peut toujours être écrit de manière très lisible et les partiels peuvent être utilisés pour le rendre plus compréhensible. 500 lignes de tout est difficile à lire - que ce soit Jade ou HTML.
Voici un modèle Jade
Et le HTML équivalent
Lorsqu'il est écrit lisiblement, je ne vois pas le HTML comme étant très particulièrement désavantagé pour justifier un changement. Effectivement, les crochets angulaires sont une horreur. Mais je préfère les avoir, plutôt que d'avoir à gérer les doutes du concepteur si l'indirection que j'ai introduite brise le html. (Ce n'est peut-être pas le cas. Mais prouver que ce n'est pas un effort louable)
la source
Tout d'abord, vous avez toujours besoin d'une sorte de modèle côté serveur.
Les modèles purs côté client ont d'énormes inconvénients en termes de temps de chargement, ils sont donc souvent atténués par le rendu de certains éléments statiques sur le serveur. De cette façon, lorsque l'utilisateur charge partiellement une page, il verra déjà certains éléments sur la page.
Et bien, les modèles sont pratiques dans ce cas, bien que les gens utilisent parfois un générateur html statique comme Jekyll à la place.
Il y a une autre raison d'utiliser Jade qui n'a pas été mentionnée auparavant.
Espace blanc.
Si vous écrivez du HTML maintenable par l'homme avec des indentations et des sauts de ligne, chaque saut de ligne se traduira par un nœud de texte en espace blanc. Il peut à peu près visser le formatage des éléments en ligne dans certains cas et rendre le code javascript plus étrange.
Vous pouvez lire plus de détails ici: https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Whitespace_in_the_DOM
Si vous écrivez du code Jade, il est compilé en HTML d'une ligne qui ne présente pas ce problème.
la source
Lorsqu'il travaille en équipe, le front-end préfère probablement concevoir ses pages au format HTML statique. Traduire ce HTML statique en modèles dynamiques est une source d'erreurs, et l'ajout de jade ajoute une telle étape de traduction.
Comme beaucoup d'autres, je privilégie la simplicité!
la source