Mojolicious::Lite

Section: User Contributed Perl Documentation (3)
Updated: 2018-12-10
Page Index
 

NAME

Mojolicious::Lite - Micro real-time web framework  

SYNOPSIS

  # Automatically enables "strict", "warnings", "utf8" and Perl 5.10 features
  use Mojolicious::Lite;

  # Route with placeholder
  get '/:foo' => sub {
    my $c   = shift;
    my $foo = $c->param('foo');
    $c->render(text => "Hello from $foo.");
  };

  # Start the Mojolicious command system
  app->start;

 

DESCRIPTION

Mojolicious::Lite is a tiny domain specific language built around Mojolicious, made up of only about a dozen Perl functions.

On Perl 5.20+ you can also use a "-signatures" flag to enable support for subroutine signatures.

  use Mojolicious::Lite -signatures;

  get '/:foo' => sub ($c) {
    my $foo = $c->param('foo');
    $c->render(text => "Hello from $foo.");
  };

  app->start;

See Mojolicious::Guides::Tutorial for more!  

GROWING

While Mojolicious::Guides::Growing will give you a detailed introduction to growing a Mojolicious::Lite prototype into a well-structured Mojolicious application, here we have collected a few snippets that illustrate very well just how similar both of them are.  

Routes

The functions ``get'', ``post'' and friends all have equivalent methods.

  # 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!');
    });
  }

 

Application

The application object you can access with the function ``app'' is the first argument passed to the "startup" method.

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

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

 

Plugins

Instead of the ``plugin'' function you just use the method ``plugin'' in Mojolicious.

  # Mojolicious::Lite
  plugin 'Config';

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

 

Helpers

Similar to plugins, instead of the ``helper'' function you just use the method ``helper'' in Mojolicious.

  # 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;
    });
  }

 

Under

Instead of sequential function calls, we can use methods to build a tree with nested routes, that much better illustrates how routes work internally.

  # 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 {...});
  }

 

FUNCTIONS

Mojolicious::Lite implements the following functions, which are automatically exported.  

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 {...};

Generate route with ``any'' in Mojolicious::Routes::Route, matching any of the listed HTTP request methods or all. See Mojolicious::Guides::Tutorial and Mojolicious::Guides::Routing for more information.  

app

  my $app = app;

Returns the Mojolicious::Lite application object, which is a subclass of Mojolicious.

  # Use all the available attributes and methods
  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 {...};

Generate route with ``delete'' in Mojolicious::Routes::Route, matching only "DELETE" requests. See Mojolicious::Guides::Tutorial and Mojolicious::Guides::Routing for more information.  

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 {...};

Generate route with ``get'' in Mojolicious::Routes::Route, matching only "GET" requests. See Mojolicious::Guides::Tutorial and Mojolicious::Guides::Routing for more information.  

group

  group {...};

Start a new route group.  

helper

  helper foo => sub {...};

Add a new helper with ``helper'' in Mojolicious.  

hook

  hook after_dispatch => sub {...};

Share code with ``hook'' in Mojolicious.  

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 {...};

Generate route with ``options'' in Mojolicious::Routes::Route, matching only "OPTIONS" requests. See Mojolicious::Guides::Tutorial and Mojolicious::Guides::Routing for more information.  

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 {...};

Generate route with ``patch'' in Mojolicious::Routes::Route, matching only "PATCH" requests. See Mojolicious::Guides::Tutorial and Mojolicious::Guides::Routing for more information.  

plugin

  plugin SomePlugin => {foo => 23};

Load a plugin with ``plugin'' in Mojolicious.  

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 {...};

Generate route with ``post'' in Mojolicious::Routes::Route, matching only "POST" requests. See Mojolicious::Guides::Tutorial and Mojolicious::Guides::Routing for more information.  

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 {...};

Generate route with ``put'' in Mojolicious::Routes::Route, matching only "PUT" requests. See Mojolicious::Guides::Tutorial and Mojolicious::Guides::Routing for more information.  

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];

Generate nested route with ``under'' in Mojolicious::Routes::Route, to which all following routes are automatically appended. See Mojolicious::Guides::Tutorial and Mojolicious::Guides::Routing for more information.  

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 {...};

Generate route with ``websocket'' in Mojolicious::Routes::Route, matching only WebSocket handshakes. See Mojolicious::Guides::Tutorial and Mojolicious::Guides::Routing for more information.  

ATTRIBUTES

Mojolicious::Lite inherits all attributes from Mojolicious.  

METHODS

Mojolicious::Lite inherits all methods from Mojolicious.  

SEE ALSO

Mojolicious, Mojolicious::Guides, <https://mojolicious.org>.


 

Index

NAME
SYNOPSIS
DESCRIPTION
GROWING
Routes
Application
Plugins
Helpers
Under
FUNCTIONS
any
app
del
get
group
helper
hook
options
patch
plugin
post
put
under
websocket
ATTRIBUTES
METHODS
SEE ALSO