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

Konstantin Cherednichenko dshadowukraine at gmail.com
Fri Dec 2 06:45:01 PST 2016


IMHO Лучше смотреть в сторону OpenAPI... Какой смысл изобретать велосипед с
роутами и валидацией данных?

On Dec 2, 2016 16:40, "Konstantin S. Uvarin" <khedin at gmail.com> wrote:

> Приветствую всех!
>
> Сегодня я бы хотел представить веб-фреймворк на перл 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
>
> _______________________________________________
> Kiev-pm mailing list
> Kiev-pm at pm.org
> http://mail.pm.org/mailman/listinfo/kiev-pm
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/kiev-pm/attachments/20161202/dc884b9c/attachment-0001.html>


More information about the Kiev-pm mailing list