Mojolicious::Guides(3) User Contributed Perl Documentation
NAME
Mojolicious::Guides - The Mojolicious Guide to the Galaxy
DON'T PANIC!
The Mojolicious <https://mojolicious.org> documentation is structured
into three parts. The "TUTORIAL" everyone starts with, the "GUIDES" that
explain all major features in detail, and the "API" reference listing all
available classes.
Some parts of the documentation only use the Mojolicious::Lite micro web
framework for examples, but that's merely a convenience for the reader.
Almost all features are exactly the same for full Mojolicious
applications.
BASICS
Learning Perl
If you are new to Perl, we recommend Learn Perl in 2 hours 30 minutes
<https://qntm.org/perl_en> for a quick introduction, or the Modern Perl
book <https://pragprog.com/book/swperl/modern-perl-fourth-edition>,
freely available in many formats. Both are excellent introductions to the
language. For more books and documentation, check out learn.perl.org
<https://learn.perl.org/>.
Learning Web Technologies
All web development starts with HTML, CSS and JavaScript, to learn the
basics we recommend the Mozilla Developer Network
<https://developer.mozilla.org/en-US/docs/Web>. And if you want to know
more about how browsers and web servers actually communicate, there's
also a very nice introduction to HTTP <https://developer.mozilla.org/en-
US/docs/Web/HTTP>.
CONVENTIONS
Modern Perl
Mojolicious uses a modern subset of Perl exclusively, and therefore all
documentation assumes that strict, warnings, utf8 and Perl 5.16 features
are enabled, even if examples don't specifically mention it.
use strict;
use warnings;
use utf8;
use feature ':5.16';
Some modules, like Mojo::Base and Mojolicious::Lite, will enable them for
you automatically, whenever they are used.
Signatures
On Perl 5.20+ you can also use the "-signatures" flag with Mojo::Base to
enable support for subroutine signatures. Signatures are used in all
examples for clarity, even when "-signatures" is omitted for brevity.
Variable names
For brevity and clarity, example variables will reflect the type of data
the API uses. For instance, $bytes or $chars to distinguish whether it is
encoded bytes or decoded characters in a Perl string, $bool if the value
just indicates true or false, $c to denote a Mojolicious::Controller
object, or $app to denote the application object.
When the return value of a method is the object it was called on, this
will be represented by using the same variable name in the example. This
does not mean the return value needs to be assigned back to it, but
indicates that further methods can be called in a chain.
TUTORIAL
Mojolicious::Guides::Tutorial
A fast and fun way to get started developing web applications with
Mojolicious. The tutorial introduces the Mojolicious::Lite micro web
framework, which is only a thin wrapper around the full web framework.
The simplified notation introduced in the tutorial is commonly used
throughout the guides and is therefore considered a prerequisite, you
should definitely take a look!
GUIDES
Mojolicious::Guides::Growing
Starting a Mojolicious::Lite prototype from scratch and growing it into
a well-structured Mojolicious application.
Mojolicious::Guides::Routing
Simple and fun introduction to the Mojolicious router.
Mojolicious::Guides::Rendering
Generating content with the Mojolicious renderer.
Mojolicious::Guides::Testing
Powerful yet elegant testing techniques and tools for Mojolicious and
other web applications.
Mojolicious::Guides::Cookbook
Cooking with Mojolicious, recipes for every taste.
Mojolicious::Guides::Contributing
Become a part of the ongoing Mojolicious development.
Mojolicious::Guides::FAQ
Answers to the most frequently asked questions.
HIGHLIGHTS
Mojolicious and Mojolicious::Lite are the sum of many parts, built on top
of the Mojo web development toolkit. Small building blocks that can be
used independently for all kinds of applications, these are the most
prominent ones.
Mojo::UserAgent
Full featured non-blocking I/O HTTP and WebSocket user agent.
Mojo::DOM
Very fun and minimalistic HTML/XML DOM parser with CSS selector
support.
Mojo::JSON
Minimalistic JSON implementation that just works.
Mojo::Server::Daemon
Full featured, highly portable non-blocking I/O HTTP and WebSocket
server, with self-restart support through Mojo::Server::Morbo, perfect
for development and testing.
Mojo::Server::Prefork
Full featured, UNIX optimized, preforking non-blocking I/O HTTP and
WebSocket server with support for zero downtime software upgrades (hot
deployment) through Mojo::Server::Hypnotoad.
Mojo::Server::CGI, Mojo::Server::PSGI
Transparent CGI and PSGI support out of the box.
Mojo::IOLoop
A minimalistic event loop with support for multiple reactor backends.
Mojo::Template
Very Perl-ish and minimalistic template system.
Test::Mojo
Testing toolkit for web applications.
ojo
Fun one-liners using everything above.
FULL-STACK
These modules are not part of the Mojolicious distribution, but have been
designed to be used with it and are being developed under the same
umbrella.
Mojo::Pg
A tiny wrapper around DBD::Pg that makes PostgreSQL
<https://www.postgresql.org> a lot of fun to use with Mojolicious.
Perform queries blocking and non-blocking, use all SQL features
<https://www.postgresql.org/docs/current/static/sql.html> PostgreSQL
has to offer, generate CRUD queries from data structures, manage your
database schema with migrations and build scalable real-time web
applications with the publish/subscribe pattern.
Examples: The minimal chat <https://github.com/mojolicious/mojo-
pg/tree/main/examples/chat.pl> application will show you how to scale
WebSockets to multiple servers, and the well-structured blog
<https://github.com/mojolicious/mojo-pg/tree/main/examples/blog>
application how to apply the MVC design pattern in practice.
Minion
A full featured job queue for Mojolicious with support for multiple
backends (such as PostgreSQL <https://www.postgresql.org>). Job queues
allow you to process time and/or computationally intensive tasks in
background processes, outside of the request/response lifecycle. Among
those tasks you'll commonly find image resizing, spam filtering, HTTP
downloads, building tarballs, warming caches and basically everything
else you can imagine that's not super fast.
Examples: The link checker
<https://github.com/mojolicious/minion/tree/main/examples/linkcheck>
will show you how to integrate background jobs into well-structured
Mojolicious applications.
API
This is the class hierarchy of the Mojolicious distribution.
o Mojo
o Mojo::Base
o Mojolicious
o Mojo::HelloWorld
o Mojolicious::Lite
o Mojo::Cache
o Mojo::Cookie
o Mojo::Cookie::Request
o Mojo::Cookie::Response
o Mojo::DOM::CSS
o Mojo::DOM::HTML
o Mojo::Date
o Mojo::EventEmitter
o Mojo::Asset
o Mojo::Asset::File
o Mojo::Asset::Memory
o Mojo::Content
o Mojo::Content::MultiPart
o Mojo::Content::Single
o Mojo::IOLoop
o Mojo::IOLoop::Client
o Mojo::IOLoop::Server
o Mojo::IOLoop::Stream
o Mojo::IOLoop::Subprocess
o Mojo::IOLoop::TLS
o Mojo::Log
o Mojo::Message
o Mojo::Message::Request
o Mojo::Message::Response
o Mojo::Reactor
o Mojo::Reactor::Poll
o Mojo::Reactor::EV
o Mojo::Server
o Mojo::Server::CGI
o Mojo::Server::Daemon
o Mojo::Server::Prefork
o Mojo::Server::PSGI
o Mojo::Transaction
o Mojo::Transaction::HTTP
o Mojo::Transaction::WebSocket
o Mojo::UserAgent
o Mojolicious::Plugins
o Mojo::Exception
o Mojo::Headers
o Mojo::JSON::Pointer
o Mojo::Parameters
o Mojo::Path
o Mojo::Promise
o Mojo::Server::Hypnotoad
o Mojo::Server::Morbo
o Mojo::Server::Morbo::Backend
o Mojo::Server::Morbo::Backend::Poll
o Mojo::Template
o Mojo::URL
o Mojo::Upload
o Mojo::UserAgent::CookieJar
o Mojo::UserAgent::Proxy
o Mojo::UserAgent::Server
o Mojo::UserAgent::Transactor
o Mojolicious::Command
o Mojolicious::Command::cgi
o Mojolicious::Command::daemon
o Mojolicious::Command::eval
o Mojolicious::Command::get
o Mojolicious::Command::prefork
o Mojolicious::Command::psgi
o Mojolicious::Command::routes
o Mojolicious::Command::version
o Mojolicious::Command::Author::cpanify
o Mojolicious::Command::Author::generate::app
o Mojolicious::Command::Author::generate::dockerfile
o Mojolicious::Command::Author::generate::lite_app
o Mojolicious::Command::Author::generate::makefile
o Mojolicious::Command::Author::generate::plugin
o Mojolicious::Command::Author::inflate
o Mojolicious::Commands
o Mojolicious::Command::Author::generate
o Mojolicious::Controller
o Mojolicious::Plugin
o Mojolicious::Plugin::Config
o Mojolicious::Plugin::JSONConfig
o Mojolicious::Plugin::NotYAMLConfig
o Mojolicious::Plugin::DefaultHelpers
o Mojolicious::Plugin::EPLRenderer
o Mojolicious::Plugin::EPRenderer
o Mojolicious::Plugin::HeaderCondition
o Mojolicious::Plugin::Mount
o Mojolicious::Plugin::TagHelpers
o Mojolicious::Renderer
o Mojolicious::Routes::Match
o Mojolicious::Routes::Pattern
o Mojolicious::Routes::Route
o Mojolicious::Routes
o Mojolicious::Sessions
o Mojolicious::Static
o Mojolicious::Types
o Mojolicious::Validator
o Mojolicious::Validator::Validation
o Test::Mojo
o Mojo::ByteStream
o Mojo::Collection
o Mojo::DynamicMethods
o Mojo::DOM
o Mojo::File
o Mojo::Home
o Mojo::JSON
o Mojo::Loader
o Mojo::Util
o Mojo::WebSocket
o ojo
MORE
A lot more documentation and examples by many different authors can be
found in the Mojolicious wiki <https://github.com/mojolicious/mojo/wiki>.
SUPPORT
If you have any questions the documentation might not yet answer, don't
hesitate to ask in the Forum <https://forum.mojolicious.org>, or on IRC
<https://web.libera.chat/#mojo>.
perl v5.34.3 2026-10-19 Mojolicious::Guides(3)
mojolicious 9.510.0 - Generated Sat Oct 24 13:05:29 CDT 2026
