Взаимозаменяемость шаблонов PHP и JavaScript (предотвращение дублирования)


Я использую PHP-фреймворк MVC, чтобы мои веб-приложения были как можно более сухими. Все мои HTML-шаблоны аккуратно спрятаны в одной папке в области применения моего проекта.

Проблема в том, что всякий раз, когда я использую строку JSON для создания страницы с помощью AJAX, мне нужно повторно использовать множество строк из этих шаблонов и копировать их куда-нибудь в мои файлы JavaScript. Это означает, что существует дублирование кода между шаблонами в моих файлах JavaScript и шаблонами в моем PHP приложение.

Мне было интересно, как можно предотвратить это дублирование. Один из способов, конечно, загрузить шаблон с помощью AJAX, но тогда я бы получил двойной запрос AJAX для одной страницы. Кроме того, шаблоны PHP используют разные стили тегов для представления переменных, чем MooTools, но настройка HTML одинакова.

Итак, подведем итог: есть ли какой-нибудь аккуратный способ или инструмент для предотвращения дублирования шаблонов, чтобы один файл можно было использовать как в PHP, так и в JavaScript? Для протокола: я использую фреймворк MooTools для создания моих файлов JavaScript.

Редактировать

После некоторых исследований я нашел, на мой взгляд, лучший ответ. Для тех, кто заинтересован:

PURE полностью разделяет представление HTML и логику JavaScript, поэтому вам не нужно беспокоиться о включении HTML-элементов в ваши сценарии. Шаблон может быть просто предоставлен в самом HTML-файле.

Пример:

// JSON string
{ 'who': 'me' }

// In your rendered HTML page:
<div id="who"></div>

// After the JSON string is sent back
<div id="who">me</div>

Кроме того, это может быть используется широким выбором библиотек: MooTools, jQuery, dojo, Прототип и т.д.

Author: Luwe, 2011-08-19

2 answers

Интересный вопрос, с которым я тоже иногда борюсь.

  • Вы можете поместить свой html-код в свой код javascript, который дублируется и которого вы хотите избежать

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

  • Вы можете передать свой html-код в вызове Ajax, который загрузит данные. Таким образом, у вас будет только один звонок. Пусть ваш PHP откройте свои шаблоны и добавьте их в поток данных-json.

  • Вы можете поместить шаблон в свой исходный html-код, сделав его скрытым.

Я бы выбрал решение 3 или, возможно, 4, если шаблоны малы и ограничены.

JSon тогда будет чем-то вроде {"данные": ...ваш исходный объект данных "шаблоны":{...}}

 3
Author: user410932, 2011-08-19 11:57:03

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

Одним из таких языков шаблонов является {{усы}}, работает как на PHP, так и на Javascript и многих других языках.

 1
Author: hakre, 2011-08-19 11:54:31