Mason

1,667 views
1,491 views

Published on

Published in: Technology
1 Comment
1 Like
Statistics
Notes
  • 不错, 这个文档很用心, 可惜少了些说明.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
1,667
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
16
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Mason

  1. 1. HTML::Mason<br />使用Mason进行高性能Web站点的开发<br />Yujie / Maxthon<br />
  2. 2. 目录<br />1/ 四个网站<br />2/ Mason的定义<br />3/ 为什么选择Mason<br />4/ 了解Mason<br />5/ 网站演示<br />6/ 从哪儿开始<br />本演讲的目的不是深入探讨Mason的原理和运作机制,<br />而是展示什么是Mason, 它有什么特点, 能够实现什么样的功能.<br />
  3. 3. 1/ 四个网站<br />
  4. 4. 2/ Mason的定义<br />Perl模块High-Performance, dyamic web site authoring system. -- CPAN<br />模板工具<br /> 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<br />Web站点开发引擎<br /> 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<br />Web框架/Perl Web开发解决方案…<br />
  5. 5. 3/ 为什么选择Mason<br />书写方便、开发快速直接在HTML页面里书写Perl代码, VS Template::Toolkit<br />可重用组件<br />组件的概念, 只需更改一次, 关注不同的地方<br />统一的参数处理<br /> Post和Get方式<br />内建缓存机制<br />强大的文本过滤<br />高性能与mod_perl紧密结合: Apache内置Perl解释器、代码缓冲<br /> Mason自身的机制: 代码缓存、对象文件…<br />
  6. 6. 4/ 了解Mason<br />Apache配置<br />&lt;VirtualHost www.yujie.com&gt;<br /> DocumentRoot &quot;/var/www/www.yujie.com&quot;<br /> PerlRequire &quot;/var/www/www.yujie.com/startup.pl&quot;<br /> PerlSetVar MasonCompRoot &quot;/var/www/www.yujie.com&quot;<br />PerlSetVarMasonDataDir &quot;/var/www/www.yujie.com/data&quot;<br />PerlSetVarMasonAllowGlobals $User<br />&lt;Directory &quot;/var/www/www.yujie.com&quot;&gt;<br /> SetHandler perl-script<br /> PerlHandler HTML::Mason::ApacheHandler<br />&lt;/Directory&gt;<br />&lt;LocationMatch &quot;(.gif|.jpg|.png|.ico|.css|.js|.swf)$&quot;&gt;<br />SetHandler default<br />&lt;/LocationMatch&gt;<br />&lt;/VirtualHost&gt;<br />
  7. 7. 4/ 了解Mason<br />Perl嵌入<br />Perl代码嵌入HTML页面的三种方式<br />&lt;%perl&gt;<br /> my $planet;<br />&lt;/%perl&gt;<br />% $planet = “World”; <br />Hello, &lt;% $planet %&gt;!<br />&lt;div style=“display: &lt;% $display ? ‘block’ : ‘none’ %&gt;” &gt;<br /> &lt;input type=“text” value=“&lt;% $ARGS{account} || $User-&gt;{account} %&gt;” name=“account” /&gt;<br />&lt;/div&gt;<br />
  8. 8. 4/ 了解Mason<br />%ARGS<br />send.html<br />&lt;form action=&quot;example.html?user=Yujie&quot; method=&quot;post&quot;&gt;<br /> &lt;input type=&quot;text&quot; value=&quot;Today is Saturday.&quot; name=&quot;word&quot; /&gt;&lt;br /&gt;<br /> &lt;input type=&quot;submit&quot; value=&quot;submit&quot; /&gt;<br />&lt;/form&gt;<br />example.html<br />&lt;% $ARGS{user} %&gt;:&lt;% $ARGS{word} %&gt;<br />
  9. 9. 4/ 了解Mason<br />标签<br />Perl标签: 嵌入HTML页面的一段Perl代码<br />Init标签: 初始化Perl块, 在HTML页面之前执行<br />Attr标签: 声明组件的属性<br />Flags标签: 标志标签, 可用于声明组件继承关系<br />Args标签: 参数标签, 用于声明页面所需参数<br />Once标签: 一次性加载<br />Docs标签: 文档标签<br />Filter标签: 过滤标签<br />Mason is a powerful Perl-based web site development and delivery engine.<br />&lt;%filter&gt;<br /> s/(w+)/U$1/g<br /># s/href=&quot;([^&quot;])+&quot;/add_session_id($1)/eg; <br /># s/action=&quot;([^&quot;])+&quot;/add_session_id($1)/eg;<br />&lt;/%filter&gt;<br />
  10. 10. 4/ 了解Mason<br />autohandler<br />autohandler<br />逻辑处理<br />视图处理<br />请求<br />数据封装<br />header<br />输出<br />用户认证<br />$m-&gt;call_next<br />输出过滤<br />footer<br />&lt;& footer &&gt;<br />index.html<br />example.html<br />…<br />
  11. 11. 4/ 了解Mason<br />autohandler<br /><ul><li> autohandler</li></ul>&lt;%perl&gt;<br /> print “Hello&quot;;<br /> $m-&gt;call_next;<br />&lt;/%perl&gt;<br />example.html<br />% print “ friends!“;<br /><ul><li> autohandler</li></ul>&lt;& template/header.mas &&gt;<br />&lt;& template/sidebar.mas &&gt;<br />% $m-&gt;call_next;<br />&lt;& template/footer.mas &&gt;<br />
  12. 12. 4/ 了解Mason<br />dhandler<br />dhandler<br />return 404<br />分发请求<br />逻辑处理<br />404请求<br />数据获取<br />输出生成<br />返回404<br />url跳转<br />输出<br />
  13. 13. 4/ 了解Mason<br />dhandler<br />dhandler<br />my $request_uri = $m-&gt;dhandler_arg;<br />if($request_uri =~ m#old/(.*?)$#) {<br /> $m-&gt;redirect(“/new/$1”);<br />}<br />0_23.png<br />获得请求地址<br />类型:0 userid:23<br />获得参数<br />用户性别、昵称等<br />取得用户数据<br />生成图片<br />GD、Imagemagick<br />
  14. 14. 4/ 了解Mason<br />实践<br />数据库操作从DBI到Rose, 从SQL到ORM<br />模块<br />提高重用性, 提高性能<br />Tools.pm<br />package Tools;<br />sub trim {<br /> # code here <br />} <br />startup.pl<br />use lib “/var/www/www.yujie.com/_modules”;<br />use Tools;<br />example.html<br />% print Tools::trim($data);<br />
  15. 15. 5/ 网站演示<br />常用模块<br /> Apache2::Cookie <br /> Apache2::Upload <br /> Apache::DBI<br /> GD<br /> GD::SecurityImage<br /> URI::Escape<br /> LWP::UserAgent<br /> JSON<br /> DateTime<br /> Cache::Memcached<br /> Encode <br /> Net::SMTP <br /> Mail::Sender<br />Digest::SHA<br /> Crypt::DES<br /> Rose<br />
  16. 16. 6/ 从哪儿开始<br />Mason BookEmbedding Perl in HTML with Mason<br /> www.masonbook.com<br />www.masonhq.com<br /> maillist<br />

×