【问题标题】:How to create href links in a view, pointing to Express routes?如何在视图中创建指向 Express 路由的 href 链接?
【发布时间】:2015-08-28 00:12:37
【问题描述】:

我想在我的视图中创建 href 链接,但我不想指向静态地址。我想根据路由动态创建 href url。

例子:

// app.js:
app.get('/test', function testPage(req, res, next) {
    // do something here
});

// inside view.html:
<a href="path('testPage')" /> // something similar
<a href="/test" /> I do NOT want this!

是我遗漏了什么,还是没有办法轻松做到这一点?

我搜索过,发现app._router.stack 有所有路线。但它们只是一个普通的 ARRAY 所以它们没有任何类型的 id 或 smth!我想出的是一个函数,它解析所有路由(从堆栈),获取它们的 name只有在函数有名称时才设置http://expressjs.com/4x/api.html#req.route ) 然后使用键(路由名称)-> 路径创建一个对象。 然后我可以(以某种方式)在视图中使用这个函数来创建路径,对吧?

有更好的想法吗?

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    来自 PHP 框架背景,我习惯了两种方式的路线。然而,从我在教程中看到的,人们只使用静态链接。我认为这与 Node.js Web 应用程序的性质有关。其中很多是SPAs,因此您只需构建一个 API,然后从前端应用程序静态引用它。

    在研究这个主题时,我偶然发现了一个名为2-way router 的小库,它可以与 Express 一起使用。我还没有尝试过,但它可能对你有用。

    编辑:试图重新搜索我的搜索结果,我找到了 similar thread about url generationexpress route naming

    编辑:您也可以实现django-like routing

    【讨论】:

    • 您好,非常感谢您的回答!我简直无法理解有人怎么能在一个有几千个链接的项目中使用静态链接——这让我发疯了。无论如何-我已经找到了您发布的一些软件包(没有找到 2way-router,似乎比其他的更好)。我不喜欢的是他们创建了一个全新的Router 类来模仿和替换 Express 路由器。我有点害怕使用它们,因为我不知道它们的表现如何以及它们有什么问题(Express 至少被大量使用)。无论如何,非常感谢您的努力,我可能会使用 2way 路由器..
    • 乐于助人!如果您打算将其中任何一个用于您的项目,请确保浏览他们的 Github 问题跟踪器并查看它们是如何维护的,因此您不要选择废弃的库。至于Router 类,我觉得还可以,他们只是存储路线,然后应用到快递应用。嘿,它们是开源的,所以如果有任何兼容性问题,您可以随时发送拉取请求或分叉存储库;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2019-01-01
    相关资源
    最近更新 更多