CINXE.COM

Mojo - Web development toolkit

<!doctype html><html> <head> <link rel="apple-touch-icon" href="/mojolicious/touch-icon.png"> <link rel="apple-touch-icon" sizes="152x152" href="/mojolicious/touch-icon-152x152.png"> <link rel="apple-touch-icon" sizes="167x167" href="/mojolicious/touch-icon-167x167.png"> <link rel="apple-touch-icon" sizes="180x180" href="/mojolicious/touch-icon-180x180.png"> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Mojolicious" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Mojo - Web development toolkit</title> <script src="/mojolicious/jquery/jquery.js"></script> <script src="/mojolicious/highlight.js/highlight.min.js"></script> <link href="/mojolicious/highlight.js/highlight-mojo-light.css" rel="stylesheet"> <script>hljs.initHighlightingOnLoad();</script> <script src="/mojolicious/bootstrap/bootstrap.js"></script> <link href="/mojolicious/bootstrap/bootstrap.css" rel="stylesheet"> <link href="/mojolicious/fontawesome/fontawesome.css" rel="stylesheet"> <link href="/app.css?v=3" rel="stylesheet"> <link href="/mojodocs.css" rel="stylesheet"> </head> <body><a id="toc"></a> <header> <nav class="navbar navbar-expand-lg navbar-dark mojobar"> <a href="https://mojolicious.org" id="mojobar-brand" class="navbar-brand"> <picture> <img src="/mojo/logo-white.png" srcset="/mojo/logo-white-2x.png 2x"> </picture> </a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div id="navbarNav" class="collapse navbar-collapse"> <ul class="navbar-nav mr-auto"> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Documentation </a> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a class="dropdown-item" href="https://docs.mojolicious.org">Overview</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="https://docs.mojolicious.org/Mojolicious/Guides/Tutorial">Tutorial</a> <a class="dropdown-item" href="https://docs.mojolicious.org/Mojolicious/Guides/Growing">Growing</a> <a class="dropdown-item" href="https://docs.mojolicious.org/Mojolicious/Guides/Routing">Routing</a> <a class="dropdown-item" href="https://docs.mojolicious.org/Mojolicious/Guides/Rendering">Rendering</a> <a class="dropdown-item" href="https://docs.mojolicious.org/Mojolicious/Guides/Testing">Testing</a> <a class="dropdown-item" href="https://docs.mojolicious.org/Mojolicious/Guides/Cookbook">Cookbook</a> <a class="dropdown-item" href="https://docs.mojolicious.org/Mojolicious/Guides/Contributing">Contributing</a> <a class="dropdown-item" href="https://docs.mojolicious.org/Mojolicious/Guides/FAQ">FAQ</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="https://docs.mojolicious.org#API">API</a> </div> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="communityDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Community </a> <div class="dropdown-menu" aria-labelledby="communityDropdown"> <a class="dropdown-item" href="https://web.libera.chat/#mojo">IRC</a> <a class="dropdown-item" href="https://forum.mojolicious.org">Forum</a> <a class="dropdown-item" href="https://fosstodon.org/@mojolicious">Mastodon</a> <a class="dropdown-item" href="https://www.linkedin.com/groups/8963713/">LinkedIn</a> <a class="dropdown-item" href="https://github.com/mojolicious/mojo/wiki">Wiki</a> <a class="dropdown-item" href="https://metacpan.org/release/Mojolicious/">CPAN</a> </div> </li> <li class="nav-item"> <a class="nav-link" href="https://github.com/mojolicious/mojo/">Contribute on GitHub</a> </li> </ul> <a class="navbar-brand" href="https://mojojs.org"> <picture> <img src="/mojolicious/mojojs-white.png" srcset="/mojolicious/mojojs-white-2x.png 2x"> </picture> </a> <form action="https://www.google.com/cse" target="_blank" class="form-inline my-2 my-lg-0"> <input name="cx" type="hidden" value="014527573091551588235:pwfplkjpgbi"> <input name="ie" type="hidden" value="UTF-8"> <input name="q" placeholder="Search..." type="search"> </form> </div> </nav> </header> <div class="container-fluid"> <div class="row flex-wrap"> <aside class="col-sm-12 col-md-4 col-lg-2 mojo-sidebar"> <form class="mojo-version d-flex align-items-center"> <fieldset disabled> <input type="text" id="disabledTextInput" class="form-control" placeholder="v9.40"> </fieldset> </form> <ul> <li> <a href="#NAME"><b>NAME</b></a> </li> <li> <a href="#SYNOPSIS"><b>SYNOPSIS</b></a> </li> <li> <a href="#DESCRIPTION"><b>DESCRIPTION</b></a> </li> <li> <a href="#SEE-ALSO"><b>SEE ALSO</b></a> </li> </ul> </aside> <main class="col-sm-12 col-md-8 col-lg-10 py-md-3 pl-md-5 mojo-main"> <div class="mojo-docinfo"> <div> <div class="mojo-docnav"> <a class="nav-link" alt="API" href="https://docs.mojolicious.org#API"><i class="fas fa-book"></i></a> </div> Module: <a href="http://docs.mojolicious.org/Mojo">Mojo</a> </div> </div> <div class="mojo-external"> <a class="btn btn-outline-secondary btn-sm" href="http://docs.mojolicious.org/Mojo.txt" role="button"> Source </a> <a class="btn btn-outline-secondary btn-sm" href="https://metacpan.org/pod/Mojo" role="button">CPAN</a> </div> <div class="mojo-perldoc"> <h1 id="NAME"><a class="permalink" href="#NAME">#</a><a href="#toc">NAME</a></h1> <p>Mojo - Web development toolkit</p> <h1 id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">#</a><a href="#toc">SYNOPSIS</a></h1> <pre><code># HTTP/WebSocket user agent use Mojo::UserAgent; my $ua = Mojo::UserAgent-&gt;new; say $ua-&gt;get(&#39;www.mojolicious.org&#39;)-&gt;result-&gt;headers-&gt;server; # HTML/XML DOM parser with CSS selectors use Mojo::DOM; my $dom = Mojo::DOM-&gt;new(&#39;&lt;div&gt;&lt;b&gt;Hello Mojo!&lt;/b&gt;&lt;/div&gt;&#39;); say $dom-&gt;at(&#39;div &gt; b&#39;)-&gt;text; # Perl-ish templates use Mojo::Template; my $mt = Mojo::Template-&gt;new(vars =&gt; 1); say $mt-&gt;render(&#39;Hello &lt;%= $what %&gt;!&#39;, {what =&gt; &#39;Mojo&#39;}); # HTTP/WebSocket server use Mojo::Server::Daemon; my $daemon = Mojo::Server::Daemon-&gt;new(listen =&gt; [&#39;http://*:8080&#39;]); $daemon-&gt;unsubscribe(&#39;request&#39;)-&gt;on(request =&gt; sub ($daemon, $tx) { $tx-&gt;res-&gt;code(200); $tx-&gt;res-&gt;body(&#39;Hello Mojo!&#39;); $tx-&gt;resume; }); $daemon-&gt;run; # Event loop use Mojo::IOLoop; for my $seconds (1 .. 5) { Mojo::IOLoop-&gt;timer($seconds =&gt; sub { say $seconds }); } Mojo::IOLoop-&gt;start;</code></pre> <h1 id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">#</a><a href="#toc">DESCRIPTION</a></h1> <p>A powerful web development toolkit, with all the basic tools and helpers needed to write simple web applications and higher level web frameworks, such as <a href="http://docs.mojolicious.org/Mojolicious">Mojolicious</a>. Some of the most commonly used tools are <a href="http://docs.mojolicious.org/Mojo/UserAgent">Mojo::UserAgent</a>, <a href="http://docs.mojolicious.org/Mojo/DOM">Mojo::DOM</a>, <a href="http://docs.mojolicious.org/Mojo/JSON">Mojo::JSON</a>, <a href="http://docs.mojolicious.org/Mojo/Server/Daemon">Mojo::Server::Daemon</a>, <a href="http://docs.mojolicious.org/Mojo/Server/Prefork">Mojo::Server::Prefork</a>, <a href="http://docs.mojolicious.org/Mojo/IOLoop">Mojo::IOLoop</a> and <a href="http://docs.mojolicious.org/Mojo/Template">Mojo::Template</a>.</p> <p>See <a href="http://docs.mojolicious.org/Mojolicious/Guides">Mojolicious::Guides</a> for more!</p> <h1 id="SEE-ALSO"><a class="permalink" href="#SEE-ALSO">#</a><a href="#toc">SEE ALSO</a></h1> <p><a href="http://docs.mojolicious.org/Mojolicious">Mojolicious</a>, <a href="http://docs.mojolicious.org/Mojolicious/Guides">Mojolicious::Guides</a>, <a href="https://mojolicious.org">https://mojolicious.org</a>.</p> </div> </main> </div> </div> <footer> <div class="container-fluid p-3 mojo-footer"> <div class="row"> <div class="col-sm align-self-center text-center mojo-free"> <b>Free</b> and <b>Open Source</b>. </div> <div class="col-sm align-self-center text-center mojo-copy"> <i class="far fa-copyright"></i> 2008-2023 Sebastian Riedel and the <a href="https://docs.mojolicious.org/Mojolicious#AUTHORS">Mojolicious contributors</a>. </div> <div class="col-sm align-self-center text-center mojo-social"> <a alt="GitHub" href="https://github.com/mojolicious/mojo"><i class="fab fa-github-alt"></i></a> <a alt="Mastodon" rel="me" href="https://fosstodon.org/@mojolicious"><i class="fab fa-mastodon"></i></a> <a alt="LinkedIn" href="https://www.linkedin.com/groups/8963713/"><i class="fab fa-linkedin"></i></a> </div> </div> </div> </footer> <script> const links = document.querySelectorAll('.mojo-sidebar ul li a[href^="#"]'); const linkById = Object.fromEntries(Array.from(links).map(e => [e.getAttribute('href').substr(1), e])); const sections = Array.from(links).map(e => document.getElementById(e.getAttribute('href').substr(1))).reverse(); let lastSectionId; let mojoOnScroll = () => { const pos = (document.documentElement.scrollTop || document.body.scrollTop) - 63; const section = sections.find(e => e.offsetTop <= pos); if (!section) return; if (section.id == lastSectionId) return; lastSectionId = section.id; links.forEach(e => e.classList.remove('font-weight-bold')); linkById[section.id].classList.add('font-weight-bold'); }; window.onscroll = mojoOnScroll; mojoOnScroll(); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10