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

Konstantin S. Uvarin khedin at gmail.com
Fri Dec 2 06:54:34 PST 2016


Приветствую.

Как какой? Не догоню, так согреюсь! Там полдюжины ссылок на prior work, и
это я ещё забыл Catalyst и PSGI, на которые тоже смотрел в процессе.

А вот про OpenAPI хотелось бы подробнее, пока что нагуглил вот что:

https://metacpan.org/pod/OpenAPI - какая-то ещё не написанная спецификация
в версии 0.001
https://vk.com/dev/openapi - API вконтакта.

А Вы что имели в виду?

С уважением,


2016-12-02 16:45 GMT+02:00 Konstantin Cherednichenko <
dshadowukraine at gmail.com>:

> 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
>>
>>
> _______________________________________________
> Kiev-pm mailing list
> Kiev-pm at pm.org
> http://mail.pm.org/mailman/listinfo/kiev-pm
>
>


-- 
Konstantin S. Uvarin
jabber: see <from>
skype: kuvarin
http://github.com/dallaylaen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/kiev-pm/attachments/20161202/07b115e8/attachment.html>


More information about the Kiev-pm mailing list