Skip to content
Stefan Adams edited this page Oct 25, 2024 · 87 revisions

Welcome to the Mojolicious wiki!

These pages contain documentation from users, for users. Become part of the project and contribute new documentation wherever you can. Don't forget to check out the official tutorial and guides if you haven't already - they may answer most of your questions!

Starting point

The best point to start on working with Mojolicious is by reading the official Mojolicious::Lite tutorial. If you are new to Perl, see the introduction of the official Mojolicious documentation.

Screencasts

You should also take a look at the wonderful Mojocasts, which, while dated, still contain a lot of valuable information. Just watch out for a few things that have changed since the screencasts have been produced.

  • $self->render_text(...) has become $self->render(text => ...)
  • the relaxed placeholder /(.foo) is now /#foo
  • the image http://mojolicio.us/mojolicious-black.png has been replaced by https://docs.mojolicious.org/mojo/logo-white.png
  • Twitter changed their API
  • $ua->post_form(...) has been replaced with the form generator $ua->post(... => form => ...)
  • app->secret(...) has been replaced with app->secrets([...])

Development

Installation

Plugins

Routes

Controllers

Templates

Databases

Mojolicious is database agnostic. You are free to choose the way you want to store your data.

Performance

Mojolicious has a built-in non-blocking I/O web server, supporting multiple event loops. If it appears that your app isn't performing well, it's probably because it's blocking somewhere, and this doesn't scale well -- or at all. For example, a single process daemon that blocks doesn't scale past supporting a single connection and a multi-process preforking server that blocks doesn't scale past n connections. But make your app not block, and a single process daemon will scale to thousands... imagine what a multi-process preforking server will scale to. Are you ready to redesign your app to be scalable?

Designing a scalable web app

Miscellaneous

IDE/Editor support

There is documented support for Mojolicious for VSCode, Atom, TextMate, Vim, Sublime Text 2, jEdit, Padre (The Perl IDE), Emacs Web Mode, Camelcade (IntelliJ IDEA plugin) and Perl::Tidy. And here is a tiny project for extending Exuberant Ctags support for Mojolicious.

Deployment

Server environments

Auto-start at system boot up

  • With systemd (in the Mojolicious Cookbook)
  • Using upstart (standard on Ubuntu prior to version 15.04)

Cloud-based Services

Distribution

Example-Applications

Users

Support and Contribution

Support

Documentation translation

Contribution

If you are interested in helping out with the Mojolicious project, please take some time to review the contribution guidelines. You can submit bug reports, patches, and feature requests through the project's GitHub repository. If you are planning to contribute a new feature, it's a good idea to discuss it in the IRC channel before you start coding!

Donations

Donations are no longer taken, but you are welcome to support the ongoing development of Mojolicious with your contributions.

Swag

We have different T-Shirts and other merchandise for you to choose from.

Clone this wiki locally