Являются ли шаблоны JavaScript полезными только для вставки небольших предметов в DOM? - PullRequest
3 голосов
/ 18 февраля 2012

Я недавно наткнулся на шаблоны Javascript и очень заинтриговался.

Я строю большое PHP-приложение, используя шаблон MVC. Шаблоны обрабатываются довольно крутой Twig .

Недавно я натолкнулся на реализацию javascript twig .

Я также прочитал довольно a bit об использовании шаблонизаторов javascipt.

Теперь в моем приложении приложение генерирует полную страницу для стандартных запросов как запасной вариант для пользователей без javascript. Для запросов AJAX он может генерировать контентную часть страницы (без <head>, <body> и т. Д.).

Объект ответа ajax в настоящее время представляет собой просто визуализированный HTML-контент, который затем вставляется в DOM.

Должен ли я вместо этого вернуть объект ответа, содержащий скомпилированный шаблон javascript и объекты, которые будут вставлены в шаблон? Каковы преимущества этого?

Из сообщений, которые я прочитал, шаблоны javascript были только небольшими фрагментами, представляющими небольшую часть страницы, например, отображая комментарий к сообщению в блоге в тот момент, когда пользователь отправил его.

Являются ли шаблоны javascript полезными только для вставки таких маленьких "кусочков" на страницу?

Ответы [ 3 ]

3 голосов
/ 18 февраля 2012

Да

Недавний проект, на котором я работал, получил "клиентскую лихорадку шаблонов", и мы использовали чертовы вещи для каждого шаблона.

Для каждой библиотеки шаблонов, которую я использовал (два или три), сообщения об ошибках, которые вы получаете, не очень хороши.Если у вас есть огромный шаблон, который работает с достаточным количеством данных, вы быстро обнаружите, что сообщение об ошибке u.foo is null or not an object становится все более разочаровывающим.

Лучшие практики, на которых я остановился:

  • Возвращает полный HTML-фрагмент (с сервера), если это шаблон, который загружается редко.Если вы загружаете этот HTML-код только один раз на страницу, то вы могли бы также отправить его заполненным, верно?Это также побуждает вас поддерживать свою логику на сервере, где он, вероятно, принадлежит.
  • Используйте клиентские шаблоны для небольших повторяющихся шаблонов.Ваш пример комментария к блогу, вероятно, хороший.Наибольший успех я обнаружил, когда мои клиентские шаблоны довольно маленькие (<10 строк) </li>
  • Использовать логику шаблонизатора.Чем больше логики допустимо в шаблоне, тем сложнее их читать / поддерживать.Кроме того, часть этой логики, вероятно, должна быть на вашем бизнес-уровне, а не в каком-то шаблоне JavaScript.Другими словами, они заставляют отделять вашу презентацию от вашей логики (что хорошо).

PS: Круто, что ваши клиентские и серверные шаблоны могутиспользовать тот же шаблонизаторЭто сделает разработчиков вашего проекта намного более продуктивными.

0 голосов
/ 19 февраля 2012

Вы также можете взглянуть на шаблонный движок Distal http://code.google.com/p/distal.

0 голосов
/ 18 февраля 2012

В зависимости от масштаба и требований вашего приложения, вы должны принять во внимание следующее:

  1. не буйствуй на Аяксе; Ajax - это не WebSockets, поэтому используйте его экономно. Кроме того, скорость выполнения на стороне клиента всегда является ключевой; AJAX медленный по сравнению с тем, чтобы сбрасывать как можно больше ресурсов + использовать их, когда они вам нужны; Например, вы можете отправить на javascript userdata = {name: 'xxxx', address; 'yyyy', ...} и использовать его вместо запроса имени и адреса через AJAX только тогда, когда они вам нужны.

  2. рекомендуется использовать глобальную переменную PHP $ $ sendData (или что-то подобное), и сразу после вставки HTML вы отправляете $ sendData с простым <script>data = <?php echo json_encode($sendData); ?></script>

  3. шаблоны javascript увеличивают скорость выполнения. что делает разумным сделать альтернативу, то есть отделить все, что является динамическим, и кэшировать статические ресурсы, такие как функции javascript

  4. вы не можете, и я цитирую return a response object containing a compiled javascript template, не без наличия некоторого серверного движка JavaScript, который выполняет работу по компиляции до его возвращения

  5. для вашего личного благополучия, это всегда будет сводиться к тому, насколько быстро, легко и безболезненно вы откликаетесь на поддержку приложения; нет смысла использовать экспериментальные фреймворки, порты и наборы супер бета, над которыми вы имеете ограниченный контроль

Работай умно, а не усердно. Удачи, приятель.

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