Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mojolicious/mojo
:sparkles: Mojolicious - Perl real-time web framework
https://github.com/mojolicious/mojo
cloud-native event-loop html http json mojolicious mvc perl user-agent web-framework web-server websocket
Last synced: 14 days ago
JSON representation
:sparkles: Mojolicious - Perl real-time web framework
- Host: GitHub
- URL: https://github.com/mojolicious/mojo
- Owner: mojolicious
- License: artistic-2.0
- Created: 2008-10-21T07:50:26.000Z (about 16 years ago)
- Default Branch: main
- Last Pushed: 2024-05-17T19:15:52.000Z (6 months ago)
- Last Synced: 2024-05-19T19:11:38.696Z (6 months ago)
- Topics: cloud-native, event-loop, html, http, json, mojolicious, mvc, perl, user-agent, web-framework, web-server, websocket
- Language: Perl
- Homepage: https://mojolicious.org
- Size: 28.5 MB
- Stars: 2,656
- Watchers: 214
- Forks: 573
- Open Issues: 85
-
Metadata Files:
- Readme: README.md
- Changelog: Changes
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
[![](https://github.com/mojolicious/mojo/workflows/linux/badge.svg)](https://github.com/mojolicious/mojo/actions) [![](https://github.com/mojolicious/mojo/workflows/macos/badge.svg)](https://github.com/mojolicious/mojo/actions) [![](https://github.com/mojolicious/mojo/workflows/windows/badge.svg)](https://github.com/mojolicious/mojo/actions)
Mojolicious is a fresh take on **Perl** web development, based on years of experience developing the Catalyst
framework, and utilizing the latest web standards and technologies. You can get started with your project quickly,
with a framework that grows with your needs.The Mojo stack provides a consistent set of components that can be used in any project. The guides cover most aspects
of using the framework and the components have comprehensive reference documentation. Mojolicious is a real-time web
framework, which allows a new class of web applications using WebSockets and having long-running requests without
blocking.Join us now, and be a part of a friendly and knowledgeable community of developers!
## Features
* Most [popular](https://metacpan.org/favorite/leaderboard) distribution on **CPAN**.
* An amazing **real-time web framework**, allowing you to easily grow single file prototypes into well-structured MVC
web applications.
* Everything you need to build cloud-native web applications for state of the art container environments.
* Powerful out of the box with RESTful routes, plugins, commands, Perl-ish templates, content negotiation, session
management, form validation, testing framework, static file server, CGI/[PSGI](http://plackperl.org) detection,
first class Unicode support and much more for you to discover.
* A powerful **web development toolkit**, that you can use for all kinds of applications, independently of the web
framework.
* Full stack HTTP and WebSocket client/server implementation with IPv6, TLS, SNI, IDNA, HTTP/SOCKS5 proxy, UNIX
domain socket, Comet (long polling), Promises/A+, async/await, keep-alive, connection pooling, timeout, cookie,
multipart, and gzip compression support.
* Built-in non-blocking I/O web server, supporting multiple event loops as well as optional pre-forking and hot
deployment, perfect for building highly scalable web services.
* JSON and HTML/XML parser with CSS selector support.
* Very clean, portable and object-oriented pure-Perl API with no hidden magic and no requirements besides Perl 5.26.0
(versions as old as 5.16.0 can be used too, but may require additional CPAN modules to be installed)
* Also available for [JavaScript](https://mojojs.org).
* Fresh code based upon years of experience developing [Catalyst](http://catalyst.perl.org), free and open source.
* Hundreds of 3rd party [extensions](https://metacpan.org/requires/distribution/Mojolicious) and high quality spin-off
projects like the [Minion](https://metacpan.org/pod/Minion) job queue.## Installation
All you need is a one-liner, it takes less than a minute.
$ curl -L https://cpanmin.us | perl - -M https://cpan.metacpan.org -n Mojolicious
We recommend the use of a [Perlbrew](http://perlbrew.pl) environment.
## Getting Started
These three lines are a whole web application.
```perl
use Mojolicious::Lite;get '/' => {text => 'I ♥ Mojolicious!'};
app->start;
```To run the example with the built-in development web server, just put the code into a file and start it with `morbo`.
$ morbo hello.pl
Web application available at http://127.0.0.1:3000Test it with any HTTP client you prefer.
$ curl http://127.0.0.1:3000/
I ♥ Mojolicious!## Duct tape for the HTML5 web
Use all the latest Perl and HTML features in beautiful single file prototypes like this one, and
[grow](https://docs.mojolicious.org/Mojolicious/Guides/Growing#Differences) them easily into well-structured
**Model-View-Controller** web applications.```perl
use Mojolicious::Lite -signatures;# Render template "index.html.ep" from the DATA section
get '/' => sub ($c) {
$c->render(template => 'index');
};# WebSocket service used by the template to extract the title from a website
websocket '/title' => sub ($c) {
$c->on(message => sub ($c, $msg) {
my $title = $c->ua->get($msg)->result->dom->at('title')->text;
$c->send($title);
});
};app->start;
__DATA__@@ index.html.ep
% my $url = url_for 'title';const ws = new WebSocket('<%= $url->to_abs %>');
ws.onmessage = function (event) { document.body.innerHTML += event.data };
ws.onopen = function (event) { ws.send('https://mojolicious.org') };```
## Want to know more?
Take a look at our excellent [documentation](https://docs.mojolicious.org)!