mason

16
HTML::Mason 使使 Mason 使使使使使 Web 使使使使使 Yujie / Maxthon

Upload: yujie-jiang

Post on 22-Jan-2015

1.309 views

Category:

Technology


7 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Mason

HTML::Mason

使用Mason进行高性能Web站点的开发

Yujie / Maxthon

Page 2: Mason

目录

1/ 四个网站2/ Mason的定义3/ 为什么选择Mason4/ 了解Mason5/ 网站演示6/ 从哪儿开始

本演讲的目的不是深入探讨Mason的原理和运作机制 ,而是展示什么是Mason, 它有什么特点 , 能够实现什么样的功能 .

Page 3: Mason

1/ 四个网站

Page 4: Mason

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开发解决方案…

Page 5: Mason

3/ 为什么选择Mason

书写方便、开发快速直接在HTML页面里书写Perl代码 , VS Template::Toolkit

可重用组件

组件的概念 , 只需更改一次 , 关注不同的地方

统一的参数处理

Post和Get方式

内建缓存机制

强大的文本过滤

高性能与mod_perl紧密结合 : Apache内置Perl解释器、代码缓冲

Mason自身的机制 : 代码缓存、对象文件…

Page 6: 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配置

Page 7: Mason

<%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嵌入

Page 8: Mason

<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

Page 9: Mason

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 标签

Page 10: Mason

autohandler

逻辑处理

用户认证

数据封装

输出过滤

视图处理

$m->call_next

header

footer

4/ 了解Mason autohandler

输出请求

<& footer &>

index.html

example.html

Page 11: Mason

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 &>

Page 12: Mason

4/ 了解Mason dhandler

返回 404

404请求

dhandler

return 404 分发请求

逻辑处理

输出生成

数据获取

url跳转 输出

Page 13: Mason

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

Page 14: Mason

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);

Page 15: Mason

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

Page 16: Mason

6/ 从哪儿开始

Mason BookEmbedding Perl in HTML with Mason

www.masonbook.com

www.masonhq.com

maillist