在我���Express JS网络应用程序中,一个
在
在
login
路由向登录pug视图渲染一些变量。在
login.js
中。router.get('/login', function(req, res, next) {
var locations = ["Location 1", "Location 2"];
var count = 0;
var title = 'Login';
console.log("req.originalUrl=" + req.originalUrl);
res.render('login', {
title: title, // Give a title to our page
jsonData: locations, // Pass data to the View
count: locations.length,
originalUrl: req.originalUrl
});
});
在
login.pug
文件中extends layout
block content
div(class='container mt-3')
h2 Welcome to #{title}, #{count}, #{originalUrl}
a(class="btn btn-primary" href="/location/new" role="button") NEW
br
br
ul#locList(class='list-group')
for location in jsonData
li(class="list-group-item")
a(href='#{originalUrl}' + '?' + location, class='list-group-item list-group-item-action')
h2=location
a href
中的originalUrl
变量没有被评估为'http://localhost:3000/login?Location%201
', 而是'http://localhost:3000/login#{originalUrl}?Location%201
'。
因此,我不得不将其更改为'a(href=originalUrl + '?' + location, class='list-group-item list-group-item-action')
'以使其正常工作。
简而言之,对于a href
,a(href='#{originalUrl}')
无法工作,而a(href=originalUrl)
可以工作。
然而,在行'h2 Welcome to #{title}, #{count}, #{originalUrl}
'中,相同的变量被正确地评估为'Welcome to Login, 2, /login
'。
为什么相同的变量在a href
和h2
中被评估为不同的结果呢?
#{variableName}
时,Pug 将其解析为字面字符串。但是当你尝试在任何引号之外使用它时,它会理解这是一个变量并使用其值。 - Mohit Bhardwaj