码神之路:Perl篇

Mojolicious::Plugins

2017-10-14  本文已影响15人  JSON_NULL

简介

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

上一篇下一篇

猜你喜欢

热点阅读