我不确定我是否很好地理解 pushstate 和路由的情况,但我被困在尝试使用 pagejs 或 Grapnel 或其他类似的 javascript 路由器路由单页应用程序。
我想要的是能够浏览我的程序并通过在位置栏中手动输入路线(这样我就可以将我的水疗中心各个部分的链接发送给第三方)。例如,我无法使用以下代码手动导航到 /test 路线。
以下是pagejs的示例。
如果收到对 /login 的请求,我还让我的 nodejs 后端重定向到 /#login。
如何使用 pushstate 以便我可以在位置栏中输入手动地址并从路由器和 html 链接浏览它?我在这里想念什么?
一些示例代码:
page('/',index);
page('/signin',signin);
page('/test',test)
page();
function index() {
console.log('in index')
new WelcomeView();
console.log('rerouting');
page('/signin');
}
function signin() {
console.log('in signin')
//new SigninFormView();
}
function test() {
console.log('in test');
}
在welcome.html
click <a href="/#test">lets see</a>
在 app.js 中(服务器端)
//router redirect to webapp
app.use(function(req, res, next) {
const redirectUrl=(req.secure ? 'https://' : 'http://') + req.headers.host +'/#'+req.originalUrl.substring(1);
res.redirect(redirectUrl);
});
这有以下结果:
1)导航到/我得到欢迎页面和它已导航到登录路线的控制台日志
2)在地址栏中手动写入链接 /signin 我再次导航到重定向的 / 路由
3)在地址栏中手动编写链接 /#signin 我再次导航到重定向的 / 路由
4)再次单击welcome.html中的链接通过/路由重定向我
5)单击welcome.html中的链接并将其更改为 /test works。