Mojolicious::Lite

Section: User Contributed Perl Documentation (3pm)
Updated: 2022-12-22
Index Return to Main Contents
 

NAME

Mojolicious::Lite - Micro real-time web framework  

SYNOPSIS

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

  # Route with placeholder
  get '/:foo' => sub ($c) {
    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 ($c) {
    $c->render(text => 'Hello World!');
  };

  # Mojolicious
  sub startup ($self) {
  
    my $routes = $self->routes;
    $routes->get('/foo' => sub ($c) {
      $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 ($self) {
    $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 ($self) {
    $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 ($c) {
    return 1 + 1;
  };

  # Mojolicious
  sub startup ($self) {
    $self->helper(two => sub ($c) {
      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 ($c) {...};

  # Mojolicious
  sub startup ($self) {

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

 

FUNCTIONS

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

any

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

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 ($c) {...};
  my $route = del '/:foo' => sub ($c) {...} => 'name';
  my $route = del '/:foo' => {foo => 'bar'} => sub ($c) {...};
  my $route = del '/:foo' => [foo => qr/\w+/] => sub ($c) {...};
  my $route = del '/:foo' => (agent => qr/Firefox/) => sub ($c) {...};

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 ($c) {...};
  my $route = get '/:foo' => sub ($c) {...} => 'name';
  my $route = get '/:foo' => {foo => 'bar'} => sub ($c) {...};
  my $route = get '/:foo' => [foo => qr/\w+/] => sub ($c) {...};
  my $route = get '/:foo' => (agent => qr/Firefox/) => sub ($c) {...};

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 ($c, @args) {...};

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

hook

  hook after_dispatch => sub ($c) {...};

Share code with ``hook'' in Mojolicious.  

options

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

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 ($c) {...};
  my $route = patch '/:foo' => sub ($c) {...} => 'name';
  my $route = patch '/:foo' => {foo => 'bar'} => sub ($c) {...};
  my $route = patch '/:foo' => [foo => qr/\w+/] => sub ($c) {...};
  my $route = patch '/:foo' => (agent => qr/Firefox/) => sub ($c) {...};

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 ($c) {...};
  my $route = post '/:foo' => sub ($c) {...} => 'name';
  my $route = post '/:foo' => {foo => 'bar'} => sub ($c) {...};
  my $route = post '/:foo' => [foo => qr/\w+/] => sub ($c) {...};
  my $route = post '/:foo' => (agent => qr/Firefox/) => sub ($c) {...};

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 ($c) {...};
  my $route = put '/:foo' => sub ($c) {...} => 'name';
  my $route = put '/:foo' => {foo => 'bar'} => sub ($c) {...};
  my $route = put '/:foo' => [foo => qr/\w+/] => sub ($c) {...};
  my $route = put '/:foo' => (agent => qr/Firefox/) => sub ($c) {...};

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 ($c) {...};
  my $route = under '/:foo' => sub ($c) {...};
  my $route = under '/:foo' => {foo => 'bar'};
  my $route = under '/:foo' => [foo => qr/\w+/];
  my $route = under '/:foo' => (agent => qr/Firefox/);
  my $route = under [format => ['json', 'yaml']];

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 ($c) {...};
  my $route = websocket '/:foo' => sub ($c) {...} => 'name';
  my $route = websocket '/:foo' => {foo => 'bar'} => sub ($c) {...};
  my $route = websocket '/:foo' => [foo => qr/\w+/] => sub ($c) {...};
  my $route = websocket '/:foo' => (agent => qr/Firefox/) => sub ($c) {...};

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

This document was created by man2html, using the manual pages.
Time: 07:57:08 GMT, April 26, 2024