2013-05-07 3 views
2

Я пишу SPA с несколькими разными видами. Все представления представят результаты поиска, поэтому было бы легче, если бы все они могли быть заполнены после получения результата поиска. Это также ускорило бы некоторые вещи, если бы мне не пришлось отображать каждый вид при вводе. Например, одно из представлений содержит карту, которая выиграла бы от некоторой предварительной загрузки (и не принесет большой пользы от повторного рендеринга).Предварительная загрузка и сохранение Durandal просмотров

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

Можно ли предварительно загрузить виды и сохранить их в Durandal? Если да, то как мне это сделать?

Обратите внимание, что я новичок в Durandal.

ответ

0

Почему вы не можете использовать свойства hide и show css, а не использовать представления? Поскольку все ваши «взгляды» заполняются из одной и той же модели данных. Durandal отключит представление из DOM при деактивации и повторном подключении, когда просмотр снова активируется. Это означает, что просмотр должен быть повторно отображен веб-браузером, и нокауту придется повторно применить все привязки к элементам DOM.

+0

Вы имеете в виду не использовать Durandal? Это резервный план, но я подумал, что было бы полезно использовать какую-то структуру. У него есть контроллер, маршрутизатор, события, переходы и т. Д. –

+0

Если все, что вы хотите сделать, это несколько представлений, которые делят данные из одной и той же модели данных и должны быть привязаны одновременно, тогда «Да» Я говорю не использовать Дюрандал. – Yogesh

+0

Приложение довольно большое и будет иметь много html + нескольких разработчиков, работающих над ним, поэтому система включения в Durandal, например, будет полезна для проекта. –

0

Durandal не будет загружать один и тот же шаблон несколько раз, так как он использует requirejs и плагин text, чтобы выполнить фактическую загрузку. Это приводит к снижению производительности, особенно при последующих посещениях, когда эти файлы поступают из кеша. Кроме того, может быть возможно использовать requirejs optimizer для упаковки ваших шаблонов в один файл, хотя я никогда не пытался это сделать сам.

У Durandal есть опция в его составном модуле, который называется cacheViews, который находится под дополнительными настройками, на которые стоит обратить внимание. Он не создает предварительную загрузку шаблонов, но позволяет избежать их повторной привязки. Это оптимизация, которая не работает в общем случае (именно поэтому она включена), но она может работать для вашего сценария.

Тем не менее, загрузка внешних представлений - это то, как должна использоваться композиция Дурнадала (хотя это выглядит как Durandal might be extended to support your use case). Если вы собираетесь предварительно загружать свои шаблоны, стоит подумать о том, чтобы не использовать компоновку привязки и просто использовать knockout's template binding напрямую. Вы потеряете часть life cycle management, которую Durandal разрешает для вас, но если вы планируете полностью отказаться от Дюрандаля, я не думаю, что это будет большой проблемой. И в любом случае, воссоздать его не так уж сложно.

0

Проблема с text.js - плагин RequireJS. Итак, я изменил его для моего использования, чтобы сделать логику шаблона предварительной загрузки.

Я создал пример. my coder wall blog Example code

Смежные вопросы