使用像Jade这样的模板引擎有哪些优缺点?

9

我正在研究使用Node.js开发Web应用程序。 我来自PHP背景,除了PHP本身,我没有使用模板引擎,并且我一直只是编写纯HTML。 那么,为什么我应该或不应该使用Jade或其他模板引擎呢?

我建议您考虑使用模板引擎,因为它们可以使HTML更加易于管理和维护。 模板引擎允许您将HTML代码分解为可重复使用的组件,从而使您能够更轻松地修改和更新网站。 Jade是一种流行的模板引擎之一,它具有简洁的语法和对动态内容的良好支持。


你使用了一个模板语言,PHP 是其中之一。 - Raynos
8
明白,这就是为什么我说“除了 PHP 本身” 的原因。 - James Simpson
2个回答

10

优点:

  • 鼓励良好的代码组织(数据生成与表示代码分离)
  • 输出生成更具表现力(模板语法不需要一大堆字符串拼接)
  • 提高生产力(常见问题如输出编码、迭代、条件等已经处理好了)
  • 通常需要更少的代码(特别是jade有非常简洁的语法)

缺点:

  • 会有一定的性能开销
  • 又要学习一项新技术

3
当然。与“res.render('title-template', { title: pageTitle });”(在Express中)相比,像“res.write('<h1>' + pageTitle + '</h1>');”这样的操作总是更快的。在大多数情况下,性能开销是可以忽略不计的。如果jade(或其他模板引擎)是您的瓶颈,那么在其他方面表现良好。 - jmar777
2
好的。使用模板引擎和缓存比直接写入响应流且没有缓存更快(有时候 :))。相同的缓存逻辑可以(并且应该)在没有模板引擎的情况下应用。总之,模板引擎是一种抽象,无论它们编译成什么形式,都会带来一些开销。归根结底,它们也只是写入响应流,因此如果聪明地跳过模板引擎,速度才会更快。 - jmar777
2
我同意智能和可维护的观点 :p。然而,如果唯一的标准是速度,我个人会放弃模板引擎。 - jmar777
@Mike,你可以考虑发布一个带有代码和数据描述的问题。尽管我之前提到过自己生成输出速度会更快一些,但是我使用Jade已经有一段时间了,从未遇到过Jade本身成为瓶颈的情况。 - jmar777
1
我发现问题出在Jade引擎在非生产模式下的使用。一旦我设置NODE_ENV=production,它就飞快了。 - Mike
显示剩余5条评论

1
关于JADE或其他与HTML差异较大的模板语言:
首先,调试生成的HTML更加耗时。您在浏览器中看到HTML,需要将其解析回JADE(在您的大脑中)以与编辑器内容进行比较。这非常不方便,使调试比应该更困难。
当然,如果您是唯一编写代码的程序员,则可能不是问题。如果您是编写它们的人,似乎很容易将html行与JADE行进行匹配。
但是,当团队合作时,这就成为一个问题了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接