June 2017

S M T W T F S
    123
45678910
11121314151617
18192021222324
25 2627282930 

Style Credit

Expand Cut Tags

No cut tags
Sunday, April 9th, 2017 01:22 am
Если вы написали свой фреймворк, добавьте $300 к зарплатным ожиданиям. Если вы его выкинули на помойку, добавьте ещё $300. (совет с ЛОРа)

Некоторое время назад я запилил собственный горе-фреймворк на Перле. Запилил, исходя из ощущений вроде "закат солнца вручную" или "прибито гвоздями" и глядя одним глазом на Catalyst и Dancer. Судя по тому, что получилось сразу похоже на Mojolicious, которого я *не* видел, сделал неплохо.

Суть такова:

1. Приложение разбивается на хэндлеры - анонимные функции, зависящие от пути. Ну это вроде как везде сейчас так.

2. Хэндлер получает на вход объект запроса, в котором есть всё, что нужно (параметры, сессии, заголовки...). Куки и параметры нельзя получить без валидации регекспом - политика партии!

3. Хэндлер возвращает хеш с параметрами для рендеринга или умирает (die 404; - легитимный способ показать Not found). Управляющие ключи начинаются с минуса (-view - выбор view, -type - Content-Type, -continue => sub { ... } - продолжить обработку запроса после отдачи заголовков и т.д.).

4. Дальше рендеринг, генерация заголовков, отдача контента, гипс снимают, клиент уезжает. Всё.

(Замечание. У нас, таким образом, контроллер и вью - это квази-чистые функции, т.е. все побочные эффекты остаются на совести пользователя, а самому фреймворку интересно только то, что туда передали, и что оттуда вернулось. И - изоляция. )

Из коробки умеет:
* Работать as is из-под PSGI, mod_perl 2 и просто как CGI-файл;
* Template::Toolkit и JSON (в т.ч. JSONp с бэкдорами коллбэками);
* сессии (спасибо пропинавшему меня [personal profile] akuklev);
* отдачу статики (aka neaf static '/images' => '/var/www/img';);
* гибкую систему хуков - можно вклиниться в любой этап процесса, неоднократно и по-разному для разных путей и запросов;
* валидацию форм с возможностью повторной отправки (типа "незаполненные обязательные поля обвести красненьким");
* отладку из командной строки, ака perl ваше_приложение /foo/bar --method POST --upload file.jpg
* отладку при помощи метода run_test - т.е. можно, если очень охота, писать юнит-тесты на само приложение.


И, собственно, у меня назрел вопрос. Где взять людей, которых такая штука может заинтересовать? Не спамить же на perlmonks про каждую версию...
Tags:

Reply

From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.