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和route
href=“/{{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;