18 Июля 23:52
#!/usr/bin/perl
use Dancer;
get '/' => sub {
'Hello world!'
};
dance;Совсем не похоже на привычный Perl, некоторые из вас могут даже заметить сходство с Ruby, а если быть точным, то Ruby фрэймворком Sinatra. Именно им и вдохновляются разработчики Dancer и получается весьма интересно!

Сейчас я расскажу как установить Танцора и покажу немного Perl-магии.
Установка
Первый и самый привычный способ — это установка через CPAN:cpan Dancer
Второй способ — получить самую свежую сборку с githubgit clone git://github.com/sukria/Dancer.git
cd Dancer
perl Makefile.PL
make && make test && sudo make installЗапуск
Для генерации каркаса выполним командуdancer -a firstapp
В результате получаем логичную структуру файлов и директорий. В config.yml хранятся настройки приложения в формате YAML. Файл firstapp.pl используется для запуска приложения. В директории lib находится код нашего приложения, в views шаблоны и обёртка сайта, в logs и t, очевидно, логи и тесты.
Запустив сервер и перейдя по адресу http://localhost:3000/, мы должны увидеть что-то похожее на:

Синтаксис
Рассмотрим небольшой отрывок кода:get '/hello/:name' => sub {
return "Hello ".params->{name};
};
Первое слово get задает метод для которого должно сработать это событие. Dancer поддерживает все стандартные HTTP методы: GET, POST, PUT, DELETE. Также их все можно объединить с помощью ключевого слова any или несколько из них с помощью конструкции вида any[‘post’,’del’]. Кроме того существует метод ajax, который срабатывает при аякс запросах, а если быть точным, то при запросах с флагом X_REQUESTED_WITH установленным в XMLHttpRequet.После указания метода идет маршрут, по которому должен обратиться пользователь, чтобы выполнилось событие. Про маршруты, или как любят их называть роуты, можно рассказывать долго. Но для начала вам нужно запомнить, что в роутах:
- конструкция вида :key создает/получает параметр key из строки запроса
get '/hello/:name' => sub { return "Hello ".params->{name}; }; - можно использовать спецсимвол снежинка (*) для получения частей адреса, доступ к результату можно получить через директиву splat
get '/download/*.*' => sub { my ($file, $ext) = splat; }; - работают регекспы, для этого нужно использовать ключевое слово r
get r( '/hello/([\w]+)' ) => sub { my ($name) = splat; return "Hello $name"; };
Для того, чтобы передать управление шаблонизатору, нужно использовать ключевое слово template и передать ему название шаблона и хэш массив с данными для рендеринга.
use Dancer;
use Template;
get '/hello/:name' => sub {
template 'hello' => { number => 42 };
};
Кроме шаблона в Dancder создается и обёртка сайта, куда можно вынести общую для всех страниц верстку: заголовки, меню, футеры. По сути это такой же шаблон в котором вызов <% content %> заменяется на результат для текущего экшена. Обёртку можно задавать при помощи ключевого слова layout:use Dancer;
layout 'main';
get '/nolayout' => sub {
template 'some_ajax_view',
{ tokens_var => "42" },
{ layout => 0 };
};
Если вы дочитали до этого места, то могу вас поздравить, у вас есть все необходимые знания для того, чтобы написать свое собственное веб-приложение на Dancer!
299 просмотров
нет комментариев