Mojo小试

Mojo framework 是一个新的Perl web framework。
其作者是原Catalyst的开发者之一。 最近在作一个救火的小case中试用了一下,试用中的体会:

1. 如作者所写,这是一个Full stack HTTP 1.1 client/server implementation. 因此安装和部署非常清爽,
所依赖的CPAN module很少。

2. 代码很精简,看起来不费劲

3. Mojolicious 这个类似RoR的MVC framework 用起来也比较容易。

4. 缺点: 文档很贫乏,实例很少,不把源码都看一遍很难下手。

5. Mojo几个主要Package:
Mojo是底层支持库,封装实现了Base,HTTP Server,Request,Repsonse等底层类,实际上Mojo本身是用于二次开发framework,比如其Mojo::Base就实现了一个更快速的OO系统, 可以实现accessor,风格类似Ruby的语法.

MojoX
Mojo的扩展包,主要是针对类似Mojolicious这种MVC的场景封装了一些常用类,比如Context容器,Dispatcher机制基础实现,Routes,Render系统等。

Mojolicious
在MojoX基础上构建的RubyOnRails,当然肯定是精简版了(没有Model实现)。
目前功能还比较简单,不过已经有一个app生成器,生成application模版。

6. 开发提示:

- 在lib/App_name.pm (App_name.pm是生成的application类) startup方法用于启动server的时候进行初始化,因此对于一次性的工作可以在这里执行,比如routes设定,config的读取,database handler的创建等。
- 通过扩展Mojolicious::Context 可以在你的context中加入其他的属性
- Controller的每个method都可以self,context, 不过,在0.9以后,context可以从self->ctx来获得,因此,每个method只需要一个获得invocant就可以了。
- 前端页面传递的参数通过$self->req->param,params来获得,upload(name),uploads则返回文件上传对象信息(Mojo::Upload)

- 可以从CPAN下载JSON和TT的render
- 如果希望Mojo以独立服务器运行,可以尝试AnyEvent::Mojo,如果和Nginx配合,则使用内置的FastCGI Server即可。

总体来说,Mojo和CGI::Application 和Catalyst不是一个起跑线, 但是其前途似乎不错,值得跟踪。

Comments

2 Responses to “Mojo小试”

  1. smallfish on January 16th, 2009 1:56 pm

    文档确实真少,就那么点点。
    学习起来费劲

  2. Qiang on February 3rd, 2009 3:32 pm

    什么时候来北京 Perl 用户组聚会上共享一下?时间长短不限 :)
    这个月的聚会是12号 http://wiki.perlchina.org/BJPW-20090212

Leave a Reply