【发布时间】:2010-03-01 05:11:05
【问题描述】:
我想编写一个页眉和页脚 perl 脚本,它将返回我个人网页的页眉和页脚。我假设我会在我希望它出现的 html 文件的一部分中对该文件进行某种包含。这是我应该这样做的方式,如果是这样,我该怎么做?如果有人对更好的方法有任何其他建议,我会很感兴趣。谢谢。
【问题讨论】:
我想编写一个页眉和页脚 perl 脚本,它将返回我个人网页的页眉和页脚。我假设我会在我希望它出现的 html 文件的一部分中对该文件进行某种包含。这是我应该这样做的方式,如果是这样,我该怎么做?如果有人对更好的方法有任何其他建议,我会很感兴趣。谢谢。
【问题讨论】:
如果您的服务器支持,请查看server side includes。它们不一定必须用 Perl 编写。
如果没有,并且您的页眉和页脚很简单,请考虑用 Javascript 编写它们。在您的 HTML 代码中包含一个 Javascript 脚本很容易,它会发出一堆 document.write 调用,然后您就完成了。
如果不是,而且你的页眉和页脚不简单,如果你不懂 Javascript,如果你可能是一个受虐狂,仍然考虑使用 Javascript。
可能还有其他一些更新的技术可以实现这一点,这里的年轻 Whippersnappers 可以告诉你,但对我来说,服务器端包含和 Javascript 并没有坏。
【讨论】:
看看Template Toolkit。它允许您插入服务器端代码,该代码在返回页面之前进行评估,因此您可以通过这种方式轻松地将页眉/页脚代码添加到页面。该工具包易于使用,并且可以在 Perl 中实现附加功能。
【讨论】:
子类CGI.pm 并添加自定义方法。例如:
package MyCGI;
use warnings;
use strict;
use base qw( CGI );
sub page_header {
my $self = shift;
return $self->div( { 'id' => 'header' },
$self->h1('Welcome to my home page') );
}
sub page_footer {
my $self = shift;
return $self->div( { 'id' => 'footer' },
$self->tt('Copyright © 2010. All rights reserved.') );
}
sub content {
my ( $self, $paragraph ) = @_;
return $self->div( { 'id' => 'content' }, $self->p($paragraph) );
}
1;
#!/usr/bin/env perl
use warnings;
use strict;
use MyCGI;
my $page = MyCGI->new();
print
$page->header(),
$page->start_html('My home page'),
$page->page_header(),
$page->content('My own content'),
$page->page_footer(),
$page->end_html();
然后,您可以随时use MyCGI 使用自定义/子类方法。
【讨论】: