Есть ли у этой техники рендеринга имя? - PullRequest
1 голос
/ 03 мая 2011

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

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

<!DOCTYPE html>
<html>

<head>
<title>Both pages share a static title</title>
<script src="..." type="text/javascript">
<script src="..." type="text/javascript">
<script src="..." type="text/javascript">
</head>

<body>
<!-- only this part is dynamic, the top and bottom parts are shared among all pages -->

...
</body>
</html>

План состоял в том, чтобы оставить токен в том месте, где должен быть заголовок, изменить объект-заполнитель в теле, а затем заменить содержимое заполнителя там, где токен находился после рендеринга страницы (но перед отправкой клиенту).

<!DOCTYPE html>
<html>

<head>
__HEAD__
</head>

<body>
<?
    $head->title('my very own title');
    $head->script('jquery 1.5.2');      
?>

...
</body>
</html>

Маркер __HEAD__ расширится до фактического HTML.

<!DOCTYPE html>
<html>

<head>
<title>my very own title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript">
</head>

<body>
...
</body>
</html>

Кто-нибудь видел это раньше?

Редактировать: Вот кто-то говорит о той же проблеме, но с немного другим решением.

http://iamcam.wordpress.com/2007/07/15/smarty-assigning-variables-to-the-header-from-the-body/

Редактировать ^ 2: Ниже был принят ответ, что это то, что шаблонизатор делает , что верно. Сложность в этом конкретном сценарии заключалась в том, что механизмы исполнения и шаблонирования переплетались (как в старой школе PHP), поэтому было трудно увидеть разграничение. Легко решается с правильными шаблонами.

Ответы [ 4 ]

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

Внедрение зависимостей

В исходной проблеме неясен OP.Тело страницы, которая должна быть отображена, должна быть выделена в отдельный файл.И именно этот основной файл должен окончательно сказать, что происходит в заголовке HTML, который контролируется другим файлом.

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

1 голос
/ 04 мая 2011

Самый большой пример для Perl - Template Toolkit . Для других языков у вас есть ASP, JSP, EJS, Jade, усы и т. Д., И т. Д.

1 голос
/ 03 мая 2011

Это называется шаблонизатором .В дополнение к простому использованию PHP в качестве движка шаблонов были доступны другие решения, такие как Smarty .Кроме того, многие фреймворки, такие как CakePHP и Symfony, разделяют свой код на макеты и представления, чтобы позволить себе это.

0 голосов
/ 04 мая 2011

С наследованием Smarty V3 вы можете сделать это.Взгляните: http://www.smarty.net/inheritance

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