Взаимозаменяемость шаблонов 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, Прототип и т.д.
2 answers
Интересный вопрос, с которым я тоже иногда борюсь.
Вы можете поместить свой html-код в свой код javascript, который дублируется и которого вы хотите избежать
Вы можете загрузить свой html с помощью отдельного вызова ajax, что приведет к запуску большего количества вызовов ajax и возможному замедлению работы вашего приложения. возможно, вы захотите избежать этого.
Вы можете передать свой html-код в вызове Ajax, который загрузит данные. Таким образом, у вас будет только один звонок. Пусть ваш PHP откройте свои шаблоны и добавьте их в поток данных-json.
Вы можете поместить шаблон в свой исходный html-код, сделав его скрытым.
Я бы выбрал решение 3 или, возможно, 4, если шаблоны малы и ограничены.
JSon тогда будет чем-то вроде {"данные": ...ваш исходный объект данных "шаблоны":{...}}
Возможно, вы ищете языковой шаблон, доступный для нескольких языков, чтобы вы могли повторно использовать свои шаблоны в разных языковых границах.
Одним из таких языков шаблонов является {{усы}}, работает как на PHP, так и на Javascript и многих других языках.