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>
Author: punith bp, 2013-04-19

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&amp;msid=217708588685721440865.0004d1d4faefdd11adf39&amp;ie=UTF8&amp;ll=43.167638,-7.838262&amp;spn=1.010793,0.991384&amp;t=m&amp;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&amp;msid=217708588685721440865.0004d1d4faefdd11adf39&amp;ie=UTF8&amp;ll=43.167638,-7.838262&amp;spn=1.010793,0.991384&amp;t=m&amp;output=embed")

iframe(width="420", height="315", src="http://www.youtube.com/embed/_Vkm2nMM3-Q", frameborder="0", allowfullscreen)
 74
Author: laconbass,
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 .

 7
Author: Nelo Mitranim,
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);
  });

});

 1
Author: nilakantha singh deo,
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