Если вы написали свой фреймворк, добавьте $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 сбэкдорами коллбэками);
* сессии (спасибо пропинавшему меня
akuklev);
* отдачу статики (aka neaf static '/images' => '/var/www/img';);
* гибкую систему хуков - можно вклиниться в любой этап процесса, неоднократно и по-разному для разных путей и запросов;
* валидацию форм с возможностью повторной отправки (типа "незаполненные обязательные поля обвести красненьким");
* отладку из командной строки, ака perl ваше_приложение /foo/bar --method POST --upload file.jpg
* отладку при помощи метода run_test - т.е. можно, если очень охота, писать юнит-тесты на само приложение.
И, собственно, у меня назрел вопрос. Где взять людей, которых такая штука может заинтересовать? Не спамить же на perlmonks про каждую версию...
Некоторое время назад я запилил собственный горе-фреймворк на Перле. Запилил, исходя из ощущений вроде "закат солнца вручную" или "прибито гвоздями" и глядя одним глазом на 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 с
* сессии (спасибо пропинавшему меня
* отдачу статики (aka neaf static '/images' => '/var/www/img';);
* гибкую систему хуков - можно вклиниться в любой этап процесса, неоднократно и по-разному для разных путей и запросов;
* валидацию форм с возможностью повторной отправки (типа "незаполненные обязательные поля обвести красненьким");
* отладку из командной строки, ака perl ваше_приложение /foo/bar --method POST --upload file.jpg
* отладку при помощи метода run_test - т.е. можно, если очень охота, писать юнит-тесты на само приложение.
И, собственно, у меня назрел вопрос. Где взять людей, которых такая штука может заинтересовать? Не спамить же на perlmonks про каждую версию...
no subject
no subject