Jade contre EJS, quels sont les avantages et les inconvénients de chacun et à quelles fins chacun est-il conçu?
Existe-t-il d'autres moteurs de modèles compatibles express qui sont bons et pourquoi?
Jade contre EJS, quels sont les avantages et les inconvénients de chacun et à quelles fins chacun est-il conçu?
Existe-t-il d'autres moteurs de modèles compatibles express qui sont bons et pourquoi?
Réponses:
J'ai utilisé Jade avant. L'avantage de Jade est que vous avez une syntaxe plus courte, ce qui signifie que vous pouvez taper plus rapidement. Le block
dans Jade est assez puissant, ce qui peut m'aider beaucoup lorsque je traite du code HTML complexe.
D'un autre côté, il est difficile de faire des choses simples dans Jade, comme ajouter des classes dans un DIV basé sur une simple condition if. J'ai besoin de mettre quelque chose comme ça
- if (isAdmin)
div.admin.user
- else
div.user
Jade ne fait pas non plus de différence entre les balises et les variables qui rendent le code très déroutant (du moins pour moi)
a(href='/user/' + user.id)= user.name
Jade n'est pas non plus convivial pour les concepteurs. Mes amis concepteurs me donnent souvent du HTML et du CSS (ils sont passés à LESS récemment mais veulent toujours utiliser HTML), et pour cette raison, si j'utilise Jade, je dois convertir du HTML en Jade. Aussi dans Jade, nous devons utiliser des indentations, donc si votre structure HTML se complique, votre code aura l'air horrible (en particulier les tableaux). Parfois, je ne sais même pas à quel niveau je suis
table
thead
tr
td
a
img
tr
td
tbody
tr
td
Récemment, je suis passé à EJS et j'en suis satisfait jusqu'à présent. Il est très proche du HTML pur et utilise la même syntaxe que celle du moteur de modèle frontal que j'utilise (modèle Underscore). Je dois dire que tout est plus facile avec EJS. Je n'ai pas à effectuer toutes les conversions lorsque je reçois des modèles HTML de mon ami concepteur. Tout ce que j'ai à faire est de remplacer les parties dynamiques par des variables transmises par ExpressJS. Les choses qui me rendent fou lors de l'utilisation de Jade sont résolues dans EJS
<div class="<%= isAdmin? 'admin': '' %> user"></div>
Et je peux savoir ce qui est quoi avec EJS
<a href="/user/<%= user.id %>"><%= user.name %></a>
Si vous manquez la syntaxe courte de Jade (comme moi), vous pouvez combiner Zen-Coding et EJS, ce qui peut vous aider à accélérer les progrès en général. Concernant les performances, je ne vois aucune différence
Cependant, EJS n'est pas aussi puissant que Jade, il n'a pas de blocs par défaut (ce gars a implémenté une fonctionnalité de blocage pour EJS https://github.com/RandomEtc/ejs-locals )
Donc, il dépend totalement de vous de choisir ce qui vous met à l'aise. Mais si vous allez utiliser un autre moteur de template pour le frontend comme moi, c'est mieux si vous utilisez la même chose pour les deux côtés
Mise à jour du 16 décembre 2013: Récemment, je suis passé d'EJS à Swig (qui a un concept similaire à celui de Jinja2 dans le monde Python). La raison principale est le manque de bloc dans EJS même avec l'aide de ejs-locals
. Swig utilise également du HTML simple pour les modèles et de nombreuses fonctionnalités intéressantes qu'un moteur de modèle devrait avoir, par exemple des filtres et des balises que EJS n'a pas
Jade
un ou deux ans. Peut-être que ça va mieux maintenant. Cependant, en reclassant mon premier point, il ne sera pas facile de contourner cela
Je ne dirais pas que l'un est meilleur que l'autre. Ils sont différents, c'est sûr, mais «mieux» est un terme assez relatif.
Je préfère EJS car je pense que HTML n'est pas trop mal, en plus cela me permet de travailler avec d'autres sans qu'ils aient à apprendre Jade.
Cependant, Jade est plutôt propre et crée un code soigné dans vos vues.
Choisissez ce qui vous convient le mieux.