You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mojolicious中修改Controller与Model的默认存储路径

Mojolicious按业务命名空间划分目录实现方案

一、控制器命名空间配置

Mojolicious默认会自动在[应用名]::Controller命名空间下搜索控制器,要适配新的目录结构,需要在应用的startup启动方法中修改路由的命名空间搜索规则:

sub startup {
  my $self = shift;
  # 清空默认控制器命名空间前缀,路由将直接匹配你写的全限定类名
  $self->routes->namespaces([]);

  # 后续路由就可以使用你需要的写法
  my $r = $self->routes;
  $r->any('/api/test')->to('App::Namespace1::Controller::Controller1#test');
  # 如果你希望省略类名中的Controller层级,调整类名和文件路径的对应关系即可
}

注意所有控制器文件的package声明要和实际路径匹配,比如App/Namespace1/Controller/Controller1.pm的首行必须是package App::Namespace1::Controller::Controller1;。

二、Model层适配

Mojolicious核心没有内置Model规范,根据你使用的加载方式调整即可:

  • 如果使用Mojolicious::Plugin::Model这类常用插件,加载时指定搜索命名空间:
$self->plugin('Model' => {
  namespaces => ['App'],
  # 可选:关闭默认的Model后缀要求,按需调整
  # default_moniker => '',
});
  • 如果是手动加载Model,直接按Perl常规的模块加载规则引入即可,只要文件路径和package声明对应就能正常调用。

内容的提问来源于stack exchange,提问作者Ryan Dunphy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:54:04