Mais conteúdo relacionado Mason2. 目录 1/ 四个网站 2/ Mason的定义 3/ 为什么选择Mason 4/ 了解Mason 5/ 网站演示 6/ 从哪儿开始 本演讲的目的不是深入探讨Mason的原理和运作机制, 而是展示什么是Mason, 它有什么特点, 能够实现什么样的功能. 4. 2/ Mason的定义 Perl模块High-Performance, dyamic web site authoring system. -- CPAN 模板工具 Mason is a powerful text templating tool for embedding Perl in text. It offers many features to help you create dynamic web sites from re-usable components. -- Mason Book Web站点开发引擎 Mason is a powerful Perl-based web site development engine. With Mason you can embed Perl code in your HTML and construct pages from shared, reusable components. -- www.masonhq.com Web框架/Perl Web开发解决方案… 6. 4/ 了解Mason Apache配置 <VirtualHost www.yujie.com> DocumentRoot "/var/www/www.yujie.com" PerlRequire "/var/www/www.yujie.com/startup.pl" PerlSetVar MasonCompRoot "/var/www/www.yujie.com" PerlSetVarMasonDataDir "/var/www/www.yujie.com/data" PerlSetVarMasonAllowGlobals $User <Directory "/var/www/www.yujie.com"> SetHandler perl-script PerlHandler HTML::Mason::ApacheHandler </Directory> <LocationMatch "(gif|jpg|png|ico|css|js|swf)$"> SetHandler default </LocationMatch> </VirtualHost> 7. 4/ 了解Mason Perl嵌入 Perl代码嵌入HTML页面的三种方式 <%perl> my $planet; </%perl> % $planet = “World”; Hello, <% $planet %>! <div style=“display: <% $display ? ‘block’ : ‘none’ %>” > <input type=“text” value=“<% $ARGS{account} || $User->{account} %>” name=“account” /> </div> 8. 4/ 了解Mason %ARGS send.html <form action="example.html?user=Yujie" method="post"> <input type="text" value="Today is Saturday." name="word" /><br /> <input type="submit" value="submit" /> </form> example.html <% $ARGS{user} %>:<% $ARGS{word} %> 9. 4/ 了解Mason 标签 Perl标签: 嵌入HTML页面的一段Perl代码 Init标签: 初始化Perl块, 在HTML页面之前执行 Attr标签: 声明组件的属性 Flags标签: 标志标签, 可用于声明组件继承关系 Args标签: 参数标签, 用于声明页面所需参数 Once标签: 一次性加载 Docs标签: 文档标签 Filter标签: 过滤标签 Mason is a powerful Perl-based web site development and delivery engine. <%filter> s/(+)/$1/g # s/href="([^"])+"/add_session_id($1)/eg; # s/action="([^"])+"/add_session_id($1)/eg; </%filter> 10. 4/ 了解Mason autohandler autohandler 逻辑处理 视图处理 请求 数据封装 header 输出 用户认证 $m->call_next 输出过滤 footer <& footer &> index.html example.html … 13. 4/ 了解Mason dhandler dhandler my $request_uri = $m->dhandler_arg; if($request_uri =~ m#old/(.*?)$#) { $m->redirect(“/new/$1”); } 0_23.png 获得请求地址 类型:0 userid:23 获得参数 用户性别、昵称等 取得用户数据 生成图片 GD、Imagemagick 14. 4/ 了解Mason 实践 数据库操作从DBI到Rose, 从SQL到ORM 模块 提高重用性, 提高性能 Tools.pm package Tools; sub trim { # code here } startup.pl use lib “/var/www/www.yujie.com/_modules”; use Tools; example.html % print Tools::trim($data); 15. 5/ 网站演示 常用模块 Apache2::Cookie Apache2::Upload Apache::DBI GD GD::SecurityImage URI::Escape LWP::UserAgent JSON DateTime Cache::Memcached Encode Net::SMTP Mail::Sender Digest::SHA Crypt::DES Rose 16. 6/ 从哪儿开始 Mason BookEmbedding Perl in HTML with Mason www.masonbook.com www.masonhq.com maillist