$ cpanp install Mojo
... no prereqs needed, so installation will be very fast ...
$ mojolicious generate app MyMojoliciousApp
[mkdir] /Users/sri/my_mojolicious_app/bin
[write] /Users/sri/my_mojolicious_app/bin/mojolicious
[chmod] my_mojolicious_app/bin/mojolicious 744
[mkdir] /Users/sri/my_mojolicious_app/lib
[write] /Users/sri/my_mojolicious_app/lib/MyMojoliciousApp.pm
[mkdir] /Users/sri/my_mojolicious_app/lib/MyMojoliciousApp
[write] /Users/sri/my_mojolicious_app/lib/MyMojoliciousApp/Example.pm
[mkdir] /Users/sri/my_mojolicious_app/t
[write] /Users/sri/my_mojolicious_app/t/basic.t
[mkdir] /Users/sri/my_mojolicious_app/public
[write] /Users/sri/my_mojolicious_app/public/404.html
[exist] /Users/sri/my_mojolicious_app/public
[write] /Users/sri/my_mojolicious_app/public/index.html
[mkdir] /Users/sri/my_mojolicious_app/templates/example
[write] /Users/sri/my_mojolicious_app/templates/example/welcome.phtml
$ cd my_mojolicious_app
$ bin/mojolicious daemon
Server available at http://127.0.0.1:3000.
####
$ MOJO_RELOAD=1 bin/mojolicious daemon
Server available at http://127.0.0.1:3000.
##
##
package MyMojoliciousApp;
use strict;
use warnings;
use base 'Mojolicious';
# This method will run for each request
sub dispatch {
my ($self, $c) = @_;
# Try to find a static file
$self->static->dispatch($c);
# Use routes if we don't have a response code yet
$self->routes->dispatch($c) unless $c->res->code;
# Nothing found
unless ($c->res->code) {
$self->static->serve($c, '/404.html');
$c->res->code(404);
}
}
# This method will run once at server start
sub startup {
my $self = shift;
# The routes
my $r = $self->routes;
# Default route
$r->route('/:controller/:action/:id')
->to(controller => 'example', action => 'welcome', id => 1);
}
1;
##
##
package MyMojoliciousApp::Example;
use strict;
use warnings;
use base 'Mojolicious::Controller';
# This is a templateless action
sub test {
my ($self, $c) = @_;
# Response object
my $res = $c->res;
# Code
$res->code(200);
# Headers
$res->headers->content_type('text/html');
# Content
my $url = $c->url_for;
$url->path->parse('/index.html');
$res->body(qq/Forward to a static document.<\/a>/);
}
# This action will render a template
sub welcome {
my ($self, $c) = @_;
# Render the template
$c->render;
}
1;
##
##
% my $c = shift;
Welcome to the Mojolicious Web Framework!
This page was generated from a template at templates/example/test.phtml,
click here
to move forward to a templateless action.