Какой лучший способ написать приложение на Perl CGI? - PullRequest
10 голосов
/ 24 ноября 2008

Каждый пример, который я видел в CGI / Perl, в основном представляет собой набор операторов печати, содержащих HTML, и это не лучший способ написать приложение CGI. Есть лучший способ сделать это? Спасибо.

РЕДАКТИРОВАТЬ: Я решил использовать CGI :: Application и HTML :: Template и использовать следующий учебник: http://docs.google.com/View?docid=dd363fg9_77gb4hdh7b. Спасибо!

Ответы [ 6 ]

17 голосов
/ 24 ноября 2008

Абсолютно (вы, вероятно, смотрите учебники из 90-х). Вы хотите выбрать рамки. В Perl-land это самые популярные варианты:

  • CGI :: Application - очень легкий с большим количеством плагинов для сообщества
  • Катализатор - тяжелее с большим количеством наворотов
  • Jifty - более магический, чем выше
11 голосов
/ 24 ноября 2008

Это действительно очень важный вопрос. Короче говоря, лучший способ называется Модель / Вид / Контроллер (он же MVC). С MVC ваше приложение разделено на три части.

Модель - это ваши данные и бизнес-логика. Это то, что составляет основу вашего приложения.

Вид - это код для представления вещей пользователю. В веб-приложении это обычно будет какая-то система шаблонов, но это также может быть электронная таблица в формате PDF или Excel. По сути, это вывод.

Наконец, у вас есть контроллер. Это ответственно за соединение Модели и Представления. Он принимает запрос пользователя, получает соответствующие объекты модели и вызывает соответствующее представление.

mpeters уже упомянул несколько MVC-фреймворков для Perl. Вы также хотите выбрать шаблонизатор. Наиболее популярными являются Template Toolkit и Mason .

10 голосов
/ 24 ноября 2008

Оставляя пока вопрос CGI против MVC Framework, вам понадобится один из выходных шаблонных модулей из CPAN.

Template Toolkit очень популярен (Template.pm на CPAN) Также популярны Text :: Template, HTML :: Template и HTML :: Mason.

HTML :: Mason - это гораздо больше, чем шаблонный модуль, и поэтому он может быть слишком тяжелым для простого CGI-приложения, но стоит немного подумать, пока вы решаете, какой из них лучше для вас.

Text :: Template достаточно прост и использует Perl внутри шаблонов, так что вы можете зацикливаться на данных и выполнять логику отображения в Perl. Люди воспринимают это как за и против.

HTML :: Шаблон также маленький и простой. Он реализует свой собственный небольшой набор тегов для обработки if / then / else, установки переменных и зацикливания. Вот и все. Это рассматривается как "за" и "против" по совершенно противоположным причинам, как Text :: Template.

Template Toolkit (TT) реализует очень большой, изящный язык шаблонов, который включает в себя циклы, логику и многое другое.

Я использовал HTML :: Template one и обнаружил, что мне нужно еще несколько функций. Затем я с успехом использовал Text :: Template, но мне показалось, что его желание работать с пространствами имен немного раздражает. Я узнал и полюбил Template Toolkit. Для меня это просто кажется правильным. Ваш пробег может отличаться.

Конечно, все еще существует старый метод "print HTML", иногда достаточно нескольких операторов print. Но вы натолкнулись на идею отделения вашего дисплея от основной логики. Что хорошо.

Это первый шаг на пути к модели / представлению / контроллеру (MVC), в котором вы разделяете модель данных и бизнес-логику (ваш код принимает входные данные, что-то с ними делает и решает, что нужно выводить) ваш ввод / вывод (шаблоны или операторы печати - HTML, PDF и т. д.), а также код, который их соединяет (CGI, CGI :: Application, Catalyst MVC Framework и т. д.). Идея заключается в том, что изменение структуры данных (в модели) не должно требовать изменений в ваших выходных процедурах (представление).

5 голосов
/ 24 ноября 2008

Perl5 Wiki предоставляет хороший (хотя и не полный) список веб-фреймворков & шаблонов .

Стоит прочитать статьи для сравнения, ссылки на которые есть в вики "шаблонах". Я также рекомендовал бы прочитать эту статью о шаблонах push-систем о PerlMonks.

Для шаблонов тогда Template Toolkit - это тот, который я использовал больше всего, и я очень рекомендую его. Существует также книга О'Рейли и, вероятно, наиболее часто используемая система шаблонов в королевстве Perl (внутри или вне веб-фреймворков).

Еще один подход, к которому я все больше и больше обращаюсь, - это не шаблонные "конструкторские" решения. Модули, такие как Template :: Declare & HTML :: AsSubs , соответствуют этим требованиям.

4 голосов
/ 25 ноября 2008

Я считаю, что одним из решений, которое, по моему мнению, является правильным балансом в дилемме Framework / Roll-your-own, является использование трех ключевых модулей Perl: CGI.pm , Template Toolkit , и DBI . С помощью этих трех модулей вы можете выполнять элегантное программирование MVC, которое легко написать и поддерживать.

Все три модуля очень гибки с Template Toolkit (TT), позволяющим вам выводить данные в формате html, XML или даже pdf, если вам нужно. Вы также можете включить логику perl в TT, даже добавить туда свой интерфейс базы данных. Это делает ваши CGI-скрипты очень маленькими и простыми в обслуживании, особенно когда вы используете «стандартную» прагму.

Он также позволяет помещать JavaScript и AJAXy в сам шаблон, который имитирует разделение между клиентом и сервером.

Эти три модуля являются одними из самых популярных в CPAN, имеют отличную документацию и широкую базу пользователей. Кроме того, благодаря разработке этих средств вы можете довольно быстро перейти к mod_perl после создания прототипа своего кода, что обеспечит вам быстрый переход к встроенной в Apache среде perl.

В целом компактный, но гибкий набор инструментов.

2 голосов
/ 24 ноября 2008

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

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

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