каковы преимущества использования шаблонизатора

Я не понимаю, зачем разработчику использовать механизм шаблонов Phalcon Volt.

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

Является ли ответ «чтобы вы могли передавать файлы .volt специалисту по внешнему интерфейсу»?


person temuri    schedule 22.07.2013    source источник
comment
еще нет принятого ответа?   -  person yergo    schedule 27.01.2016
comment
Нет, потому что ни один из ответов не является достаточно убедительным. Я работаю с Phalcon без Volt уже около 2,5 лет и до сих пор не понимаю, зачем его использовать.   -  person temuri    schedule 27.01.2016
comment
@temuri, если вы используете что-то почти 3 года, не понимая, почему вы это делаете, я с грустью склонен сказать, что, возможно, IT / CS - не лучший путь для вас ...   -  person    schedule 25.04.2018
comment
schibsted.pl /блог/   -  person    schedule 25.04.2018


Ответы (4)


Ответ заключается в разработке вашего приложения. Почему вы используете фреймворк вместо чистого PHP? Зачем возиться с объектно-ориентированным программированием, когда процедурный/прямой PHP быстрее?

Причин, конечно, много, и это долгий разговор. Резюме - простота использования и ремонтопригодность.

То же самое и с Вольтом. Вы можете использовать шаблоны volt, чтобы сделать то, что займет у вас намного больше времени при создании простых файлов phtml (HTML с тегами PHP). Примеры, которые я могу вам привести: наследование шаблонов, частичные вычисления, вычисления внутри шаблона (для/каждого цикла) и т. д.

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

Решение зависит от вас. Volt, Smarty, Twig и другие помогут вам в разработке вашего приложения. Ваше решение — это то, что заставляет вас использовать механизм шаблонов или нет.

person Nikolaos Dimopoulos    schedule 22.07.2013
comment
Что касается производительности, я надеялся, что наконец-то мы получим фреймворк, который компилирует шаблон в C и загружает их в виде файлов. Невероятно, что мы тратим время на производственные системы, где шаблоны никогда не меняются, за исключением перезапуска/постановки событий для разработки. 2015 и еще есть место для множества улучшений. - person Lothar; 12.12.2015
comment
@Lothar Вы правы, там есть производительность. Варианты для вас: запустите приложение/скомпилируйте свои шаблоны, а затем, используя их в качестве источника, вы можете использовать Zephir (zephir-lang.org) для создания файлов .so в вашей системе и использовать их оттуда. Гораздо проще было бы создать ramdrive или использовать диск с общей памятью Linux-машины для хранения ваших скомпилированных файлов шаблонов. Тогда вам придется иметь дело только с файлами шаблонов, которые читаются (перед отображением), но это будет очень быстро из-за того, что хранилище находится в памяти. - person Nikolaos Dimopoulos; 29.12.2015

Это старый вопрос, но я хочу добавить некоторые идеи.

Вы спросили, почему вам следует использовать Volt, механизм шаблонов Phalcon, но в своем объяснении вы хотите знать, в более общем смысле, почему вам следует использовать механизм шаблонов. Краткий ответ на ваш вопрос: вы должны использовать механизм шаблонов, чтобы не смешивать PHP с HTML.

Но я хочу получить ответ и на главный вопрос. Почему Вольт? Перегрузка Volt минимальна по сравнению с любым другим шаблонизатором, и это не потому, что он написан на C, а потому, что он генерирует уникальный файл PHP для вашего представления.

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

Twig действительно очень медленный по сравнению с Volt и даже со старым добрым Smarty. Итак, если вы используете Phalcon, вероятно, потому, что вы хотите добиться наилучшей производительности, обслуживая множество запросов страниц; в этом случае Вольт твой друг.

person noun    schedule 20.07.2014
comment
чтобы избежать смешивания PHP с HTML - IMO, нет большой разницы между смешиванием его с кодом PHP или другим видом разметки шаблона. - person temuri; 21.07.2014
comment
Есть большая разница, поверьте. Шаблон гораздо легче читать, писать, поддерживать, расширять и т. д. Попробуйте его без каких-либо предубеждений, и вы убедитесь сами. :-) - person noun; 22.07.2014
comment
Чтобы соответствовать шаблону MVC, этот ответ правильный. - person ash; 06.04.2016
comment
@temuri, возможно, для вас или для меня нет разницы, смешивайте PHP-код с шаблоном, но если вы работаете не один ... дизайнер или нетехнический специалист поблагодарит вас за использование механизма шаблонов. - person Lyoneel; 11.01.2017
comment
@ash Нет, это неправильно! Шаблон MVC не запрещает вам напрямую использовать базовый язык для каждого уровня MVC! - person rabudde; 18.09.2018
comment
@rabudde это не так, но, проще говоря, MVC — это шаблон разделения интересов. Использование php для этого — ужасная реализация и, следовательно, все еще плохая практика, потому что DOM не должен компилироваться как строковые значения каким-либо базовым языком, элементы в шаблонах являются самостоятельными объектами. - person ash; 19.09.2018
comment
@ash Ты абсолютно прав. Это плохая практика. Я только хочу отметить, что использование <? if (condition) { ?><? } ?> технически то же самое, что и {% if condition %}{% endif %}. Главное должно заключаться в том, что V в MVC является абстрактным уровнем, который должен заботиться только об отображении ответа пользователя. Для этого собственный PHP также можно использовать для печати объектов, находящихся в области видимости, даже если есть лучшие подходы, такие как механизмы шаблонов, которые делают шаблоны более хорошо отформатированными и более интуитивно понятными для разработчиков. - person rabudde; 19.09.2018
comment
@rabuddeI Я согласен с вами, на самом деле, я думаю, что изначально неправильно понял (извините ????) - person ash; 19.09.2018

Когда начиналась история PHP, было стандартом, что HTML генерировался непосредственно внутри PHP-скриптов. Но случилось так, что возникли некоторые проблемы, когда он превратился в один из самых популярных языков веб-программирования.

Чтобы люди, работающие в крупных проектах, чувствовали себя комфортно со своими задачами, т.е. при разработке веб-сервисов, где был изобретен архитектурный шаблон MVC. M для Model используется для хранения данных и обработки их удобным и воспроизводимым образом. V для View как части, которая отвечает за создание правильного вывода. C для контроллера, который отвечает за отправку команд моделям и т. д., являясь основной логикой приложения.

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

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

Один из принципов MVC заключается в том, что Логика (с огромной буквой "L") есть только в контроллерах. Так что логики во взглядах нет. Использование механизма шаблонов упрощает достижение этого из-за плохой поддержки логики ими самими. Не секрет, что программисты "ленивы" - так что если бы у них был случай ввести в поле зрения какую-то более продвинутую логику, они бы это сделали.

Я предполагаю, что все разработчики интерфейса имеют навыки программирования. Проблема в том, чтобы заставить их остаться с вами. Работа над огромным проектом с большим количеством просмотров (и, следовательно, шаблонов для хаджа) с примешанным к ним PHP сведет их с ума. Гораздо проще читать код, написанный для шаблонизатора.

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

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

<html>
<head>
    <title><?=$title?></title>
    <? foreach($metas as $meta) { ?>
    <meta name="<?=$meta['name']?>" content="<?=$meta['content']?>"/>
    <? } ?>

Но любой разработчик интерфейса предпочел бы работать с файлом, выглядящим так:

<html>
<head>
    <title>{{ title }}</title>
    {% for meta in metas %}
        <meta name="{{ meta.name }}" content="{{ meta.content }}" />
    {% endfor %}

для него более высокая читабельность. Это бывает очень удобно, когда шаблон включает какой-то встроенный javascript. В конце концов, вы получите тот же файл, который вы можете создать вручную, но этот файл создается для вас и сохраняется, поэтому он больше не создается до тех пор, пока основной файл не изменяется. Мы генерируем наши шаблоны во время развертывания, что не влияет на производительность, особенно сейчас, когда движок Volt написан на C.

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

Итак, глобально это случай:

чтобы вы могли передавать файлы .volt парню, работающему с интерфейсом

но это эффект работы в шаблоне MVC. И Phalcon создан для выполнения принципов MVC. Я даже не пытаюсь догадаться, как вам удалось работать с этой программкой в ​​течение ~2,5 лет, не используя шаблонизатор. Возможно, вы работаете один.

person yergo    schedule 28.01.2016

У каждого человека свой вкус, но я расскажу вам свое видение.

Я думаю, что вольт полезен, потому что:

  • Как и все фреймворки Phalcon, Volt обладает отличной производительностью.
  • Преимущества шаблонизаторов (я не хочу повторять, что уже говорят другие ответы)
  • Иерархический рендеринг: дополнительная информация -> https://docs.phalconphp.com/en/3.0.2/reference/views.html#hierarchical-rendering

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

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

person Lyoneel    schedule 11.01.2017