Javascript Jade条件语句呈现为纯文本

Javascript Jade条件语句呈现为纯文本,javascript,html,node.js,pug,Javascript,Html,Node.js,Pug,我试图有条件地呈现我的 代码如下: <!doctype html> <html ng-app='nodeApp'> <head> if (title) <title>#{title}</title> <meta name="viewport" content="width=device-width, initial-scale=1">

我试图有条件地呈现我的

代码如下:

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

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

您必须在javascript语句前面加上连字符,如


我认为问题可能在于,您正在混合编写常规html和jade。 由于您是使用常规html标记编写的,因此if语句已经是head的子语句。但是你也使用了压痕,它变成了一种双重压痕,Jade会感到困惑。 在if语句之前尝试此操作,但不要缩进:

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

如果(标题)
#{title}

或者更好。坚持使用翡翠。

我无法复制。一般验证:
require('jade').render('if title\n#{title},{title:'test'})
,它返回预期的字符串:
'test'
@Ixe我添加了一些上下文,以查看这是否有助于添加模板,我得到以下错误:`error:./file.template:21 |>2 | 3 | 4 | 5 | if(title)意外标记“indent”`不符合他们的文档?Jade的第一类条件语法允许使用可选的括号,您现在可以省略前导-否则它是相同的,仍然只是普通的javascript:“我尝试了这个来确定,但它并没有解决问题。感谢您的评论,我将尝试一下。我希望只对变量使用jade,因为我不喜欢它的语法,而且我的网站已经用普通的HTML编写了。我目前正在寻找其他可能更适合我的选择。
if (title) {
            <title>#{title}</title>
}
const jade = require('jade');
this.locals = {
                title: process.env.sitename
            };
this.header = jade.render(this.header, this.locals);
- var title = true;

- if (title) {
    h1(title='#{title}') My Title
- }
<head>
if (title)
  <title>#{title}</title>