【问题标题】:Including perl cgi scripts in html在 html 中包含 perl cgi 脚本
【发布时间】:2010-03-01 05:11:05
【问题描述】:

我想编写一个页眉和页脚 perl 脚本,它将返回我个人网页的页眉和页脚。我假设我会在我希望它出现的 html 文件的一部分中对该文件进行某种包含。这是我应该这样做的方式,如果是这样,我该怎么做?如果有人对更好的方法有任何其他建议,我会很感兴趣。谢谢。

【问题讨论】:

    标签: perl cgi


    【解决方案1】:

    如果您的服务器支持,请查看server side includes。它们不一定必须用 Perl 编写。

    如果没有,并且您的页眉和页脚很简单,请考虑用 Javascript 编写它们。在您的 HTML 代码中包含一个 Javascript 脚本很容易,它会发出一堆 document.write 调用,然后您就完成了。

    如果不是,而且你的页眉和页脚不简单,如果你不懂 Javascript,如果你可能是一个受虐狂,仍然考虑使用 Javascript。

    可能还有其他一些更新的技术可以实现这一点,这里的年轻 Whippersnappers 可以告诉你,但对我来说,服务器端包含和 Javascript 并没有坏。

    【讨论】:

    • 就包含内容而言,JavaScript 被破坏了。让您的导航消失,因为 JS 不在身边,对(某些)用户来说非常不利,对您在搜索引擎中的位置也非常不利。
    • 是的,我打算使用服务器端包含来包含我的 perl cgi 脚本。不过感谢您的评论。
    【解决方案2】:

    看看Template Toolkit。它允许您插入服务器端代码,该代码在返回页面之前进行评估,因此您可以通过这种方式轻松地将页眉/页脚代码添加到页面。该工具包易于使用,并且可以在 Perl 中实现附加功能。

    【讨论】:

    • 投反对票时请留言。
    • 我猜我会说这是因为它只是一个链接,没有实际贡献。 OP 在寻找什么?为什么它是一个好的解决方案?它有什么作用? OP应该如何使用它?我在 SO 上对相当多的仅链接答案投了反对票,但不是这个。只是猜测。 :)
    • @jalf:可能是这样。但是,我确实发现仅链接的答案很有用。如果您不知道给定的工具,那么您可能只需要一个指向正确方向的简单指针。我不会对这样的答案投反对票,但我会牢记这一点 - 并添加一点上下文让你开心:)
    • 没错,通常我只会留下仅链接的答案,而不是对其进行投票。不过,我猜这就是它被否决的原因
    【解决方案3】:

    子类CGI.pm 并添加自定义方法。例如:

    MyApp.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;
    

    page.pl

    #!/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 使用自定义/子类方法。

    【讨论】:

    • 而且基本上没有任何 html 文件?
    • -1:非常有创意,但使用 CGI.pm 的 HTML 生成功能只是将代码与表示混合的另一种方式,并导致所有可维护性问题。如果您打算使用完全由 Perl 提供服务的页面,请使用适当的模板解决方案,例如 Template::Toolkit(由 Brian Rasmussen 建议),这样您就可以保持演示文稿独立于提供其数据的代码。
    猜你喜欢
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    相关资源
    最近更新 更多