Node.js 基于链接值的动态路由表达式
我正在尝试设置一些动态路由,从所选链接中提取值,并在下一页的名称之前将其传递到我的路由中。例如: 我在Node.js 基于链接值的动态路由表达式,node.js,express,routes,Node.js,Express,Routes,我正在尝试设置一些动态路由,从所选链接中提取值,并在下一页的名称之前将其传递到我的路由中。例如: 我在'/'上有一个链接,然后单击链接 我希望将此链接值传递到下一页渲染的路径中。比如“/solid/next page” 我已经设置了一些路由,但我认为它没有按照我想要的方式正确地拉动路由/:pattern/next page是我特别要说的路线 以下是我的看法: <!DOCTYPE html> <head> {{> head}} </head> &l
'/'
上有一个链接,然后单击链接
我希望将此链接值传递到下一页渲染的路径中。比如“/solid/next page”
我已经设置了一些路由,但我认为它没有按照我想要的方式正确地拉动路由/:pattern/next page
是我特别要说的路线
以下是我的看法:
<!DOCTYPE html>
<head>
{{> head}}
</head>
<body class="pattern-wrapper">
{{> navigation}}
<div class="container">
<div class="row pattern-choice">
<div class="col-md-12">
<h2><i>Choose a pattern</i></h2>
<ul>
<li class="button-border">
<h3 class="button-choice" ><a href=":pattern/next-page" class="button-link" id="solid-choice">SOLID</a></h3>
</li>
<li class="button-border">
<h3 class="button-choice" id="stripe-choice"><a href=":pattern/next-page" class="button-link" id="stripe-choice">STRIPE</a></h3>
</li>
<li class="button-border">
<h3 class="button-choice" id="plaid-choice"><a href=":pattern/next-page" class="button-link" id="plaid-choice">PLAID</a></h3>
</li>
</ul>
</div>
</div>
</div>
</body>
</html>
你很接近。您需要使模式变量可用于模板。您可以通过将
res.render('pages/color.hbs')
更改为res.render('pages/color.hbs',{pattern:req.params.pattern})
然后更改模板以使用新可用的变量:
Hey@Ryan,谢谢您的回答。我对您进行了更改,但当我单击链接时,它会将我带到localhost:3000/下一页,但未找到404
错误页,并忽略{pattern}
。这些更改是否正确<代码>路由器.get('/:pattern/next page',函数(req,res){res.render('pages/color.hbs',{pattern:req.params.pattern});})代码>
实际上,这比我最初想象的要复杂一些。当有人单击一个步骤时,这不应该改变他们可以单击的步骤吗?正在单击的链接的值应该是传递给{{pattern}
的值,因此在我上面的示例中,实体
将取代{pattern}
使链接将用户发送到/solid/suit color
尝试在href和routehref=“/{{pattern}}/..”
router.get('/:pattern/..')
仍不工作。该链接删除了localhost:3000
,现在我得到了“//下一页”。这可能是因为路由不知道选择了什么参数,因为它不能全局访问?我不确定通过点击链接,它是否真的提供了一个参数,供路由使用。这听起来对吗?
var express = require('express');
var router = express.Router();
router.get('/', function(req, res){
res.render('pages/index.hbs');
});
router.get(':pattern/next-page', function(req, res){
req.param('pattern');
res.render('pages/color.hbs');
});
router.get('/suit-result', function(req, res){
res.render('pages/suit-result.hbs');
});
module.exports = router;