Вы должны быть более внимательны к соединениям с высокой задержкой и низкой пропускной способностью, когда вы создаете что-то подобное. Вероятность состоит в том, что вы будете совершать много вызовов Ajax для синхронизации данных и получения новых данных с сервера, и задержка может быть заметна, если есть большая задержка. Вам нужна стратегия, позволяющая информировать пользователя о ходе любого взаимодействия между клиентом и сервером.
В разработке это то, что можно упустить из виду, особенно если вы работаете с локальным веб-сервером, но это может быть убийственным в работе. Это означает изучение стратегий предварительной выборки и кэширования.
Вам также нужен эффективный способ управления фрагментами / шаблонами HTML. Очевидно, что есть несколько хороших модулей для шаблонов рендеринга - Mustache.js, шаблон Underscore и т. Д. - но хранение поверх фрагментов HTML может вызвать некоторые трудности при обслуживании. Я склонен хранить шаблоны HTML в отдельных файлах и загружать их динамически с помощью Ajax-вызовов (плюс кэширование для минимизации HTTP-запросов).
Редактировать - еще один минус:
Синхронизация данных - если вы используете базу данных сервера в качестве «авторитета» данных, важно поддерживать синхронизацию данных между сервером и клиентом. Это еще более актуально, если изменения данных на одном клиенте влияют на нескольких клиентов. Затем вы попадаете в сферу применения асинхронных обновлений в реальном времени, что может вызвать некоторые интересные концептуальные проблемы. (К счастью, использование каркасов и библиотек, таких как Socket.IO и Backbone.js, действительно может упростить задачу).
Редактировать - плюсы:
У этого типа приложений есть несколько огромных преимуществ - оно гораздо более гибкое и действительно может улучшить взаимодействие с пользователем. Тривиальные действия, которые обычно требуют двустороннего обращения к серверу и требуют дополнительных сетевых ресурсов, теперь можно выполнять быстро и без проблем.
Кроме того, он позволяет более эффективно связывать данные с вашими представлениями. Скорее всего, если вы обрабатываете данные на стороне клиента, у вас будет интегрированная среда, которая позволит вам организовать данные и использовать ORM - будь то Backbone.js, Knockout.js или что-то подобное. Вам больше не нужно беспокоиться о хранении данных в атрибутах HTML или во временных переменных. Все становится намного более управляемым, и это открывает двери для действительно сложной разработки пользовательского интерфейса.
Кроме того, JavaScript открывает возможность взаимодействия на основе событий, что является идеальной парадигмой для высокоинтерактивных приложений. Используя цикл обработки событий, вы можете подключить свои данные непосредственно к пользовательским и пользовательским событиям, что открывает большие возможности. Подключив ваши модели данных непосредственно к событиям, управляемым пользователем, вы можете надежно обрабатывать обновления и изменения данных и отображать соответствующий результат с минимальными усилиями. И все это происходит на большой скорости.