使用 Jade 这样的模板引擎有啥优缺点?

Posted

技术标签:

【中文标题】使用 Jade 这样的模板引擎有啥优缺点?【英文标题】:What are the pros and cons of using a template engine like Jade?使用 Jade 这样的模板引擎有什么优缺点? 【发布时间】:2011-11-16 09:53:41 【问题描述】:

我正在考虑使用 Node.js 开发一个 Web 应用程序。我来自 php 背景,我没有使用模板引擎(除了 PHP 本身),而且我一直只是直接编写 html。那么,为什么我应该或不应该使用 Jade 或其他一些模板引擎?

【问题讨论】:

你使用过一种模板语言,PHP就是其中之一。 对,这就是为什么我说“除了 PHP 本身”。 【参考方案1】:

优点:

鼓励良好的代码组织(数据生成与演示代码分开) 输出生成更具表现力(模板语法不需要大量的字符串连接) 提高生产力(输出编码、迭代、条件等常见问题已得到处理) 总体上通常需要较少的代码(尤其是 Jade 的语法非常简洁)

缺点:

一些性能开销 还有一件事要学

【讨论】:

这是什么“性能开销”。您是否建议您可以比模板引擎更快地动态生成 HTML? 当然。与res.render('title-template', title: pageTitle );(在 Express 中)相比,执行 res.write('<h1>' + pageTitle + '</h1>'); 之类的操作总是会更快。不过,在大多数情况下,性能开销都可以忽略不计。如果玉(或其他模板引擎)是您的瓶颈,那么您在其他任何地方都做得非常好。 那么好。模板引擎 + 缓存比直接写入没有缓存的响应流更快(有时:)。但是,可以(并且应该)在没有模板引擎的情况下应用相同的缓存逻辑。底线是模板引擎是一种抽象,无论它们编译成什么形式,都会带来一些开销。归根结底,他们也只是在写入响应流,因此如果巧妙地完成,跳过模板引擎只会更快。 我同意智能和可维护性:p。但是,如果唯一的标准是速度,我个人会放弃模板引擎。 我发现问题出在 Jade 未在生产模式下运行时使用的引擎。一旦我设置了 NODE_ENV=production,它就飞了。【参考方案2】:

关于 JADE 或任何其他与 HTML 有很大不同的模板语言:

首先,调试生成的 HTML 更耗时。您在浏览器中看到 HTML,您需要将其解析回 JADE(在您的大脑中)以与您的编辑器内容进行比较。这非常不方便,并且使调试变得更加困难。

当然,如果您是唯一一个编写代码的程序员,这可能不是问题。如果您是编写它们的人,那么将 html 行与 JADE 行匹配起来似乎很容易。

这是团队合作时的问题。

【讨论】:

以上是关于使用 Jade 这样的模板引擎有啥优缺点?的主要内容,如果未能解决你的问题,请参考以下文章

模板引擎和预处理器有啥区别?

Jade(Pug) 模板引擎使用文档

nodejs学习 ---- express中使用模板引擎jade

玉模板引擎,如何使用layout.jade?

nodejs 模板引擎jade的简单使用

使用jade(nodejs模板引擎)创建jquery ui选项卡