简介
use Mojolicious::Plugins;
my $plugins = Mojolicious::Plugins->new;
push @{$plugins->namespaces}, 'MyApp::Plugin';
Mojolicious::Plugins是Mojolicious的插件管理器。
可用插件
下面是已经包含在Mojolicious框架中一同发布的可用插件。
包名 | 提供的功能 |
---|---|
Mojolicious::Plugin::Config | 提供Perl-ish格式配置文件的加载和解析功能 |
Mojolicious::Plugin::DefaultHelpers | 提供通用helper的检测和发现功能(自动加载) |
Mojolicious::Plugin::EPLRenderer | 提供简单的嵌入式Perl模板解析渲染的功能(自动加载) |
Mojolicious::Plugin::EPRenderer | 提供复杂的嵌入式Perl模板解析渲染的功能(自动加载) |
Mojolicious::Plugin::HeaderCondition | 提供多种头部路由条件解析功能(自动加载) |
Mojolicious::Plugin::JSONConfig | 提供json格式配置文件的加载和解析功能 |
Mojolicious::Plugin::Mount | 提供安装完整Mojolicious应用程序的功能 |
Mojolicious::Plugin::PODRenderer | 提供将POD文档转换成HTML的功能 |
Mojolicious::Plugin::TagHelpers | 模板特定helper的集合(自动加载) |
事件
Mojolicious::Plugins继承了Mojo::EventEmitter中的所有事件。
属性
Mojolicious::Plugins中仅实现了一个属性:namespaces。
my $namespaces = $plugins->namespaces;
$plugins = $plugins->namespaces(['Mojolicious::Plugin']);
从哪个命名空间加载插件,默认值为:Mojolicious::Plugin。
方法
Mojolicious::Plugins继承了Mojo::EventEmitter中的所有方法,并实现以下方法。
emit_chain
$plugins->emit_chain('foo');
$plugins->emit_chain(foo => 123);
触发链式的hook事件。
emit_hook
$plugins = $plugins->emit_hook('foo');
$plugins = $plugins->emit_hook(foo => 123);
一次性触发所有hook事件(非链式)。
emit_hook_reverse
$plugins = $plugins->emit_hook_reverse('foo');
$plugins = $plugins->emit_hook_reverse(foo => 123);
以相反的顺序一次性触发所有hook事件(非链式)。
load_plugin
my $plugin = $plugins->load_plugin('some_thing');
my $plugin = $plugins->load_plugin('SomeThing');
my $plugin = $plugins->load_plugin('MyApp::Plugin::SomeThing');
从匹配的命名空间或使用完全限定名加载插件。
register_plugin
$plugins->register_plugin('some_thing', Mojolicious->new);
$plugins->register_plugin('some_thing', Mojolicious->new, foo => 23);
$plugins->register_plugin('some_thing', Mojolicious->new, {foo => 23});
$plugins->register_plugin('SomeThing', Mojolicious->new);
$plugins->register_plugin('SomeThing', Mojolicious->new, foo => 23);
$plugins->register_plugin('SomeThing', Mojolicious->new, {foo => 23});
$plugins->register_plugin('MyApp::Plugin::SomeThing', Mojolicious->new);
$plugins->register_plugin('MyApp::Plugin::SomeThing', Mojolicious->new, foo => 23);
$plugins->register_plugin('MyApp::Plugin::SomeThing', Mojolicious->new, {foo => 23});
从匹配的命名空间或使用完全限定名加载插件,并运行插件的register方法。此方法第二个及以后的参数会顺序传递给register方法。
a