Я использую Backbone.js для разработки веб-приложения, и у меня есть сомнения в правильном использовании маршрутизации и Html5 Push State. Вот мой кодBackbone.js И Push State
var HoopRouter = new HoopApp.Router.RequestManager;
Backbone.history = Backbone.history || new Backbone.History({});
Backbone.history.start({
root : '/web_app',
pushState : true
});
И в методе я это делаю:
Backbone.history.navigate('#gameScreen/31', { trigger : true });
Это workds правильно, но дает мне URL, как этот https://my_host/web_app/gameScreen/31
, но когда я ввожу этот адрес в навигационной панели и нажмите в браузере говорится, что URL-адрес не найден на этом сервере, а ссылки href не работают. Если я проверю pushState на false, он работает хорошо, но Backbone использует маршруты «#», и я хочу использовать маршруты «/». Я не знаю, забыл ли я что-то.
У вас есть страница, соответствующая https: // my_host/web_app/gameScreen/31 или серверный маршрутизатор, который будет обслуживать эту страницу? На основании того, что вы показали нам до сих пор, я не вижу определенных маршрутов на стороне клиента, поэтому, если ответ на предыдущий вопрос не будет да, я бы не ожидал, что это сработает. – kinakuta
На данный момент это является моим определенным на сторону клиента маршруты { \t \t \t "": "Индекс", \t \t \t "gameScreen /: GameID": "html5game", \t \t \t ": любой": «NotFound " \t \t} – Flip120
Ваш сервер также захочет попробовать выполнить этот маршрут, поэтому вам нужно будет явно игнорировать маршрут, если вы хотите только маршрутизацию на стороне клиента. Один типичный способ справиться с этим состоит в том, чтобы он обрабатывал базовый маршрут и отрезал что-либо после этого в URL-адресе, поэтому он обрабатывает все маршруты из этого базового URL-адреса одинаково. – kinakuta