В моих прежних веб-приложениях, когда у пользователя был переход от одной «страницы» (без перезагрузки страницы, только нового div) к другому, я просто спрятал один div для последующего использования и созданный + показал новый. Когда пользователь вернулся из управления адресами в управление событиями, мне нужно было только скрыть текущий div и повторно показать уже использованную. Конечно, для этого нужна память, но она быстрее.Память против скорости в веб-приложениях Javascript
В моем новом веб-приложении я использую 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/) Теперь я очищаю свои divs перед тем, как перейти на новую «страницу», и заново создайте его, если пользователь вернется к нему.
Аналогично, относительно модулей 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 для последующего использования.
Вольфганг