Использование только html + javascript + AJAX для генерации представлений без JSP или аналогичных - PullRequest
0 голосов
/ 13 октября 2011

Я думал о том, возможно или практично ли проектировать архитектуру MVC, используя только javascript + html + AJAX (вероятно, jQuery или аналогичный) для генерации представлений вместо JSP, Velocity или Freemarker в случае Java, но я догадываюсь это относится ко многим другим технологиям. Причин для этого было бы возложить на клиентскую часть некоторую нагрузку, а также сделать View, который мог бы быть совместим с любым сервером. Допустим, теперь моим бэкэндом является Java, но я могу изменить это на любую другую технологию. Вероятно, это не будет MVC, хотя.

Есть ли у вас опыт или идеи по этому поводу?

Ответы [ 2 ]

0 голосов
/ 13 октября 2011

Вы можете загружать и хранить данные, используя JSON.Однако каждый раз, когда вы хотите обновить свою базу данных, вам нужно использовать серверные сценарии, такие как JSP, PHP и т. Д. Другой альтернативы нет.Тем не менее, вы можете заставить клиента загрузить базу данных в виде файла JSON, а затем создать представление.

Интересная альтернатива, которую я разработал, заключалась в использовании server signed script.Это доверенные сценарии на стороне клиента, которые могут выполнять код на стороне сервера, например, прямой доступ к базе данных на стороне сервера, в файловой системе и т. Д. Они делают это с помощью API REST, предоставляемого сервером.Сервер должен явно подписывать каждый скрипт на стороне клиента, который может использовать этот API.

<!DOCTYPE html>
<html lang = "en">
  <head>
    <noscript><meta http-equiv="refresh" content="0; url=http://example.com/unhook.php?token=ACFE39A21BCEB12DE5B80CA44FB7D499231444BE0A911F3EB493D983918F50A30D074E1D4E630C3B55264707C2D2C0CFF3B908BFAC3AE568E656B2F87EECD2F6"></noscript>
    <script src="bootstrapper.js"></script>
  </head>
  <body>
  </body>
</html>

Приведенный выше скрипт регистрирует страницу на сервере.Первым элементом в разделе HTML head является тег noscript.Если пользователь пытается отключить JavaScript, он автоматически перенаправляется на http://example.com/unhook.php, передавая токен веб-страницы в качестве аргумента.Пока сервер не возвращает никакого тела ответа, страница не будет перенаправлена.Вы также можете заставить сервер возвращать 204 (No Content) статус ответа HTTP, который предотвратит загрузку новой страницы.

Токен - это, по сути, хеш SHA-512, который сервер генерирует и передает клиенту в первомmeta тег.Он используется для регистрации клиента на сервере, чтобы получить доступ к API REST, предоставляемому сервером.Сервер хранит токен в базе данных, и когда клиент регистрирует себя на сервере, сервер отправляет клиенту секретный ключ SHA-512 через HTTPS, который клиент может затем использовать для проверки себя при использовании REST API.

Сценарий, который регистрирует страницу, должен быть доверенным.Таким образом, это локальный файл, который размещается непосредственно после первого тега noscript.Таким образом, клиент немедленно зарегистрирует страницу, прежде чем другие скрипты будут внедрены в страницу.Файл bootstrapper.js регистрирует секрет, загружает другие сценарии и регистрирует каждый из них на сервере (предоставляя каждому из них набор разрешений и уникальный ключ).Обратите внимание, что все эти ключи должны храниться в закрытой переменной в JavaScript.

Если у вас есть какие-либо сомнения, пожалуйста, не стесняйтесь спрашивать меня.

0 голосов
/ 13 октября 2011

Вы можете сделать это.Вам нужно перейти к более ориентированному на сервис подходу на бэкэнде.Я бы вернул json из ваших бэкэнд-контроллеров и создал бы действительно хорошую архитектуру внешнего интерфейса, чтобы не было проблем.Попробуйте backbone.js , это действительно спасатель для организации кода на внешнем интерфейсе.Надеюсь, это поможет.

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