6 ms·
Mojolicious Web Framework in Perl
- mike-cardwell 16y agoI was going to start learning and using Catalyst soon. Why should I learn Mojolicious instead? Why shouldn't I?
- thenduks 16y agoI don't have extensive experience with either (just some toys and experiments really) but Mojo just feels so much cleaner. If you read the front page it talks about how it's 'fresh code' by people with experience working on Catalyst itself -- IMO it really comes across: no cruft, lean-clear docs (granted a bit sparse last time I looked), a whole bunch of 'out of the box' niceties that are all over the 'blogosphere' these days (JSON, REST, async IO, etc). I'd definitely recommending just giving them both a spin for a toy project and see how they sit with you.
- jrockway 16y agoOn the other hand, Catalyst has a huge active community (277 people on the IRC channel right now), a ton of code for you to look at (1723 results for extensions on search.cpan, and many full apps), it uses Moose for its objects (giving you access to 100+ extensions that can cleanly fine-tune how your objects work, and a similarly huge community for support), and it integrates with pretty much any Perl web interface (FCGI, Plack, etc.) perfectly. (There are even two full books about Catalyst. But don't read the first one, I hate the author...) I have written everything from raw PSGI apps to rolling my own web framework to hacking on other peoples' web frameworks (most recently, Tatsumaki). But every time my toy app becomes something I actually want to use in the real world, I turn to Catalyst. The backcompat is "ugly", but it's easy to do everything you'll ever need to do, and the defaults are reasonable. You can write messy code, you can write super-clean code, and everything in the middle. What won't happen is you getting stuck with some aspect of the framework. "It does that." Small web frameworks are appealing because when you are reading someone's blog, you think, "yeah, that's about all I ever need to do". Unfortunately, it's the "about" that's going to kill your project. Take some time to learn the whole system and it will reward you for years to come.
- adrianhoward 16y agoCatalyst == larger community + more documentation + lots of useful modules out there. The downside is that it takes a heck of a lot of effort to get up to speed and I personally find that it can get in the way a little for smaller projects. Frameworks like Mojolicious, Jifty (http://jifty.org/ http://jifty.org/) and Dancer (http://perldancer.org http://perldancer.org) are much quicker to get up to speed on, but suffer slightly from having a smaller community of users and developers. I've been playing with non-Catalyst frameworks a bit recently as I've been pondering a little bit of product development on an in-house project. Of the non-Catalyst Perl web frameworks Dancer is my favourite http://perldancer.org/ http://perldancer.org/. For my money it's a neater package than Mojolicious, which takes the no-dependency thing a little bit too far for me. Dancer's non-OO DSL declarative style seems to work quite well (it's very heavily inspired by Ruby's Sinatra). I'm going to give Dancer / Plack a whirl as the basis for a non-trivial app soon. I think it'll work quite well from my experiences so far. (BTW - if you've not started playing with Plack in Perl - do so. Veeeeery nice.) As to what you should learn - who knows :-) If it were me I'd spend at least a few hours playing with Dancer/Mojolicious/Jifty first - since any of them will have you up and running with a demo in a few minutes. Catalyst will take more work.
- thomas11 16y agoAnother vote for Dancer from me. You can start with a tiny one-file script and then slowly use sessions, templates, Plack middleware etc. as you need it. It's very elegant.
- kraih 16y agoThere is nothing Dancer does that Mojolicious can't do better, and then some.
- thomas11 16y agoI didn't mean to attack Mojolicious at all. I've never played with it, but it seems very cool. I have used Dancer, and liked it very much, that's all I wanted to say. It's great that you promote your framework, but it doesn't mean that similar frameworks can't be good.
- iloveponies 16y agoPerhaps the simplest explanation is this: Catalyst is suitable for big, complex things. Mojolicious is better for smaller things. Just as Rails is for big things, Sinatra for smaller things. Or Django is for big things, and web.py is for smaller things. They are two different frameworks, to serve different requirements to some extent.
- kraih 16y agoYou can't really compare Catalyst with Rails and Django since it has always been model layer agnostic like Sinatra and web.py.
- tempire 16y agoSpend a week on Mojolicious. Poke around. Ask some questions in the IRC channel. Then do the same with Catalyst. The experience you have will make up your mind for you - I'd be surprised if you're not sold on Mojolicious after only a day or two.
- vti 16y agoMojolicious is on the edge of technology with async behavior and WebSockets.