Подтвердить что ты не робот

Как я могу получить простоту PHP (развертывания), но Perl?

Я презираю язык PHP, и я совершенно уверен, что я не один. Но главное в PHP - это то, как mod_php берет и скрывает детали gory от интеграции с временем выполнения apache, а также обеспечивает изоляцию запросов CGI и достойную производительность.

Какой подход с кратчайшим расстоянием позволяет получить такую ​​же простоту, скорость и изоляцию, как среда выполнения PHP, с семантикой Perl? Я чувствую, что сырой mod_perl дает мне слишком много веревки, чтобы повесить себя: кросс-запрос глобалы, грязная конфигурация, слишком много шаблонов для выбора.

FastCGI? HTML:: Mason? Я бы хотел сделать разработку в основном на Perl, если бы у меня была инфраструктура, которая позволяла мне.

4b9b3361

Ответ 1

Посмотрите Catalyst, эта среда MVC (модель, представление, контроллер) работает в режиме stand-a-lone или с apache_perl и много скрывает из беспорядочных битов. Существует немного странная кривая обучения (быстрый старт, медленнее среднего, затем он действительно нажимает на продвинутые вещи).

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

Для материала базы данных смотрите DBIx:: Class, который снова работает с Catalyst или на нем.

Ответ 2

Я только что увидел Dancer. Похоже, это может быть хорошим вариантом.

Ответ 3

Я бы рекомендовал Catalyst с FastCGI. Кроме того, для шаблонов Template:: Toolkit - мой личный фаворит, но HTML:: Mason также высоко ценится в сообществе.

Ответ 4

Самый близкий, хорошо оцененный эквивалент PHP в Perl, вероятно, HTML::Mason.

Как и PHP, он встраивает Perl в ваш документ и отображает его:

% my $noun = 'World';
Hello <% $noun %>!
How are ya?

Книга O'Reilly Встраивание Perl в HTML с помощью Mason доступно онлайн бесплатно.

Ответ 5

В зависимости от того, что вы хотите сделать, есть много возможностей.

Если вы хотите использовать скорость mod_perl, но простоту ванильного CGI, посмотрите Modperl:: Registry от CPAN. Это позволит вам запускать простые сценарии CGI в основном без изменений.

В терминах фреймворков я большой поклонник CGI:: Application. Он обеспечивает очень простую структуру наследования, которая обрабатывает большинство всего веб-приложения, которое вам нужно будет сделать, предоставляя вам свободу разработки вашего приложения так, как вам нравится. Простое приложение может выполняться монолитно; более сложным может быть использование полнофункционального MVC. Как и в случае с Perl, CGI-приложение предоставляет вам множество возможностей и, как правило, не работает.

CGI-App поддерживает превосходный модуль HTML:: Template по умолчанию и имеет плагины для других систем шаблонов, таких как впечатляющий Template Toolkit. Существует также множество plugins для других целей.

Если вам нужна дополнительная работа для вас, посмотрите Catalyst. Этот способ делать вещи может быть более знакомым, если вы использовали Ruby on Rails.

Другие популярные веб-приложения включают Jifty и CGI:: Prototype, написанный Рэндалом Шварцем, основанный на объектной инфраструктуре Class:: Prototyped.

Ответ 6

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

<html> <body> <p>The value of 2+2 is: <?php echo 2+2; ?></p> </body></html>

и см. в веб-браузере:

The value of 2+2 is: 4

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

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

<html><body><p>The value of 2+2 is: <% 2+2 %></p></body></html>

и вы получите тот же результат.

Нет причин, по которым вы не можете начать с установки и работы с Mason, а затем установить Catalyst бок о бок с ним, однако, если вы планируете перейти к очень сложным, чисто Perl-управляемым проектам позже, тем не менее.

Ответ 7

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

Ответ 8

Такие вещи, как Catalyst и CGI:: Application, являются более эквивалентами Zend Framework, а не самим PHP. Чтобы воспроизвести базовые функции для создания веб-страниц, которые PHP предлагает "из коробки", вам понадобятся два модуля CPAN, которые должны быть доступны в каждой базовой установке Perl:

use CGI;
use DBI;

Все, что вам действительно нужно. Теперь вместо:

$_POST['param']
$_GET['param']

у вас есть:

my $q = new CGI;
$q->param('param'); # same for post or get

И вместо:

$dbh = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$sth = mysql_query("SELECT 1 FROM table", $dbh);
while($row = mysql_fetch_assoc($sth))
{
    // do something with $row
}

У вас есть:

my $dbh = DBI->connect('DBI:mysql:host=localhost;', 'mysql_user', 'mysql_password');
my $sth = $dbh->prepare("SELECT 1 FROM table");
$sth->execute();
while(my $row = $sth->fetchrow_hashref)
{
    # do stuff with row
}

Код DBI немного сложнее, потому что он предлагает готовые статусы и связанные переменные, так что вам не нужно беспокоиться о SQL-инъекциях. PHP не предлагает этого, поэтому вам нужно использовать что-то вроде PDO или написать свой собственный класс базы данных.

Осталось только, если вы хотите получить вывод HTML в script. Но ты этого не хочешь? Вы используете HTML:: Template или Template:: Toolkit для этого, так же, как вы должны использовать Smarty или собственные шаблоны в PHP.

Ответ 9

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

В частности, Mojolicious:: Lite

Ответ 10

Я согласен с Аристотелем. mod_perlite звучит как раз то, что вы ищете, если только оно было закончено.

Ответ 11

Ближайшим к PHP с точки зрения простоты является HTML:: Mason.

Предложение Catalyst - плохая шутка для тех, кто ищет простоту... И я счастливо работаю с Catalyst каждый день.

Ответ 12

Я работал с HTML:: Mason, сначала взломал RT, а затем создал с ним два сайта. Там есть кривая обучения, но это не так уж плохо. Хуже того, я думаю, это установка, но это гораздо больше связано с Apache и mod_perl, чем с Мэйсоном. Как только кусочки на месте, это будет настолько сложным, насколько вы это сделаете (например, сам Perl).