javascript - Jade 条件语句呈现为纯文本

标签 javascript html node.js pug

我正在尝试有条件地渲染我的 <head> 中的一些标签

代码如下:

<!doctype html>
    <html ng-app='nodeApp'>

    <head>
        if (title)
            <title>#{title}</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta charset="UTF-8">
        <meta name='author' content='#{author}'>
        <meta name='og:title' content='#{title}'>
        <meta name='description' content='#{description}'>
        <meta name='og:description' content='#{description}'>
        <meta name='og:image' content='#{image}'>
        <meta name="theme-color" content="#3F51B5">
        <!-- CSS files are inserted here -->
        <link rel="stylesheet" href="/static/client.css" type="text/css">
    </head>

当我转到我的页面时,文本“if(标题)”会以纯文本形式呈现在页面顶部。所有条件都会发生这种情况。但是,标题标签会使用正确的文本呈现。

我也尝试过

if title
            <title>#{title}</title>

if (title) {
            <title>#{title}</title>
}

在我的后端我有(整个类(class))..

const jade = require('jade');
this.locals = {
                title: process.env.sitename
            };
this.header = jade.render(this.header, this.locals);

因此,站点名称会正确返回,因为标题已填充,但 if 语句不执行任何操作,只是呈现为纯文本。想法?

最佳答案

我认为问题可能在于你将常规 html 与 jade 混合在一起编写。 由于您使用常规 html 标签编写,因此 if 语句已经是一个子项。但如果你也使用缩进,它就会变成一种双重缩进,而 Jade 就会感到困惑。 尝试在 if 语句之前不缩进:

<head>
if (title)
  <title>#{title}</title>

或者更好。始终如一地使用 Jade。

关于javascript - Jade 条件语句呈现为纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36523385/

相关文章:

javascript - Canvas 多个弹跳方 block - Clearing Canvas

node.js - Async.until 函数参数

javascript - 如何使 javascript 链接表现得像 html 链接?

javascript - 在 mouseout 上关闭下拉菜单

javascript - 从匿名回调传回值的最简单方法?

html - 单选按钮和文本方向

javascript - 内容更新时返回 'version mismatch' 的内容 API

node.js - 自动化 e2e 测试 - WebDriverJS、Jasmine

javascript - 如何发送HTTP请求以在node.js中提交表单到另一个网站?

javascript - 事件处理程序的幕后情况是怎样的?它适用于其他功能吗?