- 浏览: 16740 次
最新评论
[Perl] Catalyst 框架学习
2011年03月20日
转载本站文章请注明,转载自:扶凯[http://www.php-oa.com] 本文链接: http://www.php-oa.com/2010/05/18/perl-catalyst.html Catalyst 是一个 web 应用程序开发框架,灵活而简洁,如果对 perl 有一定的基础,上手很快。他的同类产品有 Ruby on Rail,Sprint(Java) 和 Maypole,Django(Python)。
Catalyst 遵从 MVC 的设计模式,MVC 分别指 Model,View,Controller。三者相对独立又密切联系。
• Model 主要是用来处理内容或者说数据,一般采用 Catalyst::Model::CDBI DBIx::Class::Schema 之类访问数据库,这个还包括各种用户验证方法。
• View 是其表现形式,将内容按照模版渲染之后发送给浏览器,可以采用 Template::Toolkit,Mason,HTML::Template等。
• Controller 处理浏览器的请求和各种参数,并将其分发到各种行为。
Model
在开发的过程中,Model 部分基本不需要编写什么代码,CPAN 上丰富的模块资源已经可以很好的满足需求,而且也更加健壮和完善,只要直接采用 Catalyst 的 Help Script 创建相应模块就可以了。在这个系统中可以使用如 Catalyst::Model::CDBI 之类,可以将数据库中的表映射成类,这样只需对类进行操作,只要会一点 sql 语法就能很好的使用这个了,都不用自己来写 Sql 语,对象会自动更新和修改数据库,其实它内部还是转换成了 sql 的语句。
DBIx::Class::Manual 的使用介绍
http://search.cpan.org/~frew/DBIx-Class-0.08121/lib/DBIx/Class/Manual.pod
View
View 部分也和 Model 一样,不用自己写很多,只要写一下页面模版,默认建议使用 Template Toolkit ,TT 的语法相当的有意思 ,耐心的看我提供的链接中几个例子就可以运用自如了。系统将用于全局共享的上下文对象$c传给 TT 的模版,通过 c.req.name 之类的语法就可以引用相应的变量,同时 $c->stash 中的变量可以直接引用,这部分里,TT的语法还是相当的容易的, c.req.name 实际上对应于$c->req->{name},大部分时间我是这样用的,用 Perl 生成一个合理的数据结构的引用,然后使用 Template Toolkit 来做数据的解引用。并显示出来,这样非常方便, Template Toolkit 提供的一些内部的虚函数相当好用,可以看。
Template Toolkit 的基本语法
http://search.cpan.org/~abw/Template-Toolkit-2.22/lib/Template/Manual/Syntax.pod
Template Toolkit 的虚函数:
http://search.cpan.org/~abw/Template-Toolkit-2.22/lib/Template/Manual/VMethods.pod
Controller
这部分是 Catalyst 中对各种请求的分发和处理,Catalyst 的各个行为分别匹配特定的请求。行为的属性分为 Global,Local, Path,Private,RegExp 等几类。此外,Catalyst有几个保留的行为,begin,auto,default,end。系统接到一个请求后,将按下面的顺序执行,begin->auto->{action or default}->end。auto 和 begin 的区别在于本地的 begin 会重载上层的 begin,而 auto 则是本地和上层的都会执行。一般情况下都是在end里采用$c->res->forward(TShirt::V::TT),forward会传递整个请求的参数和上下文。
Controller 是连接 Model 和 View 的,也是基本只要写这个部分的 Perl 代码就行了。其它象上面讲的,很少自己写了。建议多使用 Perl CPAN 上的模块。因为虽然自己实现起来并不困难,但是使用现成的模块无疑让程序更加的优美和直观。自己写的部分代码看上去实在是比较丑陋,尽管功能是实现了。
Catalyst 需要的环境(怎么样安装)cpanm Catalystcpanm Catalyst::Develcpanm DBIx::Classcpanm Catalyst::Model::DBIC::Schemacpanm Catalyst::View::TT #Template Toolkit v2.20
注: cpanm的使用,见我这个文章,推荐使用这个来安装模块: http://www.php-oa.com/2010/05/05/perl-cpanminus-cpan.html
Catalyst 常用的插件列表
Catalyst::Plugin::AuthenticationCatalyst::Plugin::Authorization::RolesCatalyst::Plugin::ConfigLoaderCatalyst::Plugin::Session Catalyst::Plugin::Session::State::Cookie Catalyst::Plugin::Session::Store::FastMmap Catalyst::Plugin::StackTrace Catalyst::Plugin::Static::Simple
Catalyst 学习中一些小技巧
(1 在 shell 中设置这个环境变量,可以显示 sql 的细节内容。方便调试
DBIC_TRACE=1
如果你对所写的 ->search 不太确定,你可以使用 ->as_query 来 debug
(2 在建完数据库对象模型 schema 后,我们常常需要用下面这个语句来和 Catalyst 关联起来
script/myapp_create.pl model MyAppDB DBIC::Schema MyAppDB dbi:SQLite:myapp.db '{ AutoCommit => 1 }'
其中第一个 MyAppDB 是辅助脚本将要在lib/MyApp/Model目录下创建的类的名字. 第二个 MyAppDB 是我们已经创建的数据库对象模型 schema 文件的名字(lib/MyAppDB.pm).
后面的 dbi 如果使用的是 mysql 的话,就用 dbi:mysql:数据库名:localhost 来设置,后面的 是指用户名和密码.以上设置了以后,在 Catalyst 才能调用.
(3 想不用默认的数组对数据结构的输出,使用 hash 来输出容易的话可以使用
use DBIx::Class::ResultClass::HashRefInflator. my $rs = $schema->resultset('CD'); $rs->result_class('DBIx::Class::ResultClass::HashRefInflator'); my $hash_ref = $rs->find(1);
Catalyst FQA.1.Couldn’t render template "file error
发表评论
-
centOS5.5 上的FMS3.5.1
2012-01-20 10:32 627centOS5.5 上的FMS3.5.1 2010 ... -
JAVA+fms
2012-01-20 10:32 1004JAVA+fms 2010年07月29日 最近完成的 J ... -
Flex 4架构的组件开发
2012-01-20 10:32 660Flex 4架构的组件开发 2010年11月19日 Fl ... -
Flex mobile入门
2012-01-20 10:32 910Flex mobile入门 2010年12月 ... -
as3总结(2)
2012-01-20 10:32 563as3总结(2) 2011年04月13日 1、在as3中 ... -
手机程序管理常见不规范的软件名称列表
2012-01-19 15:35 551手机程序管理常见不规范的软件名称列表 2011年10月11日 ... -
cacti
2012-01-19 15:35 679cacti 2011年09月14日 cacti 环境 ... -
Debain +Vmware的开发环境架设
2012-01-19 15:35 991Debain +Vmware的开发环境架设 2011年01月 ... -
Redflag SP3 介绍
2012-01-19 15:34 1072Redflag SP3 介绍 2010年07月05日 ... -
一万个对不起是我白痴的证明。
2012-01-17 05:19 656一万个对不起是我白痴的证明。 8小时前 - 你们有没有想 ... -
[转]兰花拂穴手
2012-01-17 05:19 1065[转]兰花拂穴手 8小时前 李三恭恭敬敬给贾八卦捧上 ... -
经典摘要(三)
2012-01-17 05:19 721经典摘要(三) 8小时前 ... -
2012-1-16
2012-01-17 05:19 9082012-1-16 8小时前 曹英峰秘传少林易筋经十二 ... -
win7正版微软给你
2012-01-16 04:16 1741win7正版微软给你 2010年02月27日 最新Win ... -
[转]Win 2008 R2安装激活、设置优化、可用杀毒软件、常用软件安装顺序与注意事项(三)
2012-01-16 04:15 1274[转]Win 2008 R2安装激活、设置优化、可用杀毒软件、 ... -
世界上所有的软件全集
2012-01-16 04:15 660世界上所有的软件全集 2009年10月29日 《经典的 ... -
成功破解第一个软件
2012-01-16 04:15 1350成功破解第一个软件 20 ... -
世界上所有的软件全集(45000多种,超强)[一]
2012-01-16 04:15 630世界上所有的软件全集(45000多种,超强)[一] 2010 ...
相关推荐
perl catalyst translated by 小生菜菜 博文链接:https://kotime42.iteye.com/blog/147360
perl catalyst教程 catalyst是类似于ruby on rails一类的web架构框架,它使用插件的方式使得架构网站,添加功能等工作异常简单
perl catalyst mvc framwork教程,以前发过一个07年的,略显过时,本教程是最新09版,面向catalyst5.8系列
Catalyst是一套用来web开发的框架,基于Catalyst开发的web系统,具有比较强的可扩展性.
一本介绍如何玩PERL MVC的书,入门而深入,值得学习。
Catalyst 5.8- the Perl MVC Framework
10.3【视频讲解】catalyst框架的使用.mp4
10.4【课件速览】catalyst框架的使用.pdf
10.1【视频讲解】策略回测及catalyst框架介绍.mp4
10.2【课件速览】策略回测及catalyst框架介绍.pdf
cutelyst:使用Qatalyst(Perl)框架的简单方法在Qt之上构建的C ++ Web框架
Catalyst.5.8.the.Perl.MVC.Framework
使用perl进行web开发,传统的做法是写*.cgi文件,然后把这些cgi文件配到web server里面,当web server收到客户端的request时,就调用...Catalyst是一套用来web开发的框架,基于Catalyst开发的web系统,具有比较强的可扩展性.
He's contributed to Perl's current release structure, as well as Moose, Catalyst, Mojolicious, and p5p. He first released Modern Perl to the community in 2010. A Perl expert can solve a problem in a...
Switches - Catalyst 2960 Switches - Catalyst 2960 Switches - Catalyst 2960
Perl催化剂出现日历-2013 今年又是的时间了! 怎么写文章? Catalyst降临日历正在使用格式。 对于每月的每一天, root目录中都有一个对应的pod文件。 如果您不习惯使用POD格式撰写文章,请不要担心。 在此存储库的...
Adobe Flash Catalyst CS5 简介 1. Catalyst 是一个专业的交互设计工具; 2.可将psd文件和ai文件直接导入使用; 3.无需写代码,但实现的交互相对简单; 4.生成的fxp工程文件可导入Flex中使用。 Adobe® Flash® ...
Databricks高级软件工程师Michael Armbrust,在此次峰会上就什么是查询优化、简捷的查询规划、优化执行、优先工作、Catalyst做了详细介绍,总之Catalyst是一个关系运算符的优化树架构。