Mojolicious路线和模板

时间:2017-08-30 15:19:32

标签: perl routing mojolicious

我正在尝试使用mojolicious来制作我的第一个应用程序,并且我遇到了一些路由问题。我有一个有角度的应用程序,我只想实现它,并在我的网络werver上工作。所以我有一个" app / index.html"文件,但我不知道当我喜欢这个地址" / appAngular"时,如何让我的网络服务器指向它。

即使它看起来很基本,我也找不到任何东西,所以如果你能提供帮助,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果您使用默认设置正确启动了Web服务器,则您的浏览器将使用网络服务器的ip指向x.x.x.x:3000。 Mojolicious附带一个登陆页面,您可以在公共场所添加.html文件,这些文件也将被提供。因此,如果您的角度应用程序已经构建完毕,整个结构将需要公开,您需要删除在新的mojolicious应用程序下提供的默认模板,应该看起来像这样:

get '/' => sub {
  my $c = shift;
  $c->render(template => 'index');
};

重新开始的命令:

mojo generate lite_app myapp
mkdir public
<copy your angular app into new directory public>
<delete default route>
morbo myapp

答案 1 :(得分:0)

您必须将index.html页面指向Mojolicious中的静态页面。 例如在完整应用中:

在应用内:

<p>

上面的妙语是:

package MojoNg4;
use Mojo::Base 'Mojolicious';
use Mojo::SQLite;

# This method will run once at server start
sub startup {
  my $self = shift;

  # Load configuration from hash returned by "my_app.conf"
  my $config = $self->plugin('Config');
  $self->plugin('PODRenderer') if $config->{perldoc};

  if (my $secrets = $self->config->{secrets}) {
      $self->secrets($secrets);
  }


  $self->hook(
      before_dispatch => sub {
          my $c = shift;
          $c->res->headers->header('Access-Control-Allow-Origin' => '*');
      }
  );

  $self->helper( dbh => sub {state $dbh = Mojo::SQLite->new('sqlite:db/mojo-ng.db') });
  $self->plugin(Minion => {SQLite => $self->dbh});
  $self->plugin('Minion::Admin');

  push @{$self->static->paths} => '/Users/Sachin/workspace/project/mojo_ng4/public/Demo';
  # Router
  my $r = $self->routes;
  $r->get('/Demo/hello')->to('Demo#hello');

  # Normal route to controller
  #$r->get('/Demo/index.html')->to('Demo#index');
  #$r->get('/Demo')->to('Demo#index');

}

1;

在控制器中:

 push @{$self->static->paths} => '/Users/Sachin/workspace/project/mojo_ng4/public/Demo';

魔术线是:

package MojoNg4::Controller::Demo;

use Mojo::Base 'Mojolicious::Controller';

# This action will render a template
sub index {
  my $self = shift;

  # render demo app index page. rest of the routes will be taken care by
  # angular4
  $self->reply->static('Demo/index.html');
}

1;

我有一个git回购,演示了如何使用Mojolicious提供有角度的项目。请看一看: https://github.com/tryorfry/mojolicious-ng4