Единый HTML-сайт, использующий только шаблоны на стороне клиента и вызовы Rest

#jquery #json #templates #rest #mustache

#jquery #json #шаблоны #rest #усы

Вопрос:

Я работаю над высокодинамичным сайтом, который содержит около 10 различных страниц (вход, регистрация, мои услуги, мой профиль и т.д.).

Я подумываю об использовании фреймворка шаблонов javascript (например, jquery-temp) и хранении всех страниц в одном HTML-файле. Взаимодействие с пользователем приведет к замене / активации / скрытию различных шаблонов. На стороне сервера управление всеми запросами осуществляется с помощью вызовов rest / json. Я думаю, что html будет обслуживаться nginx, в то время как вызовы json направляются на jetty (java).

Является ли это жизнеспособным подходом и что может пойти не так?

Спасибо,

РЕДАКТИРОВАТЬ — Я знаю, как это сделать, я хочу знать, вызовет ли это проблему в долгосрочной перспективе.

Ответ №1:

Недавно я делал нечто подобное, и это работает довольно хорошо. Пара наблюдений:

  1. Вам нужно будет работать усерднее, чем в противном случае, если вы хотите, чтобы в разных представлениях были ссылки на URL-адреса и сохранялась история, чтобы все работало нормально с кнопками браузера назад / вперед. (хотя вас это может и не волновать)
  2. При первом посещении пользователем сайта загрузка одной большой начальной страницы может быть медленнее, чем разделение страниц.
  3. В кэшировании сайта нет детализации; если вы измените один символ на одной странице сайта, все это нужно перезагрузить. В отличие от того, если вы удалили страницы и позже изменили одну из страниц, любые HTTP-кэши все равно будут в порядке для других страниц.
  4. Переключение шаблонов через AJAX может дать вам немного меньшую отдачу от пользовательского интерфейса, чем при стандартной загрузке страницы, НАПРИМЕР, если соединение медленное, щелчок по обычной ссылке, по крайней мере, покажет мне, что страница загружается, тогда как вызов AJAX будет выполняться в фоновом режиме. Я не уверен, что это применимо в вашем случае, хотя, похоже, у вас будет весь предварительно загруженный HTML и просто переключите, какие биты видны. Аналогичным образом страницы, которые заполняют свое содержимое с помощью AJAX, могут отображаться менее корректно во время загрузки.
  5. И очевидно — если у пользователя не включен javascript, вы облажались. Я не уверен, что это кого-то еще волнует, но я предполагаю, что это также может повлиять на SEO.

Ответ №2:

Проблема, которую я вижу: если вы обслуживаете шаблоны и данные из разных доменов, междоменные запросы по-прежнему являются головной болью. Но вы можете перенаправлять запросы на тот или иной сервер, используя nginx или выделенный прокси-сервер, в зависимости от пути, например, отправлять html’ы с example.com/html и данные из example.com/rest.

Комментарии:

1. Все будет обслуживаться из одного домена.

2. Выбрали ли вы какой-нибудь MVC (MVVM)-фреймворк на стороне клиента, чтобы упростить архитектуру вашего приложения? Что-то вроде backbone.js или knockout.js ?

3. YUI3 теперь также имеет MVC-фреймворк приложения, аналогичный backbone.js.