-
Notifications
You must be signed in to change notification settings - Fork 580
Home
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!
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.
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 moved tohttp://mojolicio.us/mojo/logo-black.png
- Twitter changed their API
-
$ua->post_form(...)
has been replaced with the form generator$ua->post(... => form => ...)
-
app->secret(...)
has been replaced withapp->secrets([...])
- Installation of Mojolicious
- Installation of newer versions of Perl
- Installation of CPAN modules by cpanm and cpanfile
- Installation of HTTPS support
- Installation of FastCGI support
- Quick Start guide for Mojolicious
- Read the official Routing Guide!
- Routes for non lite apps
- Request data - accessing POST and GET parameters
- Read the official Rendering Guide!
- Working with the templating system
- Recipes for templates
- Working with helpers
- Form Data Validation
Mojolicious is database agnostic. You are free to choose the way you want to store your data.
- Database support
- SQLite
- MySQL, even non-blocking
- ORMs for Mojolicious, for example ORLite
- CouchDB and Mojo::UserAgent
- MongoDB
- Using Redis as a key/value store, both blocking and non-blocking.
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?
- Why? Why? Why??
- Check the FAQ, FAQ, FAQ
- A note about performance vs scalability
- Get your non-block-fu with a primer in Blocking/Non-blocking 101
- Consider how to make your app not block
- See some real-world evidence by benchmarking
- How to work with UTF-8?
- How to change the Character set in Mojolicious?
- How to use logrotation with Mojolicious?
- How to port CGI applications to Mojolicious?
- How to use Mojolicious on Perl 5.8
There is documented support for Mojolicious for TextMate, Vim, Sublime Text 2, jEdit, Padre (The Perl IDE), and Perl::Tidy. And here is a tiny project for extending Exuberant Ctags support for Mojolicious.
Perl tutorial site - Mojolicious is Perl framework. If you are newbie to Perl, see tutorial site.
- Read the official Cookbook on deployment!
- Deploying on Apache
- Deploying on Lighttpd with FastCGI
- Using the Hypnotoad Prefork Web Server
- Mojolicious on Heroku (free service) in one easy step - mojo deploy heroku
- Mojolicious on Dreamhost using FastCGI
- Mojolicious on Uberspace using Hypnotoad
- Mojolicious on dotCloud
- Official Homepage
- Official Mailing-List
- IRC-Channel #mojo on irc.perl.org
- Twitter account of the main developer
- CPAN
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!