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.
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.