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>