Czy używanie HTML w Jade jest uważane za złą praktykę?
Jade wygląda jak fajny silnik szablonów i myślę, że użyję go do następnego projektu. Jednak część składni nie ma dla mnie sensu.
Co dostajesz robiąc to:
ul
li
a(href="#book-a") Book A
Zamiast:
<ul>
<li><a href="#book-a">Book A</a></li>
</ul>
Rozumiem, że oszczędzasz na pisaniu, ale wydaje mi się to mniej czytelne. Zauważyłem na live demo Jade, że zwykły html przechodzi przez tłumaczenie. Więc byłoby to uznane za złą praktykę zrobić coś takiego:
<div class="someClass">
<h3> #{book.name} </h3>
</div>
3 answers
Tło
Składnia jade / pug pozwala na zwykły HTML (lub inny zwykły tekst) poprzez użycie 3 składni, jak widać w odniesienie na stronie projektu.
Składnia kropek (znana również jako " Blok w znaczniku")
ul.
<li><a href="#book-a">Book A</a></li>
<li><a href="#book-b">Book B</a></li>
Składnia Pipe (znana również jako " Piped Text")
ul
| <li><a href="#book-a">Book A</a></li>
| <li><a href="#book-b">Book B</a></li>
Składnia znacznika (znana również jako " Inline w znaczniku"), "Po prostu umieść trochę treści po tag " , może również zrobić sztuczkę
ul
li <a href="#book-a">Book A</a>
Który wyrenderuje
<ul><li><a href="#book-a">Book A</a></li></ul>
Pytanie
Wróć do pytania, twoja próbka
<div class="someClass">
<h3> #{book.name} </h3>
</div>
Może być napisane tak prosto jak
.someClass
h3= book.name
Który jest o wiele bardziej czytelny, myślę, że w takim przypadku powinieneś rozważyć złą praktykę pisania surowego HTML, ale nie zawsze.
IMO
IMO, zdrowy rozsądek jest najlepszą dobrą praktyką. Może rozważyłbym użycie surowego fragmentu HTML do wstawienia widżetu na stronie, tj. film z youtube lub niestandardowa mapa google .
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.es/maps/ms?msa=0&msid=217708588685721440865.0004d1d4faefdd11adf39&ie=UTF8&ll=43.167638,-7.838262&spn=1.010793,0.991384&t=m&output=embed"></iframe>
<iframe width="420" height="315" src="http://www.youtube.com/embed/_Vkm2nMM3-Q" frameborder="0" allowfullscreen></iframe>
Jak wspomniano powyżej, tutaj nie ma sensu używać składni atrybutu . Wynik jest prawie taki sam i jest szybszy od opuszczenia surowego html.
iframe(width="425", height="350", frameborder="0", scrolling="no", marginheight="0", marginwidth="0" src="https://maps.google.es/maps/ms?msa=0&msid=217708588685721440865.0004d1d4faefdd11adf39&ie=UTF8&ll=43.167638,-7.838262&spn=1.010793,0.991384&t=m&output=embed")
iframe(width="420", height="315", src="http://www.youtube.com/embed/_Vkm2nMM3-Q", frameborder="0", allowfullscreen)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-30 01:54:11
Jade udostępnia teraz składnię inline dla zagnieżdżonych tagów:
a: img
Zamienia się w
<a><img/></a>
Zaczerpnięte z oficjalnej dokumentacji .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-30 16:53:13
Możesz użyć następującego podejścia, aby użyć zwykłego html jako silnika widoku.
app.set('views', path.join(__dirname, '/path/to/your/folder'));
app.set("view options", {layout: false});
app.engine('html', function(path, opt, fn) {
fs.readFile(path, 'utf-8', function(error, str) {
if (error)
return str;
return fn(null, str);
});
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-13 03:32:58