mojolicious mvc

38
Mojolicious - advocating for evaluation at RMG by Árpád Szász 2012

Upload: arpad-szasz

Post on 08-Sep-2014

146 views

Category:

Technology


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Mojolicious mvc

Mojolicious- advocating for evaluation at RMG

by Árpád Szász 2012

Page 2: Mojolicious mvc

Disclaimer

● No comparison with Catalyst or Dancer

Page 3: Mojolicious mvc

Disclaimer

● No comparison with Catalyst or Dancer● Highlight Mojolicious' strenght points

Page 4: Mojolicious mvc

Disclaimer

● No comparison with Catalyst or Dancer● Highlight Mojolicious' strength points● 2 years experience using Mojolicious

Page 5: Mojolicious mvc

Introduction

● Development started in late 2008 by Sebastian Reidel (original developer of Catalyst)

Page 6: Mojolicious mvc

Introduction

● Development started in late 2008 by Sebastian Reidel (original developer of Catalyst)

● Concept based initially on Sinatra (Ruby), steals ideas from other frameworks

Page 7: Mojolicious mvc

Introduction

● Development started in late 2008 by Sebastian Reidel (original developer of Catalyst)

● Concept based initially on Sinatra (Ruby), steals ideas from other frameworks

● Focus on supporting latest web technologies

Page 8: Mojolicious mvc

Introduction

● Development started in late 2008 by Sebastian Reidel (original developer of Catalyst)

● Concept based initially on Sinatra (Ruby), steals ideas from other frameworks

● Focus on supporting latest web technologies● “Duct tape for the HTML5 web”

Page 9: Mojolicious mvc

Introduction

● Development started in late 2008 by Sebastian Reidel (original developer of Catalyst)

● Concept based initially on Sinatra (Ruby), steals ideas from other frameworks

● Focus on supporting latest web technologies● “Duct tape for the HTML5 web”● Active and helpful community

Page 10: Mojolicious mvc

Introduction

● Development started in late 2008 by Sebastian Reidel (original developer of Catalyst)

● Concept based initially on Sinatra (Ruby), steals ideas from other frameworks

● Focus on supporting latest web technologies● “Duct tape for the HTML5 web”● Active and helpful community

Page 11: Mojolicious mvc

Highlights

● Flexibility

Page 12: Mojolicious mvc

Highlights

● Flexibility● Self-contained

Page 13: Mojolicious mvc

Highlights

● Flexibility● Self-contained● Fast-prototyping

Page 14: Mojolicious mvc

Highlights

● Flexibility● Self-contained● Fast-prototyping● Built-in web servers

Page 15: Mojolicious mvc

Highlights

● Flexibility● Self-contained● Fast-prototyping● Built-in web servers● Realtime/async features

Page 16: Mojolicious mvc

Flexibility

● Modular design

Page 17: Mojolicious mvc

Flexibility

● Modular design– Mojo – runtime environment

Page 18: Mojolicious mvc

Flexibility

● Modular design– Mojo – runtime environment

– Mojolicious::Lite – fast prototyping

Page 19: Mojolicious mvc

Flexibility

● Modular design– Mojo – runtime environment

– Mojolicious::Lite – fast prototyping

– Mojolicious.pm – full-featured web applications

Page 20: Mojolicious mvc

Flexibility

● Suitable to any workflow– No built-in Model

Page 21: Mojolicious mvc

Flexibility

● Suitable to any workflow– No built-in Model

– No rigid constraints imposed by design

Page 22: Mojolicious mvc

Flexibility

● Suitable to any workflow– No built-in Model

– No rigid constraints imposed by design

– Customizable RESTful routes dispatcher

Page 23: Mojolicious mvc

Self-contained

● Single 500kB CPAN distribution (only requirement is Perl 5.10.1+)

● Has built-in templating engine, but supports others through plugins

Page 24: Mojolicious mvc

Self-contained

● Built-in support for:– client-side sessions

Page 25: Mojolicious mvc

Self-contained

● Built-in support for:– client-side sessions

– JSON

Page 26: Mojolicious mvc

Self-contained

● Built-in support for:– client-side sessions

– JSON

– testing

Page 27: Mojolicious mvc

Self-contained

● Built-in support for:– client-side sessions

– JSON

– testing

– real-time web technologies: Comet (long-polling), Eventsource, websockets

Page 28: Mojolicious mvc

Self-contained

● Built-in support for:– client-side sessions

– JSON

– testing

– real-time web technologies: Comet (long-polling), Eventsource, websockets

Page 29: Mojolicious mvc

Self-contained

● Built-in support for:– client-side sessions

– JSON

– testing

– real-time web technologies: Comet (long-polling), Eventsource, websockets

– PSGI (Plack), IPv6, etc.

Page 30: Mojolicious mvc

Fast prototyping

● Create Mojolicious::Lite application

Page 31: Mojolicious mvc

Fast prototyping

● Create Mojolicious::Lite application● Test with built-in development web-server

Page 32: Mojolicious mvc

Fast prototyping

● Create Mojolicious::Lite application● Test with built-in development web-server

(morbo)● Convert to full application (Mojolicious)

Page 33: Mojolicious mvc

Hypnotoad

● Built-in high-performance web server

Page 34: Mojolicious mvc

Hypnotoad

● Built-in high-performance web server:– Non blocking I/O HTTP and Websocket server

Page 35: Mojolicious mvc

Hypnotoad

● Built-in high-performance web server:– Non blocking I/O HTTP and Websocket server

– Hot deployment support

Page 36: Mojolicious mvc

Hypnotoad

● Built-in high-performance web server:– Non blocking I/O HTTP and Websocket server

– Hot deployment support

– Usual setup: Hypnotoad behind nginx reverse-proxy

Page 37: Mojolicious mvc

Testing

● TDD mentality (over 10.000 tests)

Page 38: Mojolicious mvc

Testing

● TDD mentality (over 10.000 tests)● Test::Mojo built-in framework