名前

Mojolicious::Lite - 小さなリアルタイムWebフレームワーク

使い方

# Mojolicious::Liteを使うと"strict","warnings","utf8","Perl 5.10 feature"が有効になる
use Mojolicious::Lite;

# プレースホルダーを使ったルーティング
get '/:foo' => sub {
  my $self = shift;
  my $foo  = $self->param('foo');
  $self->render(text => "Hello from $foo!");
};

# Mojoliciousのコマンドシステムの開始
app->start;

説明

Mojolicious::LiteMojoliciousを中心にして構築された小さなドメイン指定言語です。

Perl 5.20以上の場合は、-signaturesフラグを使うことによりサブルーチンシグネチャを有効にできます。

より多くを知りたい場合は、Mojolicious::Guides::Tutorialを見てください。

成長

Mojolicious::Guides::Growingは、Mojolicious::Liteプロトタイプをよく構成されたMojoliciousに成長させるための詳細なイントロダクションとなっていますが、それが、どれくらいよく似ているかを示すために、いくつかのスニペットを集めました。

ルーティング

「get」「post」関数とその仲間は、まったく同じです。

# Mojolicious::Lite
get '/foo' => sub {
  my $c = shift;
  $c->render(text => 'Hello World!');
};

# Mojolicious
sub startup {
  my $self = shift;

  my $routes = $self->routes;
  $routes->get('/foo' => sub {
    my $c = shift;
    $c->render(text => 'Hello World!');
  });
}

アプリケーション

「app」関数でアクセスできるアプリケーションオブジェクトは「startup」メソッドに渡される最初の引数です。

# Mojolicious::Lite
app->max_request_size(16777216);

# Mojolicious
sub startup {
  my $self = shift;
  $self->max_request_size(16777216);
}

プラグイン

「plugin」関数の代わりに、Mojoliciousのpluginメソッドを使うだけです。

# Mojolicious::Lite
plugin 'Config';

# Mojolicious
sub startup {
  my $self = shift;
  $self->plugin('Config');
}

ヘルパー

プラグインと似ていて、「helper」関数の代わりにMojoliciousの「helper」メソッドを使うだけです。

# Mojolicious::Lite
helper two => sub {
  my $c = shift;
  return 1 + 1;
};

# Mojolicious
sub startup {
  my $self = shift;
  $self->helper(two => sub {
    my $c = shift;
    return 1 + 1;
  });
}

アンダー

後に続く関数の呼び出しの代わりに、ネストされたルートで木を構築するためのメソッドを使うことができます。

# Mojolicious::Lite
under '/foo';
get '/bar' => sub {...};

# Mojolicious
sub startup {
  my $self = shift;

  my $routes = $self->routes;
  my $foo = $routes->under('/foo');
  $foo->get('/bar' => sub {...});
}

関数

Mojolicious::Liteは次の関数を実装しています。

any

my $route = any '/:foo' => sub {...};
my $route = any '/:foo' => sub {...} => 'name';
my $route = any '/:foo' => {foo => 'bar'} => sub {...};
my $route = any '/:foo' => [foo => qr/\w+/] => sub {...};
my $route = any ['GET', 'POST'] => '/:foo' => sub {...};
my $route = any ['GET', 'POST'] => '/:foo' => [foo => qr/\w+/] => sub {...};
my $route = any
  ['GET', 'POST'] => '/:foo' => (agent => qr/Firefox/) => sub {...};

Mojolicious::Routes::Routeanyによるルーティングを 生成し、リストされたHTTPのリクエストメソッドにマッチします。 さらなる引数のバリエーションについてはMojolicious::Guides::Tutorialを見てください。

app

my $app = app;

Mojolicious::Liteアプリケーションです。 これは、Mojoliciousのサブクラスです。

# すべての利用可能な属性とメソッドが利用できます
app->log->level('error');
app->defaults(foo => 'bar');

del

my $route = del '/:foo' => sub {...};
my $route = del '/:foo' => sub {...} => 'name';
my $route = del '/:foo' => {foo => 'bar'} => sub {...};
my $route = del '/:foo' => [foo => qr/\w+/] => sub {...};
my $route = del '/:foo' => (agent => qr/Firefox/) => sub {...};

Mojolicious::Routes::Routedeleteによるルーティングを生成し、 DELETEリクエストにだけマッチします。 さらなる引数のバリエーションについてはMojolicious::Guides::Tutorialを見てください。

get

my $route = get '/:foo' => sub {...};
my $route = get '/:foo' => sub {...} => 'name';
my $route = get '/:foo' => {foo => 'bar'} => sub {...};
my $route = get '/:foo' => [foo => qr/\w+/] => sub {...};
my $route = get '/:foo' => (agent => qr/Firefox/) => sub {...};

Mojolicious::Routes::Routegetによるルーティングを生成し、 GETリクエストにだけマッチします。 さらなる引数のバリエーションについてはMojolicious::Guides::Tutorialを見てください。

group

group {...};

新しいルーティングのグループを開始します。

helper

helper foo => sub {...};

Mojolicioushelperを使って新しいヘルパーを追加します。

hook

hook after_dispatch => sub {...};

Mojolicioushookと同じです。

options

my $route = options '/:foo' => sub {...};
my $route = options '/:foo' => sub {...} => 'name';
my $route = options '/:foo' => {foo => 'bar'} => sub {...};
my $route = options '/:foo' => [foo => qr/\w+/] => sub {...};
my $route = options '/:foo' => (agent => qr/Firefox/) => sub {...};

Mojolicious::Routes::Routeoptionsによるルーティングを生成し、 OPTIONSリクエストにだけマッチします。 さらなる引数のバリエーションについてはMojolicious::Guides::Tutorialを見てください。

patch

my $route = patch '/:foo' => sub {...};
my $route = patch '/:foo' => sub {...} => 'name';
my $route = patch '/:foo' => {foo => 'bar'} => sub {...};
my $route = patch '/:foo' => [foo => qr/\w+/] => sub {...};
my $route = patch '/:foo' => (agent => qr/Firefox/) => sub {...};

Mojolicious::Routes::Routepatchによるルーティングを生成し、 PATCHリクエストにだけマッチします。 さらなる引数のバリエーションについては上のチュートリアルを見てください。

plugin

plugin SomePlugin => {foo => 23};

Mojoliciouspluginを使ってプラグインをロードしま。

post

my $route = post '/:foo' => sub {...};
my $route = post '/:foo' => sub {...} => 'name';
my $route = post '/:foo' => {foo => 'bar'} => sub {...};
my $route = post '/:foo' => [foo => qr/\w+/] => sub {...};
my $route = post '/:foo' => (agent => qr/Firefox/) => sub {...};

Mojolicious::Routes::Routepostによるルーティングを生成し、 POSTリクエストにだけマッチします。 さらなる引数のバリエーションについてはMojolicious::Guides::Tutorialを見てください。

put

my $route = put '/:foo' => sub {...};
my $route = put '/:foo' => sub {...} => 'name';
my $route = put '/:foo' => {foo => 'bar'} => sub {...};
my $route = put '/:foo' => [foo => qr/\w+/] => sub {...};
my $route = put '/:foo' => (agent => qr/Firefox/) => sub {...};

Mojolicious::Routes::Routeputによるルーティングを生成し、 PUTリクエストにだけマッチします。 さらなる引数のバリエーションについてはMojolicious::Guides::Tutorialを見てください。

under

my $route = under sub {...};
my $route = under '/:foo' => sub {...};
my $route = under '/:foo' => {foo => 'bar'};
my $route = under '/:foo' => [foo => qr/\w+/];
my $route = under '/:foo' => (agent => qr/Firefox/);
my $route = under [format => 0];

Mojolicious::Routes::Routeunderでブリッジを生成し、 すべての続くルーティングに自動的に処理が追加されます。 さらなる引数のバリエーションについてはMojolicious::Guides::Tutorialを見てください。

websocket

my $route = websocket '/:foo' => sub {...};
my $route = websocket '/:foo' => sub {...} => 'name';
my $route = websocket '/:foo' => {foo => 'bar'} => sub {...};
my $route = websocket '/:foo' => [foo => qr/\w+/] => sub {...};
my $route = websocket '/:foo' => (agent => qr/Firefox/) => sub {...};

Mojolicious::Routes::Routewebsocketでルーティングを生成し、 WebSocketハンドシェイクにだけマッチします。 さらなる引数のバリエーションについてはMojolicious::Guides::Tutorialを見てください。

属性

Mojolicious::LiteMojoliciousからすべての属性を継承しています。

メソッド

Mojolicious::LiteMojoliciousからすべてのメソッドを継承しています。

(Mojolicious 8.12を反映。2019年6月11日更新)