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

时间:2016-04-09 22:17:47

标签: 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(title)”以纯文本显示在页面顶部。这种情况发生在所有条件中。但是,标题标签使用正确的文本进行渲染。

我也试过

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

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

在我的后端我(整个班级)..

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

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

1 个答案:

答案 0 :(得分:0)

您必须为here之类的javascript语句添加连字符。

- var title = true;

- if (title) {
    h1(title='#{title}') My Title
- }