Ext JS Магазины и сложные объекты - PullRequest
3 голосов
/ 20 апреля 2011

Я помню, что разработчики чтения должны думать о записях в хранилище как о строке в базе данных, где каждый столбец является простым типом данных. Мы храним сложные объекты JS в магазинах Ext JS без каких-либо явных последствий.

Кто-нибудь знает о подводных камнях при хранении объектов JS в хранилище Ext JS?

Ответы [ 3 ]

3 голосов
/ 20 апреля 2011

Современные веб-браузеры очень хорошо справляются с управлением такого рода использованием памяти и скоростью обработки. Внутренне мы реализовали вид ассоциаций записей, который встроен в extjs 4, и создали сценарии с ~ 250 тыс. Сложных вложенных записей, которые хранятся без каких-либо проблем. Я полагаю, что незначительное влияние на производительность продолжит сохраняться в течение длительного времени, так как это также очень хорошо для очистки собственного использования памяти после себя. Мы зеркально отразили модели ORM нашего веб-сервера в определениях записей extjs и регулярно выполняем запросы к этим вложенным хранилищам почти так же, как и в более традиционной базе данных. Вы должны быть осторожны с тем, что вы делаете с этим, например, попытка визуализировать сетку из 250 тыс. Записей одновременно не очень хорошо сработает. Но это почти полностью влияние рендеринга DOM, а не итерации или хранения данных записи / хранения. Все это кажется еще более верным при тестировании с последними бета-версиями extjs 4.

2 голосов
/ 20 апреля 2011

Глядя на источник Ext JS, кажется, что Store - это обертка вокруг Object, которая предлагает функции сортировки / фильтрации и событий.Это простая пара ключ / значение.

Сложность объекта не должна вызывать каких-либо проблем.

Теперь обработка Store как чего-либо, кроме обертки вокруг коллекции пары ключ / значение, вызовет проблемы.Думая, что это как стол, это вызовет проблемы.Такое недоразумение приводит к плохо спроектированному коду.

A Store следует рассматривать как Мешок данных ключа / значения с вспомогательными методами для организации этого мешка.

1 голос
/ 20 апреля 2011

Полагаю, что если ваши объекты JS очень велики, это может повлиять на производительность, а если вы в конечном итоге выполните сериализацию / десериализацию этих объектов JS, это может занять некоторое время. Если вы имеете дело с сетками, вы можете уменьшить их, используя нумерацию страниц.

Магазины не обязательно используются строго для строк сетки. Они используются во многих объектах Ext, таких как выпадающие меню (выпадающие меню). Здесь он используется с парой ключ / значение. Обычно это делается для значения и отношения displayValue для данных.

Если вам нужен объект еще более низкого уровня, посмотрите на объект Ext.util.MixedCollection. Там много веселья. Это в основном хэш-карта пар ключ / значение. Я верю в исходный код Ext, магазины используют эти объекты в своей основе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...