gpt4 book ai didi

node.js - 让 Backbone 和 Express 路线发挥得很好

转载 作者:搜寻专家 更新时间:2023-10-31 23:06:23 24 4
gpt4 key购买 nike

我有一个服务于以下路线的 express 应用

/login
/signup
/
/app

我希望我的主干应用程序管理以下路由

/app/overview/:company_id/:date
/app/rooms/:company_id/:date

无论如何,express 在/app 提供基本的 app.jade然后应该将导航移交给 Backbone ,但不是拦截并给我一条找不到的路线。

我该怎么做?鉴于有人可能会复制并粘贴一个 url,例如

/app/overview/3/2012-12-12

最佳答案

可能有两个相关问题:您正在使用推送状态客户端(即使用“真实”URL,而不是散列片段,例如/app#overview)但(可能)尚未启用在 Backbone 中推送状态,并且您的快速配置不会响应那些客户端路由。

使用推送状态 URL,您仍然必须在服务器端处理这些 URL,因为用户可能会使用这些直接的“客户端”URL 访问您的网站(散列片段不会发生这种情况,因为散列部分永远不会发送到服务器)。

因此,为了修复服务器端处理,express 允许使用正则表达式作为路由,而不是:

app.get('/app', function(req, res) {
// Render the app...
});

你可以这样做(参见 here ):

// The regexp could be a little more restrictive, obviously, but you get the point...
app.get(/^\/app(\/\w+)*$/, function(req, res) {
// Render the app...
});

因此无论将哪个/app/* URL 用作您的网络应用程序的入口点,它都会获得必要的内容。

然后在您的 Backbone 初始化客户端中,您应该使用 Backbone.history.start({pushState: true}) 启动历史管理,以便启用推送状态。参见 here .

关于node.js - 让 Backbone 和 Express 路线发挥得很好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13446517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com