Quelle partie de ce code sont des éléments de modèle de jade et qui sont des éléments JavaScript?
-
25-10-2019 - |
Question
Ce que je comprends est que le moteur de modèle de jade a ses propres éléments structurants et il prend également en charge un certain JavaScript. Mais dans le code suivant, je ne peux pas distinguer ce qui est un code non JavaScript (ce qui est Node.js + express.js ):
Ceci est le fichier de vue (de index.jade):
h1= title
#articles
- each article in articles
div.article
div.created_at= article.created_at
div.title
a(href="/blog/"+article._id.toHexString())!= article.title
div.body= article.body
Ceci est le fichier du serveur (app.js):
app.get('/', function(req, res){
articleProvider.findAll( function(error,docs){
res.render('index.jade', { locals: {
title: 'Blog',
articles:docs
}
});
})
});
aide quelqu'un peut me effacer cette confusion?
La solution
Le Readme Jade-Lang a code section qui va dans les détails sur ce qui est et n'est pas javascript côté client.
En gros, si vous utilisez le code dans votre modèle, et ce n'est pas dans une balise de script, il va rendre la sortie de ce javascript avant qu'il envoie au navigateur. Il est encore javascript, mais il est exécuté côté serveur. Tout javascript dans une balise de script est juste javascript normal et est envoyé au navigateur comme tout le reste.
Comme pour l'exemple que vous avez publié, la ligne:
- each article in articles
traduit:
for (var article in articles) {
/* Whatever else is going on in the template */
}
Aussi:
a(href="/blog/"+article._id.toHexString())!= article.title
Traduit (simplifié) à
"<a href=\"/blog\"" + article._id.toHexString() + ">" + /* Escaped article.title */ + "</a>"
Mais Jade et Parsis rend les résultats avant qu'il ne soit envoyé au navigateur.