node.js - 在 Jade 中使用 HTML 是否被认为是不好的做法?

标签 node.js express pug template-engine

Jade 看起来像一个很酷的模板引擎,我想我会在我的下一个项目中使用它。但是,有些语法对我来说没有意义。

这样做你会得到什么:

ul
  li
    a(href="#book-a") Book A 

代替:

<ul>
  <li><a href="#book-a">Book A</a></li>
</ul>

我知道您节省了一些打字,但对我来说似乎不太可读。我在 Jade 的现场演示中注意到常规 html 直接通过翻译。那么做这样的事情会被认为是不好的做法吗:

<div class="someClass">    
  <h3> #{book.name} </h3>
</div>

最佳答案

背景

实际上,jade/pug 语法通过使用 3 种语法允许纯 HTML(或任何其他纯文本),正如您在 the reference on the project's site 中看到的那样.

点语法(也称为“Block in a Tag”)

ul.
  <li><a href="#book-a">Book A</a></li>
  <li><a href="#book-b">Book B</a></li>

管道语法(也称为“Piped Text”)

ul
  | <li><a href="#book-a">Book A</a></li>
  | <li><a href="#book-b">Book B</a></li>

标签语法(也称为“Inline in a Tag”),“只需在标签后放置一些内容”,也可以做到这一点

ul
  li <a href="#book-a">Book A</a>

将渲染

<ul><li><a href="#book-a">Book A</a></li></ul>

问题

回到你的问题,你的样本

<div class="someClass">    
  <h3> #{book.name} </h3>
</div>

可以写得这么简单

.someClass
  h3= book.name

我认为这更具可读性,因此在这种情况下,您应该考虑编写原始 HTML 的不好做法,但并非总是如此。

国际海事组织

IMO,常识是最好的做法。也许我会考虑使用 HTML 的原始 block 在页面上插入小部件,即 youtube 视频或自定义谷歌地图 <iframe>。

<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>

如上所述,这里使用 attribute syntax 没有意义.结果几乎相同,并且更快地离开原始 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)

关于node.js - 在 Jade 中使用 HTML 是否被认为是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16094423/

相关文章:

javascript - JQuery 无法与 Jade 一起使用

node.js - 使用jade编译时出现循环for in template和 "Cannot read property ' length' of undefined“错误

javascript - 如何改进 Node.js 中的数据验证? (寻找最佳实践)

javascript - 程序失败,因为readFile是异步的?

javascript - Vue.js/Nginx/Node.js - 413 请求实体太大

javascript - Cors 安全性与 cookie

node.js - 我们可以使用 fcm-node 推送通知将对象发送到数据中吗

javascript - 浏览器作为 UDP (dgram) 客户端

javascript - 使用 Express 提供动态生成的图像或保存的图像

templates - 在 Jade View 中使用 javascript 代码 - if(variable) 显示未定义而不是传递