Как правильно обновить веб-приложение Durandal SPA при добавлении новых представлений?

Я только начинаю играть с Дюрандалем, используя стартовый набор. Я добавил очень простую новую комбинацию view/viewmodel (по сути, копирование/вставка существующей из примера) и mapNav() добавил маршрут.

Проблема возникает, когда я пытаюсь обновить свой браузер... новый вид просто не появляется. Его нет на панели навигации, и я не могу перейти непосредственно к представлению, набрав в адресной строке. Я знаю, что код правильный (или должен быть?!), потому что, если я перехожу на страницу в другом браузере, все выглядит так, как должно.

Есть ли какое-то кеширование браузера, которое Дюрандаль как-то делает? Иногда F5 или Ctrl+F5 работают для обновления, иногда нет. Я также не могу сделать глубокую ссылку на конкретную «страницу». То есть:

http://localhost:52625/#/newpage просто дает мне пробел

Что мне не хватает?


person AR.    schedule 13.05.2013    source источник
comment
Какой браузер вы используете   -  person PW Kad    schedule 14.05.2013
comment
Я наблюдаю подобное поведение в Firefox, Chrome и IE9. IE9 кажется «самым сложным» для обновления.   -  person AR.    schedule 14.05.2013


Ответы (2)


Большинство браузеров будут кэшировать модули, возвращенные через RequireJS, именно так Durandal получает свои модули и модели представлений.

CTRL+F5 не помогает, потому что это просто обновляет начальную страницу — все модули по-прежнему запрашиваются с использованием javascript (RequireJS), поэтому они обычно сначала извлекаются из кеша.

Я обнаружил, что лучше всего отключить кэширование в инструментах разработчика вашего браузера. Это гарантирует, что все сетевые запросы загружаются непосредственно из источника, а не из кеша.

См. этот вопрос для получения дополнительной информации: Отладка при использовании кэша require.js

Другое решение — настроить RequireJS для установки свойства urlArgs: https://stackoverflow.com/a/8479953/91189.

Это решение работает нормально, но усложняет отладку, по крайней мере, в Chrome, потому что точки останова теряются каждый раз при загрузке модуля, поскольку технически каждый раз запрашивается другой файл.

person Joseph Gabriel    schedule 14.05.2013

Вариант, который я использую в Chrome, — открыть инструменты разработчика и щелкнуть правой кнопкой мыши кнопку обновления. Существует опция «Очистить кеш и жесткая перезагрузка», которая всегда решает эту проблему для меня. Я не знаю эквивалента в IE, но попробуйте это и посмотрите, решит ли это вашу проблему.

введите здесь описание изображения

person PW Kad    schedule 14.05.2013
comment
Удивительный! Я использую инструменты разработчика Chrome в течение многих лет, и я только что увидел новую функцию обновления! - person Saeid; 18.08.2015