我一直在寻找Moose的替代品(现代面向对象的Perl)因为Moose很慢,我已经看到了几个关于这个问题的帖子关系,我不想那样. 来自同一创作者的示例:https://www.youtube.com/watch?v =ugEry1UWg84&feature = youroutu.be&t = 260
所以我从驼鹿的同一个创造者那里找到了这个替代方案:
https://metacpan.org/pod/MOP#DESCRIPTION MOP - Perl 5的元对象协议
该模块实现了Perl 5的元对象协议,具有最小的开销,并且没有非核心依赖性(最终).
使用UNIVERSAL :: Object:
https://metacpan.org/pod/UNIVERSAL::Object
这是一个很好的选择和替代Moose,有人测试这个软件?
相关文章:https: //www.perlmonks.org/?node_id = 1220917
谢谢.
注意:我忘记提及我知道Moo,鼠标等,也许存在更好的东西?
我构建一个Web服务,而不是使用类似工具包的模板系统我使用这样的包模块:
创建页面网址,根据url之前在路径中创建的独立模块中的每个页面,作为参数传递给每个模块一个唯一的哈希引用,其中包含全局标题,页脚和所有其他数据的变量,每个页面中的数据相同(模块) .
main.pl
use strict;
use warnings;
use Handler;
my %mvs = (# my variables
username => $set{user},
titleglobal => '| web System ',
ip => $env->{REMOTE_ADDR}
.........
.........
);
for my $module_url (reverse @all_urls_names ) {
$router->add($module_url, sub {
$module_url->new(\%mvs);
})
}
Run Code Online (Sandbox Code Playgroud)
在模块页面中,我有一些其他模块加载header.pm,footer.pm但是body.pm直接加载到当前模块页面,在本例中为Handler.pm
Handler.pm
package Handler;
use strict;
use warnings;
use Layout::Head;
use Layout::Footer;
my $layout = sub {
my ($head, $body, $footer) = ( Head::new($mvs), thebody($mvs), Footer::new($mvs) );
return <<THE_HTML;
$head
$body
$footer
THE_HTML
};
return [ …Run Code Online (Sandbox Code Playgroud)