Dancer 活跃的社区和强大又方便的插件开发导致出现了太多好玩的插件,有位新同学在刚上手的这两周内就已经往 CPAN 提交了四个插件了。
今天这里介绍一个刚在 IRC 上被推荐的东东,额,这个插件的作者跟上面提到的同学说:大哥,看看偶这个模块吧,就不用你这么辛苦的啥都写新插件了。
Dancer::Plugin::Adapter 模块的作用,就是当你的项目需要在多处使用某个模块的时候,不用频繁的到处去new,直接在 config.yml 里一定义,它会自动给你实例化成 Dancer::Object
,然后缓存住,你就可以直接用 service 关键词调用了。
用法示例:
# in config.yml
plugins:
Adapter:
ua:
class: HTTP::Tiny
options:
max_redirect: 3
postmark:
class: WWW::Postmark
options: POSTMARK_API_TEST
# in your app
use Dancer::Plugin::Adapter;
get '/' => sub {
eval {
service("postmark")->send(
from => 'me@domain.tld',
to => 'you@domain.tld, them@domain.tld',
subject => 'an email message',
body => "hi guys, what's up?"
);
};
return $@ ? "Error: $@" : "Mail sent";
};
get '/proxy/:url' => sub {
my $res = service('ua')->get( params->{'url'} );
if ( $res->{success} ) {
return $res->{content};
}
else {
template 'error' => { response => $res };
}
};
话说我还是喜欢上代码,不喜欢完整的翻译 POD 啊…………