user-pic

[討論]leobbs與Template

Vote 0 Votes

leobbs與Template

簡言:
  leobbs 開發已了多年,使用者眾,相對美化版本亦相對增多,奈何因官方程序中沒有通用的Template接口,使市面很多美化版於轉換中出錯,而且亦因html代碼太多,而做成CGI檔案過太、重複代碼過量,引發起修改上的麻煩,而美化版亦因官方釋出新版本而令其開發中斷及需要重新修改,建議官方使用現有的 HTML::Template 模組,因 HTML::Template 技術很成熟,而安全性及功能亦較為完善,在國外內亦有其領導位置,而且只需要上載 HTML/Template.pl 就可以使用。

技術重點:
  一:通過Template技術,可以直接把 調用後的Template 轉為 cache Template保存,在某時段之內的頁面,通過這 cache Template插入即時數據即可完成整個頁面,減輕伺服器負載。
  二:把有關風格設定數據於初次化後直接寫入Template檔案中,減少變數的遞送。
  三:把有關頁面判別顯示的功能寫入Template進行,以完善不同美化版本的需要。
  四:歸類相同頁面部分,以減少讀取數據及編匯時間,同時亦能減少檔案體積。

技術內容:
  略....

19 Replies

| Add a Reply


  • 恩:) 补充点基本知识把:) 以前收集的,估计来源 PerlChina.org
    用法简单说明:)

    1、创建对象

    use HTML::Template;
    my $tmpl = HTML::Template->new();

    2、创建一个简单的模板文件

    <HTML>
    <HEAD><TITLE>Test Template</TITLE>
    <BODY>
    My name is <TMPL_VAR NAME=MYNAME>
    I love my girlfriend, your name is <TMPL_VAR NAME=FRIENDNAME>
    </BODY>
    </HTML>

    3、定义 MYNAME 和 FRIENDNAME

    $tmpl->param(
    MYNAME => "刘德华",
    FRIENDNAME => "梅超风",
    );

    依此类推 <IMG SRC="<TMPL_VAR NAME=IMAGE_SRC>">
    $tmpl->param( IMAGE_SRC => "/images/logo.gif" );

    4、显示输出 HTML

    print $tmpl->output;

    5、关于 IF 和 UNLESS

    <TMPL_IF NAME="A"> COMMENTS </TMPL_IF> # 如果条件 A 成立,显示内容 COMMENTS
    <TMPL_UNLESS NAME="A"> COMMENTS </TMPL_UNLESS> # 如果条件 A 不成立 ,显示内容 COMMENTS

    以下也是一种用法
    <TMPL_IF A>
    ………………
    <TMPL_ELSE>
    ………………
    </TMPL_IF>

    6、INCLUDE

    插入一个模板文件,下面的filename.tmpl内容插入到main.tmpl中

    main.tmpl
    -----------------
    <HTML>
    <HEAD><TITLE>Test Template</TITLE>
    <BODY>
    <TMPL_INCLUDE NAME="filename.tmpl">
    My name is <TMPL_VAR NAME=MYNAME>
    I love my girlfriend, your name is <TMPL_VAR NAME=FRIENDNAME>
    </BODY>
    </HTML>
    -----------------

    filename.tmpl
    -----------------
    <IMG SRC="<TMPL_VAR NAME=IMAGE_SRC>">
    -----------------

    7、关于更多操作方法

    请参阅 POD 说明文档
    或者
    http://html-template.sourceforge.net/html_template.html
    :em05:

  • 模板文件有些PHP风格了……

  • 下面引用由亚在 2004/10/24 02:46pm 发表的内容:
    模板文件有些PHP风格了……

    对。。
    ps:写了个小演示程序。。上传把,准备贻笑大方:)
    http://easun.org/upload/early/test_1098601732.rar
  • 用 %param 做循环应该可以作成通用函数。

  • 下面引用由路杨在 2004/10/25 01:11pm 发表的内容:
    用 %param 做循环应该可以作成通用函数。

    估計LB一般慣用寫法 (${$_}) 會對非 global 變數不支援
  • Anthony 你跟bbser 說一說吧= =
    我覺得要用非官方外力達成template 並跟上leobbsx 的更新是很困難的事。
    只有bbser 採用才是王道。。。

  • 下面引用由Anthony在 2004/10/25 09:06pm 发表的内容:
    估計LB一般慣用寫法 (${$_}) 會對非 global 變數不支援

    恩,官方习惯这么用。还是 散列 好点,方便对象化和mod_perl化。
  • 下面引用由studenttwok在 2004/10/25 10:08pm 发表的内容:
    Anthony 你跟bbser 說一說吧= =
    我覺得要用非官方外力達成template 並跟上leobbsx 的更新是很困難的事。
    只有bbser 採用才是王道。。。

    恩。非官方将带来严重的升级危机:)
  • 呵呵,如果独立制作Template,那对于升级,将是一次痛苦的历程。

  • 恩。似乎适合自己不升级的人?呵呵:)

  • 这个花说效率低? Anthony有空测试下:)

  • 使用了HTML::Template 內的 cache功能
    不見得慢了那裡

  • 问题在于HTML::Template 內的 cache只能在mod_perl运行,我看了说明。。
    另外。如果简化Template模块的话?是否可以使之加速?

    因为好多函数都可以不用的。。我觉得影响速度的应该有LOOP等。。这些可以不用。。那就是可以删除。。。

  • filecache 可以在非 mod_perl 情況下使用
    減少代碼當然好吧


  • If you're worried about all the disk access from reading a template file just use mod_perl and the cache option detailed below.

    原话,好象说 cache option 只能用于 mod_perl ? 有条件的话测试下,就知道了:)
  • 你看看吧
    有關 cache 選項是做了分點說明的
    那裡只注明 cache , shared_cache 及其有關選項才需要 mod_perl 支援
    而 file cache 沒注,因此應該不需要
    而且我那裡是個純perl 環境...

  • 我理解错误。。 cache只能用于 mod_perl,但是 file_cache 应该可以用到普通的环境


    # file_cache - if set to 1 the module will store its cache in a file using the Storable module. It uses no additional memory, and my simplistic testing shows that it yields a 50% performance advantage. Like shared_cache, it will work in a CGI environment. Default is 0.

  • 下面引用由Anthony在 2004/10/29 00:52am 发表的内容:
    你看看吧
    有關 cache 選項是做了分點說明的
    那裡只注明 cache , shared_cache 及其有關選項才需要 mod_perl 支援
    而 file cache 沒注,因此應該不需要
    ...

    恩,我已经回复,呵呵,你还是比我快:) :em06:

Add a Reply

Forum Groups

Good Perl Books

Perl 學習手札

作者:簡信昌

Perl 學習手札 , 一本优秀的中文Perl在线学习资料。

Perl 程序讨论区

12 50

Last Topic: [注意]本区文章归档区 by 路杨 on Oct 16, 2006

事物处理及其他

113 1410

Last Topic: 踩个脚印 by 眼睛oo on Dec 4, 2010

测试私密区

测试私密区

18 88

Notice: 用于测试程序或者不可告人之秘密。不要问我要密码哦。。[此为原LB_ES论坛系统保留项,只限原有权限朋友进入,不再接受注册]

OpenID accepted here Learn more about OpenID