[Kiev-pm] [Moscow.pm] MVC::Neaf: Not Even A Framework

Akzhan Abdulin akzhan.abdulin at gmail.com
Fri Dec 2 15:00:46 PST 2016


Не хватает фильтров, как минимум (в том же Mojo они тоже туповаты, каждый
over перекрывает предыдущие, вместо расширения).


На досуге почитайте http://www.sinatrarb.com/intro.html


2 декабря 2016 г., 17:39 пользователь Konstantin S. Uvarin via Moscow-pm <
moscow-pm at pm.org> написал:

> Приветствую всех!
>
> Сегодня я бы хотел представить веб-фреймворк на перл 5 собственного
> сочинения, Ниф (Not Even A Framework). Написан он больше для
> самообразования, т.к. и так их как собак нерезаных, но мне кажется, в нём
> есть некие здравые идеи. Суть такова:
>
> 1. Приложение разбивается на маленькие процедуры-хэндлеры, привязанные к
> пути в URI (см. тж. https://metacpan.org/pod/Dancer )
>
> 2. Хэндлер получает на вход объект запроса, из которого потом достаются
> параметры, куки, заголовки и т.д. (см. тж. https://metacpan.org/pod/Kelp )
>
> 3. Параметры и куки нельзя достать без валидации, например, при помощи
> регулярного выражения:
>
>   $req->param( foo => qr/\d+/ );
>
> См. тж. perl -T
>
> В качестве альтернативы есть самовалидирующиеся формы на базе
> Validator::LIVR или самописного каличного движка (но ЛИВР лучше).
>
> См. тж. https://metacpan.org/pod/Validator::LIVR и
> https://metacpan.org/pod/Data::CGIForm
>
> 4. Хэндлер может вернуть ссылку на хэш с какими угодно параметрами,
> которая затем передаётся в шаблонизатор для рендеринга. На данный момент
> поддерживается Template::Toolkit и JSON/JSONP
>
> Также есть ограниченный набор ключей с минусом, которые используются для
> управления самим фреймворком - -template, -status и т.п
>
> 5. Хэндлер может выбросить исключение: die 404 - легальный способ вернуть
> настраиваемую страницу not found. Все нормальные исключения (не
> трёхцифренные и не специальные объекты самого Neaf) трактуются как error
> 500.
>
> 6. Один и тот же код может в неизменном виде запускаться как cgi, psgi и
> под Apache2 + mod_perl (с некоторым бубном). Также поддерживается дебаг из
> командной строки:
>
>    perl myapp.pl --help
>    perl myapp.pl --list
>
> 7. Кроме этого есть поддержка статических страниц (не надо держать
> отдельно нормальный веб-сервер, чтобы проверить CSS или логотип), сессий в
> несколько недоделанном виде (планируется улучшение), отложенные действия,
> выполняемые после запроса, ну и по мелочи ещё.
>
> Пример кода:
>
>     use strict;
>     use warnings;
>     use MVC::Neaf;
>
>     MVC::Neaf->route( "/" => sub {
>         my $req = shift;
>
>         return {
>             -template => \'Hello, [% name %]!',
>             -type     => 'text/plain',
>             name      => $req->param( name => qr/\w+/, "Stranger" ),
>         },
>     });
>
> На каждую фичу есть небольшой пример, они же используются как
> дополнительные смоук-тесты к 80% покрытию юнит-тестами. см.
> https://github.com/dallaylaen/perl-mvc-neaf/tree/master/example
>
> Собственно фреймворк:
>
> https://metacpan.org/pod/MVC::Neaf
>
> Буду рад обратной связи, критике, багрепортам и запросам новых фич (см.
> тж. https://github.com/dallaylaen/perl-mvc-neaf/blob/master/TODO )
>
> С уважением,
>
> --
> Konstantin S. Uvarin
> jabber: see <from>
> skype: kuvarin
> http://github.com/dallaylaen
>
> --
> Moscow.pm mailing list
> moscow-pm at pm.org | http://moscow.pm.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/kiev-pm/attachments/20161203/79d3f0b4/attachment.html>


More information about the Kiev-pm mailing list