Mojolicious::Plugins

作者: JSON_NULL | 来源:发表于2017-10-14 17:48 被阅读15次

    简介

    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

    相关文章

      网友评论

        本文标题:Mojolicious::Plugins

        本文链接:https://www.haomeiwen.com/subject/lgwxuxtx.html