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


 

Index

NAME
DON'T PANIC!
BASICS
CONVENTIONS
TUTORIAL
GUIDES
HIGHLIGHTS
SPIN-OFFS
REFERENCE
MORE
SUPPORT