Mojolicious::Guides
Section: User Contributed Perl Documentation (3)
Updated: 2018-12-15
Page Index
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 class ``
REFERENCE'' listing
all available APIs.
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 <http://qntm.org/files/perl/perl.html> 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 <http://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.10
features are enabled, even if examples don't specifically mention it.
use strict;
use warnings;
use utf8;
use feature ':5.10';
Some modules, like Mojo::Base and Mojolicious::Lite, will enable them for
you automatically, whenever they are used.
- 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.
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.
SPIN-OFFS
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 <http://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/master/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/master/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 <http://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/master/examples/linkcheck>
will show you how to integrate background jobs into well-structured
Mojolicious applications.
REFERENCE
This is the class hierarchy of the Mojolicious distribution.
- •
-
Mojo
- •
-
Mojo::Base
-
- •
-
Mojolicious
-
- •
-
Mojo::HelloWorld
- •
-
Mojolicious::Lite
-
- •
-
Mojo::Cache
- •
-
Mojo::Cookie
-
- •
-
Mojo::Cookie::Request
- •
-
Mojo::Cookie::Response
-
- •
-
Mojo::DOM::CSS
- •
-
Mojo::DOM::HTML
- •
-
Mojo::Date
- •
-
Mojo::EventEmitter
-
- •
-
Mojo::Asset
-
- •
-
Mojo::Asset::File
- •
-
Mojo::Asset::Memory
-
- •
-
Mojo::Content
-
- •
-
Mojo::Content::MultiPart
- •
-
Mojo::Content::Single
-
- •
-
Mojo::IOLoop
- •
-
Mojo::IOLoop::Client
- •
-
Mojo::IOLoop::Server
- •
-
Mojo::IOLoop::Stream
- •
-
Mojo::IOLoop::Subprocess
- •
-
Mojo::IOLoop::TLS
- •
-
Mojo::Log
- •
-
Mojo::Message
-
- •
-
Mojo::Message::Request
- •
-
Mojo::Message::Response
-
- •
-
Mojo::Reactor
-
- •
-
Mojo::Reactor::Poll
-
- •
-
Mojo::Reactor::EV
-
-
- •
-
Mojo::Server
-
- •
-
Mojo::Server::CGI
- •
-
Mojo::Server::Daemon
-
- •
-
Mojo::Server::Prefork
-
- •
-
Mojo::Server::PSGI
-
- •
-
Mojo::Transaction
-
- •
-
Mojo::Transaction::HTTP
- •
-
Mojo::Transaction::WebSocket
-
- •
-
Mojo::UserAgent
- •
-
Mojolicious::Plugins
-
- •
-
Mojo::Exception
- •
-
Mojo::Headers
- •
-
Mojo::JSON::Pointer
- •
-
Mojo::Parameters
- •
-
Mojo::Path
- •
-
Mojo::Promise
-
- •
-
Mojo::IOLoop::Delay
-
- •
-
Mojo::Server::Hypnotoad
- •
-
Mojo::Server::Morbo
- •
-
Mojo::Server::Morbo::Backend
-
- •
-
Mojo::Server::Morbo::Backend::Poll
-
- •
-
Mojo::Template
- •
-
Mojo::URL
- •
-
Mojo::Upload
- •
-
Mojo::UserAgent::CookieJar
- •
-
Mojo::UserAgent::Proxy
- •
-
Mojo::UserAgent::Server
- •
-
Mojo::UserAgent::Transactor
- •
-
Mojolicious::Command
-
- •
-
Mojolicious::Command::cgi
- •
-
Mojolicious::Command::daemon
- •
-
Mojolicious::Command::eval
- •
-
Mojolicious::Command::get
- •
-
Mojolicious::Command::prefork
- •
-
Mojolicious::Command::psgi
- •
-
Mojolicious::Command::routes
- •
-
Mojolicious::Command::version
- •
-
Mojolicious::Command::Author::cpanify
- •
-
Mojolicious::Command::Author::generate::app
- •
-
Mojolicious::Command::Author::generate::lite_app
- •
-
Mojolicious::Command::Author::generate::makefile
- •
-
Mojolicious::Command::Author::generate::plugin
- •
-
Mojolicious::Command::Author::inflate
- •
-
Mojolicious::Commands
-
- •
-
Mojolicious::Command::Author::generate
-
-
- •
-
Mojolicious::Controller
- •
-
Mojolicious::Plugin
-
- •
-
Mojolicious::Plugin::Config
-
- •
-
Mojolicious::Plugin::JSONConfig
-
- •
-
Mojolicious::Plugin::DefaultHelpers
- •
-
Mojolicious::Plugin::EPLRenderer
-
- •
-
Mojolicious::Plugin::EPRenderer
-
- •
-
Mojolicious::Plugin::HeaderCondition
- •
-
Mojolicious::Plugin::Mount
- •
-
Mojolicious::Plugin::TagHelpers
-
- •
-
Mojolicious::Renderer
- •
-
Mojolicious::Routes::Match
- •
-
Mojolicious::Routes::Pattern
- •
-
Mojolicious::Routes::Route
-
- •
-
Mojolicious::Routes
-
- •
-
Mojolicious::Sessions
- •
-
Mojolicious::Static
- •
-
Mojolicious::Types
- •
-
Mojolicious::Validator
- •
-
Mojolicious::Validator::Validation
- •
-
Test::Mojo
-
- •
-
Mojo::ByteStream
- •
-
Mojo::Collection
- •
-
Mojo::DynamicMethods
- •
-
Mojo::DOM
- •
-
Mojo::File
-
- •
-
Mojo::Home
-
- •
-
Mojo::JSON
- •
-
Mojo::Loader
- •
-
Mojo::Util
- •
-
Mojo::WebSocket
- •
-
ojo
MORE
A lot more documentation and examples by many different authors can be found in
the Mojolicious wiki <
http://github.com/mojolicious/mojo/wiki>.
SUPPORT
If you have any questions the documentation might not yet answer, don't
hesitate to ask on the
mailing list <
http://groups.google.com/group/mojolicious> or the official
IRC
channel
"#mojo" on
"irc.freenode.net" (chat
now! <
https://kiwiirc.com/nextclient/#irc://irc.freenode.net/mojo?nick=guest-?>).