mason
DESCRIPTION
TRANSCRIPT
HTML::Mason
使用Mason进行高性能Web站点的开发
Yujie / Maxthon
目录
1/ 四个网站2/ Mason的定义3/ 为什么选择Mason4/ 了解Mason5/ 网站演示6/ 从哪儿开始
本演讲的目的不是深入探讨Mason的原理和运作机制 ,而是展示什么是Mason, 它有什么特点 , 能够实现什么样的功能 .
1/ 四个网站
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开发解决方案…
3/ 为什么选择Mason
书写方便、开发快速直接在HTML页面里书写Perl代码 , VS Template::Toolkit
可重用组件
组件的概念 , 只需更改一次 , 关注不同的地方
统一的参数处理
Post和Get方式
内建缓存机制
强大的文本过滤
高性能与mod_perl紧密结合 : Apache内置Perl解释器、代码缓冲
Mason自身的机制 : 代码缓存、对象文件…
4/ 了解Mason
<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"PerlSetVar MasonDataDir "/var/www/www.yujie.com/data"PerlSetVar MasonAllowGlobals $User
<Directory "/var/www/www.yujie.com">SetHandler perl-scriptPerlHandler HTML::Mason::ApacheHandler
</Directory><LocationMatch "(\.gif|\.jpg|\.png|\.ico|\.css|\.js|\.swf)$">
SetHandler default</LocationMatch></VirtualHost>
Apache配置
<%perl> my $planet;</%perl>
% $planet = “World”; Hello, <% $planet %>!
Perl代码嵌入 HTML页面的三种方式
<div style=“display: <% $display ? ‘block’ : ‘none’ %>” > <input type=“text” value=“<% $ARGS{account} || $User->{account} %>” name=“account” /></div>
4/ 了解Mason Perl嵌入
<form action="example.html?user=Yujie" method="post"> <input type="text" value="Today is Saturday." name="word" /><br /> <input type="submit" value="submit" /></form>
send.html
<% $ARGS{user} %>:<% $ARGS{word} %>
4/ 了解Mason %ARGS
example.html
Once标签 : 一次性加载
Attr标签 : 声明组件的属性
Flags标签 : 标志标签 , 可用于声明组件继承关系
Args标签 : 参数标签 , 用于声明页面所需参数
Init标签 : 初始化 Perl块 , 在 HTML页面之前执行
Perl标签 : 嵌入 HTML页面的一段 Perl代码
Docs标签 : 文档标签
Filter标签 : 过滤标签Mason is a powerful Perl-based web site development and delivery engine.
<%filter> s/(\w+)/\U$1/g# s/href="([^"])+"/add_session_id($1)/eg; # s/action="([^"])+"/add_session_id($1)/eg;</%filter>
4/ 了解Mason 标签
autohandler
逻辑处理
用户认证
数据封装
输出过滤
视图处理
$m->call_next
header
footer
4/ 了解Mason autohandler
输出请求
<& footer &>
index.html
example.html
…
4/ 了解Mason autohandler
autohandler
<%perl> print “Hello"; $m->call_next;</%perl>
example.html
% print “ friends!“;
autohandler
<& template/header.mas &><& template/sidebar.mas &>% $m->call_next;<& template/footer.mas &>
4/ 了解Mason dhandler
返回 404
404请求
dhandler
return 404 分发请求
逻辑处理
输出生成
数据获取
url跳转 输出
4/ 了解Mason dhandler
dhandlermy $request_uri = $m->dhandler_arg;if($request_uri =~ m#old/(.*?)$#) { $m->redirect(“/new/$1”);}
获得请求地址 0_23.png
获得参数 类型 :0 userid:23
取得用户数据 用户性别、昵称等
生成图片 GD、 Imagemagick
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);
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
6/ 从哪儿开始
Mason BookEmbedding Perl in HTML with Mason
www.masonbook.com
www.masonhq.com
maillist