首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(0) | 引用(0) | 阅读2167次
perl3编程模板技术

本来以为PHP的模板技 www.shengfang.org 术说明很多,PERL的应该也不少,结果是寥寥无几。
看到一些说明总结 www.shengfang.org
Perl中的模板系统很多,而且在perl中设计简单的Template也不是什么难事,我 bloves 等等都设计国自己的template。  www.shengfang.org
要是想用简单的,我推荐用我们的吧,我的那个还支持CGI文件缓存呢(打广告)。

不过话说回来了,不论是Perl的Template技术还是常用的这些P结尾的技术,还都无法于Mason相提并论。

如果需要参考,那么请到www.ilcatperl.org中下载EasyTemplate   www.shengfang.org
如果你仅需要使用模板技术而不是想去了解它,那么推荐你可以使用Perl语言的众多模块HTML::Template,TemplateToolkit等. 

Dtamplate由GPL获得许可并由BalázsSzabó维护,它由C扩展的Perl语言来编写,可以从CPAN主页中下载。
dTemplate is licensed under the GPL and is maintained by Bal醶s Szab? It is written in Perl with a C extension and can be downloaded from CPAN. http://search.cpan.org/~dlux/dTemplate-2.4/

下载了:CGI-FastTemplate Text-FastTemplate
demo: www.shengfang.org
  <!-- NAME: row.tpl -->
  <tr>
  <td>$NUMBER</td>
  <td>$BIG_NUMBER</td>
  </tr>
  <!-- END: row.tpl -->

  <!-- NAME: main.tpl -->
  <html> www.shengfang.org
  <head><title>$TITLE</title>
  </head>
  <body>
  $MAIN www.shengfang.org
  </body>
  </html>
  <!-- END: main.tpl -->

  <!-- NAME: table.tpl -->
  <table>
  $ROWS www.shengfang.org
  </table>
  <!-- END: table.tpl -->

  #!O:/php/perl/bin/Perl.exe
print "Content-type: text/plain; charset=gb2312\n\n";
use CGI::FastTemplate;
my $tpl = new CGI::FastTemplate("./tpl");
$tpl->define(     main    => "main.tpl",
                    table   => "table.tpl",
                    row     => "row.tpl",
                    );
  $tpl->assign(TITLE => "FastTemplate Test");
  for $n (1..3)
  { www.shengfang.org
        $tpl->assign(   NUMBER      => $n,
        BIG_NUMBER   => $n*10);
        $tpl->parse(ROWS   => ".row");
  }
  $tpl->parse(MAIN => ["table", "main"]);
  $tpl->print();
  $tpl->clear_all();
  ## END ##

  1 10
2 20
3 30  www.shengfang.org

引用
cyril Why Do We Need Templates? http://web.cyril.idv.tw/aps/ApsApsshowArticle.php?SystemId=1&CategoryId=1&Order=1
當我們使用Perl或是Python這類的語言來作Web Application時,有什麼更好的方式嗎?答案是有的,也就是所謂的Template.簡單的說,Template就是一個網頁的範本,上面有想要呈現的網頁風格.但是對於實際要呈現的資料,則由程式語言來動態決定,決定好之後將網頁範本與資料結合,就成了最後輸出的網頁.在Perl的世界中,有一個很流行的Module,就是CGI-FastTemplate.以此一Module來實現一開始的例子,我們需要兩個檔案,一個是網頁的Template檔案(helloworld2.tpl),另一個則是執行的程式(helloworld2.pl).

檔案:helloworld2.tpl
<html>
<head>
<title>Perl Demo2</title>
</head>
<body>
<h1>Perl Hello World Demo2</h1>
$STRING<br>
</body>
</html>
 
檔案:helloworld2.pl
#!/usr/bin/perl -T -w

use CGI::FastTemplate;
my $tpl = new CGI::FastTemplate;
$tpl->define(message=>'helloworld2.tpl');
$tpl->assign(STRING=>'hello world!');
$tpl->parse(MAIN=>'message');
print "Content-type:text/html \n\n";
$tpl->print();
 
我將這種產生頁面的方式,稱之為On-line Template parsing,也就是每次讀取網頁就重新執行Template的置換動作,並將結果直接送給客戶端的程式(通常就是瀏覽器).除此之外,還有另外一種就是Off-line Template parsing.此一方式會先將Template的置換結果儲存下來,這樣後續的網頁讀取就可以直接利用先前已經儲存的結果,以增加網站的反應速度.雖說Template的設計方式,在執行速度上可能會比不用Template來的慢些,不過這種設計方式所獲得的好處,絕對遠大於這些速度的犧牲.而對於真正要求執行速度的系統,應該盡量以Off-line的方式來產生頁面.在這種情況下,使用Template所造成的速度減緩就不再是問題了.

當然了,Template不只是對非內嵌式的語言才有好處,對於像是PHP這類的內嵌式語言也有相當的好處.在程式設計中,一個很重要的觀念就是,要將data management,business logic,以及presentation分開.而Template的做法,正是將presentation跟business logic分離.這樣子的設計,可以讓一個複雜的系統變得更加容易實作,也更加容易維護以及修改.除此之外,這種設計還可以增加開發系統的速度.因為當你將business logic跟presentation分開之後,程式設計師就可以跟網頁設計師同時進行開發與修改的動作,而不至於互相影響而耽誤了對方的進度.當然了,從原始的HTML檔案變成Template檔案之間,還是會有雙方交集而影響的存在,不過這樣的方式已經將原先相互影響的時間減到最低了.所以即使是以PHP這種內嵌式的語言,還是建議使用Template的方式來架構網站.在這個簡單的例子裡,很難看出Template的好處,但是當你的網站規模越來越大,功能越來越多的時候,你會感謝有Template技術的存在.

可惜的是,這只是理想中的情況.在現實中,business logic跟presentation卻不是可以完全分離的.舉例來說,如果要動態產生一個不固定行數的表格,通常需要利用迴圈來達成這樣的效果.一種做法就是將表格的標籤經由程式裡的迴圈來產生,另一種做法就是在Template檔案裡利用特殊的標籤來達到迴圈的效果.而在後者中,Template的功能已經不只是單純的變數取代,而是包含了簡單的控制標籤.也因此又有了所謂的Template Language的出現.不管是哪一種做法,都說明了想要將business logic跟presentation完全分離,至少在Web Application上,目前還是沒有完美的解決方式.
 



字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/perl3template.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1126600272

2005年9月13日16:31星期二  [Dev开发] 追踪此文的RSS
提示:
此文还没有评论。

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告





统计信息
[Yippee]||[统计]||日志:2143
在线: 12||用户: 2635 [列表]
今日:776||到访:3654561
Rss:||评论:1668

最新日志

最新评论

友情链接

日历
342009 - 0734
   1234
567891011
12131415161718
19202122232425
262728293031 

最新引用
搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8