В моих прежних веб-приложениях, когда у пользователя был переход с одной «страницы» (без перезагрузки страницы, просто новый div) на другую, я просто спрятал один div для дальнейшего использования и создал + показал новый. Когда пользователь вернулся из управления адресами в управление событиями, мне нужно было только скрыть текущий div и снова показать уже использованный. Конечно, это требует памяти, но быстрее.
В моем новом веб-приложении я использую Backbone.js, Require.js и jQuery. Все мои модули - AMD (jquery 1.7.1, backbone.js 0.5.3-optamd3, ...).
После прочтения интересных блогов Дерика Бэйли (http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/)) теперь я очищаю свои div-ы перед переходом на новую "страницу" и воссоздаю ее на случай, если пользователь вернется к ней.
Аналогично, в отношении модулей requirejs и amd, которые я использовал для стратегии скорости по сравнению с памятью: сердце моего веб-приложения находится в моем единственном объекте маршрутизатора. Если пользователь выбирает «страницу» / функцию в первый раз, я загружаю для нее модуль amd (это объект представления backbone.js) и все его зависимости с помощью команды require и сохраняю полученный объект представления (с его объектом модели). ) для последующего использования в массиве в объекте маршрутизатора. Когда пользователь возвращается, я беру сохраненный объект представления и повторно визуализирую представление.
Полагаю, я переключусь с этого поведения также на постоянную перезагрузку модуля (из кэша), но я не уверен.
Чтобы идти по наилучшему пути, я хочу лучше понять и хочу задать 2 вопроса:
- У меня 5 модулей AMD. Когда пользователю нужна функция, я загружаю и выполняю модуль и в результате получаю объект просмотра backbone.js, который я сохраняю в массиве в моем объекте маршрутизатора. Каждый модуль AMD имеет Backbone.js (версия AMD) в качестве зависимости. Когда пользователь посетил все 5 "страниц" и все мои 5 объектов просмотра сохранены в моем массиве, у меня есть 5 копий backbone.js в памяти моего браузера, поскольку каждая зависимость backbone.js извлекается из кэша и выполняется заново, или сборщик мусора убрал его?
- Как другие разработчики веб-приложений думают об этой скорости по сравнению со стратегией памяти?
ПРОДОЛЖЕНИЕ
Сегодня я нашел похожий вопрос по stackoverflow (http://stackoverflow.com/questions/7866971/how-does-amd-specifically-requirejs-handle-dependancies-across-multiple-module).
Ответ был таким: «Он будет загружен только один раз, оба вышеуказанных модуля получат одинаковое значение модуля ...».
Так что, кажется, не так уж и плохо хранить результаты уже загруженных + выполненных модулей amd для дальнейшего использования.
Wolfgang