2013-12-15 2 views
1

Я новичок в Knockout.js, и мне это очень нравится.Производительность Knockout.js - сколько наблюдаемых?

Скажем, я внедряю веб-блог и хочу добавлять/редактировать/удалять комментарии в блоге с помощью Knockout.js. В целях этого я определяю Комментарий viewmodel с темой, текстом и тегами (в моем реальном приложении мне нужно гораздо больше полей, например, от 10 до 20).

После того, как сообщение было отредактировано пользователем и опубликовано на сервере, я хочу обновить его на экране с последними значениями (включая те, которые поступают с сервера - например, timestamp). Похоже, мне нужны наблюдаемые (не просто) свойства для каждого перечисленного поля, иначе значения не будут обновляться на экране пользователя после обратной передачи.

Теперь, если у меня есть 20 наблюдаемых за комментарий, а есть 50? 100? комментарии на экране, то он будет медленно замедлять браузер? Как насчет мобильных устройств? Если да, есть ли другой способ добиться того, чего я хочу?

Другой возможный вариант - использовать viewmodels только для редактируемого комментария. В этом случае мне как-то нужно «отпереть» другие режимы просмотра из html-элементов - например, удалить его и снова выполнить. Но здесь я не вижу хорошего решения.

+0

Лучший способ найти такой ответ - написать прототип и попробовать его. –

+0

Да, эта простая идея пришла ко мне в 3,42 утра. :) Я сделаю это. Но интерес интересен и другим. – LINQ2Vodka

ответ

1

Интересный вопрос.

Короткий, простой ответ - нет.

Производительность браузера не является проблемой, если вы специально не разрабатываете приложение, которое известно или ожидается, что это будет удар производительности.

Браузер хорошо разработан для обработки очень больших объемов данных. Будь то загрузка новых данных с сервера или отображение элементов DOM. Я бы сказал, что браузер может обрабатывать более 1000 комментариев (образованное предположение).

Взгляните на приложение Google (например, календарь) - они, как правило, обрабатывают огромное количество данных.

1

Этот сценарий сценарий звучит как идеальный матч для mapping plugin:

// Every time data is received from the server: 
ko.mapping.fromJS(data, viewModel); 

И если вы когда-нибудь попасть в проблемы с производительностью, the Viewmodel plugin претензии в несколько раз быстрее, в частности, для выполнения этой задачи обновления вашего ViewModel из обновленная модель.

ko.viewmodel.updateFromModel(viewmodel, updatedModel); 
Смежные вопросы