【发布时间】:2019-01-22 22:43:16
【问题描述】:
在我的 Express JS Web 应用程序中,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='#{originalUrl}') 不工作,而 a(href=originalUrl) 工作,a href。
但是,同一变量在“h2 Welcome to #{title}, #{count}, #{originalUrl}”行被正确评估为“Welcome to Login, 2, /login”。
a href 与 h2 对同一变量的评估有何不同?
【问题讨论】:
-
这是因为当您在引号内使用
#{variableName}时,pug 会将其评估为文字字符串。但是当你试图在任何引号之外使用它时,它会理解这是一个变量并使用它的值来代替。
标签: javascript node.js express pug