Взаимозаменяемость шаблонов PHP и JavaScript (предотвращение дублирования) - PullRequest
4 голосов
/ 19 августа 2011

Я использую MVC PHP Framework, чтобы мои веб-приложения были максимально сухими. Все мои 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, Prototype и т. Д.

Ответы [ 2 ]

3 голосов
/ 19 августа 2011

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

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

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

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

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

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

Тогда JSon будет выглядеть как {"data": ... ваш исходный объект данных, "templates": {...}}

1 голос
/ 19 августа 2011

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

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

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