代码之家  ›  专栏  ›  技术社区  ›  micmcg

使用服务器端语言进行开发但部署到静态HTML的最佳方法

  •  3
  • micmcg  · 技术社区  · 15 年前

    我们有一个客户,我们为他建立了许多基于模板的网站。理想情况下,我们会使用像Kohana这样的东西( http://www.kohanaphp.com/ )要处理模板和使做网站范围内的变化轻而易举。

    不幸的是,我们的客户机不能(也不会)托管任何服务器端代码(在您询问之前,这不会更改,托管文件本身不是一个选项),因此部署到它们的任何文件必须是HTML、javascript、css、images和flash。

    在Kohana这样的框架环境中,是否有一种好的开发方法来使站点易于管理,但能够部署或导出仅HTML版本的站点(对站点没有动态方面,例如需要服务器端语言的搜索,以及不使用数据库的搜索)?

    我想它类似于蜘蛛网,但是我想要一些更可靠的东西,因为有些页面资产是用JavaScript动态加载的。

    谢谢

    6 回复  |  直到 7 年前
        1
  •  1
  •   Ask Bjørn Hansen    15 年前

    我用 Template Toolkit (Perl)并有一个简单的脚本,可以从模板生成静态文件。这对于您所处的情况(常见导航等)非常有用。

    它伴随着一个 ttree 将处理目录树并将结果放入另一个目录树的命令。

    这是我使用的tt.rc文件:

    # ignore these files (regular expressions)
    ignore = \.svn
    ignore = ^#
    ignore = ~$
    ignore = .DS_Store
    ignore = \.tt$
    
    # if these template files change, reprocess everything
    depend *=tpl/wrapper,tpl/defaults,style/default.html
    
    # just copy these files, don't process as templates
    copy = \.(gif|png|pdf|jpg)$
    
    # verbose output
    verbose
    
    # recurse into subdirectories
    recurse
    
    # setup some defaults from tpl/defaults
    pre_process = tpl/defaults
    
    # process this file instead of the real file (see below how this is used)
    process     = tpl/wrapper
    
    # process files from src/, output to html/
    # extra templates in lib/ (tpl/wrapper for example).
    src  = src
    dest = html
    lib  = lib
    

    一些特殊文件, tpl/defaults

    [%-  page = {
                title = template.title,
                style = template.style or 'default.html'
        };
    
        base = INCLUDE tpl/base_uri;
    
        # don't include any whitespace from here...
        RETURN;
    -%]
    

    tpl/wrapper

    [%- content = PROCESS $template;    
       IF !template.name.search('.html') OR page.style == 'none';
          content;
       ELSE;
          default_style_template = "style/" _ page.style;
          PROCESS $default_style_template;
       END;
    %]
    

    这将处理真正的模板;将结果放入 content 变量,然后处理 style 模板(设置为 page.style 在里面 第三方物流/违约 默认为 defaults.html )

    这个 lib/style/default.html 样式文件只需要

    [% content %]
    

    在某个地方包含真正的模板;在此之前和之后,您可以拥有标准的页脚和页眉。

    您可以在上阅读有关模板工具包的更多信息 tt2.org .

    另一个选择是使用 wget (或类似)在递归模式下,将PHP在开发服务器上生成的页面“镜像”,但我不建议这样做。

        2
  •  1
  •   amazedsaint    7 年前

    给予 WaveMaker Studio 尝试一下。它可以部分解决你的问题。

    wavemaker studio有一种模板化功能,它提供社区开源版本。

    高温高压

        3
  •  0
  •   Arafangion    15 年前

    考虑其他的解决方案,即使你认为你不能使用它们。对新的解决方案视而不见是错误的,因为您的客户机“无法处理服务器端语言”(意译)。有时需求是错误知识的结果。例如,客户机是否真的无法承载任何服务器端语言,因为它们无法承载IIS或Apache?或者是因为它们没有这些语言,也无法安装任何其他应用程序? (如果他们可以安装一个应用程序,也许解决方案就是提供一个“小型”的Web服务器——也许是XSP)。

    我还建议你看看,比如谷歌的“齿轮”。我听说过很好的事情,尽管这可能不适合你的需要。

    如果不能做到这一点,您最好忽略经典的服务器端语言,并在客户机端执行所有操作,或者使用服务器端语言作为导出器。(这将是一个自定义作业)。我认为使用自定义脚本“导出”一个站点可能是最好的方法。

    最后,这个问题实际上没有一个答案——作为一个程序员,你的工作是权衡不同的优势和不同的解决方案,并选择最好的一个。

        4
  •  0
  •   Cyril Gupta    15 年前

    隐马尔可夫模型。。。如果客户机的服务器不允许使用PHP或ASP,我认为他们不会使用更不安全的CGI。

    好吧,您可以在开发应用程序中创建页面,在浏览器中加载这些页面,然后保存结果HTML。对所有的页面都这样做,你就设置好了。

    只要确保链接指向正确。

        5
  •  0
  •   Lars Wikman    15 年前

    我不知道有什么具体的解决方案,但是如果你愿意用自己选择的语言创建一个简单的模板系统,那么只需要编写一个脚本来生成页面。我十几岁的时候就有这样的网站。每当我上传新的内容时,我都会重新生成站点并上传新的页面。当时我正在使用Perl。

    创建这样一个脚本的复杂性很大程度上取决于您使用什么来构建站点。我正在使用一个完全定制的构建,它是按照它的方式构建的。在这种情况下,我想您可能希望自己编写一个简单的模板系统,以获得模板的优势,并能够从中生成静态HTML。

        6
  •  0
  •   John McCollum    15 年前

    我不知道这是否是一个选择,但我建议 CushyCms .这是一个在线CMS,您可以使用CSS类定义内容区域,并可以在线编辑内容。您确实需要提供ftp详细信息,所以这可能会破坏您的交易,但我认为值得一提。