我有一个较旧的Web应用程序,它是Backbone和.Net 6的混合。当我第一次在Visual Studio 2022中启动该应用程序进行开发时,它加载良好,一切都运行得很好。
我使用 Backbone 路由和一个助手库称为backbone.subroute
为我所有的导航。它的工作正常,直到看到下面...
正如我所说的,在我点击浏览器的refresh
按钮之前,一切都运行得很好。当我刷新浏览器时,我立即得到(无论我在哪条路线上):
找不到此localhost页面
找不到网址为的网页:游戏管理员/颜色浏览器
HTTP错误404
浏览器控制台或网络选项卡中除了404错误外什么都没有,就好像浏览器完全忘记了路由。
后退按钮也不起作用,* 直到 * 我回到主起始页(https://localhost:33201/studio)。
另外,如果我删除URL行中的路由,这样它就只是一个基本的网站,只有默认的路由,如下所示:https://localhost:33201/studio
,则它将正确加载。
我的工艺路线设置如下:
我先把这个叫做:
Backbone.history.start({
pushState: true
});
然后我的路线:
export default Backbone.Router.extend({
routes: {
'': 'defaultRoute',
'gameWorld': 'gameWorld',
'gameWorld/*subroute': 'gameWorld',
'playerStats': 'playerStats',
'playerStats/*subroute': 'playerStats',
'gameData': 'gameData',
'gameData/*subroute': 'gameData',
},
initialize: function (args) {
const { playerSetup } = args;
this.subrouteOptions = {
ctx: RouteContext,
playerSetup,
}
this.gameView = (new GameView({
playerSetup,
})).render();
},
defaultRoute: function () {
Backbone.history.navigate('/studio', { trigger: true });
},
gameWorld: function (subroute) {
import('routes/GameRouter').then(GameRouter => {
new GameRouter.default('gameWorld', this.subrouteOptions);
});
},
playerStats: function (subroute) {
import('routes/PlayerRouter').then(PlayerRouter => {
new PlayerRouter.default('playerStats', this.subrouteOptions);
});
},
gameData: function (subroute) {
import('routes/GameDataRouter').then(GameDataRouter => {
new GameDataRouter.default('gameData', this.subrouteOptions);
});
}
});
这真的很难调试,因为浏览器除了404之外没有提供任何错误。
而且,我把console.logs
放在了任何地方......当我启动应用程序并导航时,我可以看到它们,但一旦我点击刷新,我就什么也看不到了。
但是,只要我回到default
路线,也就是/studio
,那么一切都神奇地重新开始工作。
所以我不知道为什么刷新按钮这样做。
有人知道这是什么吗?
1条答案
按热度按时间a8jjtwal1#
如果您的应用程序不是从您的域的根url /提供服务的,请确保告诉History根的实际位置,作为一个选项: Backbone 网.历史.开始({推送状态:true,根目录:“/公开/搜索/"})
来源:http://backbonejs.org/#History