mojolicious

Post on 12-May-2015

2.866 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Mojolicious

Catalystwelcome to dependency hell

vs

cpan Mojoonly core dependencies

catalyst.pl new_project

created "new_project"created "new_project/script"created "new_project/lib"[ snip ]created "new_project/script/new_project_server.pl"created "new_project/script/new_project_test.pl"created "new_project/script/new_project_create.pl"

mojolicious generate lite_app new_project

[exist] /private/tmp [write] /private/tmp/new_project [chmod] new_project 744

./new_project daemon

Yea baby!

where does it come from

#!/usr/bin/env perl

use Mojolicious::Lite;

get '/' => 'index';

get '/:groovy' => sub { my $self = shift; $self->render_text($self->param('groovy'), layout => 'funky');};

app->start;__DATA__

@@ index.html.ep% layout 'funky';Yea baby!

@@ layouts/funky.html.ep<!doctype html><html> <head><title>Funky!</title></head> <body><%== content %></body></html>

what is it good forwhy bother - why another framework

extremely quick and dirty

ideal for prototyping

@@ index.html.ep<!doctype html><html> <head><title>EPP test client</title></head> <body>% if ($result) { <h2>EPP greeting</h2> <pre><%= $greet %> </pre> <h2>EPP command results</h2>% foreach my $res (@{$result->{results}}) { <pre><%= $res %> </pre>% } % } <form method="post"> <textarea rows="20" cols="40" name="command"><%= $command %> </textarea> <br /> <input type="submit" name="submit" value="send command" /> </form> </body></html>

can scale outand become nice and clean

some nice features

my $client = Mojo::Client->new;

my $url = $couch_user_url."?key="'.$self->session->{'name'}.'"';

my $view = $client->get($url)->success->json->{rows}->[0]->{doc};

query CouchDB

routing

• get ‘/foo’ => (agent qr/iPhone/) => sub {

• post ‘/foo’ => sub { #all treated the same }

• any => sub { #catch all }

• ladder sub { return 1;} #authentication

output format

• $self->render_json($data)

• $self->render_text(“Hi there!”)

• $self->render(handler => [your handler])

and once you grow out of the lite_app

mojolicious inflate new_project

have fun prototyping

Lenz Gschwendtner@norbu09

top related