静态网站生成

时间:2011-08-20 11:34:39

标签: ruby ruby-on-rails-3 ruby-on-rails-plugins middleman

我需要一种简单的方法来生成静态网页,以便我可以使用Apache或Nginx来提供它们。目前我正在使用SproutCore的构建工具(Abbot)来生成静态页面,但这有点麻烦,因为它是为构建SproutCore应用程序而非非SproutCore HTML页面而设计的。

以下是我的要求:

  • Javascript必须合并并缩小
  • 必须合并CSS文件
  • 每个image / CSS / Javascript资产必须具有唯一的URL才能获得更好的缓存(查询字符串不够)
  • 资产网址只有在真正更改时才会有所不同
  • 本地化支持彻底的HTML,CSS,Javascript和图像文件
  • 带有布局,部分等的漂亮模板引擎。

以下是我找到的可能解决方案:

对此有何想法?

经过漫长的评估过程后,我决定使用Middleman。它可以解决问题,我喜欢它的简单性以及我可以使用现有的Rack组件。

最诚挚的问候,

Pekka Mattila

6 个答案:

答案 0 :(得分:17)

我是米德尔曼的创造者,并且渴望帮助你舒服地使用米德尔曼。我的主要目标是为用户提供Rails的强大功能,但专注于静态开发。 Middleman的一些实际代码是Ab

的简化版本

答案 1 :(得分:1)

这就是我的所作所为:

  • 带有High Voltage Gem的Ruby on Rails 3,这很容易 使用通用模板提供静态页面主体。它需要一个 路由中的简单条目(您可以使用命名空间来创建 层次)。

  • Apache反向代理到独立的Passenger(使用nginx I 相信)运行Rails应用程序。 This article描述了如何做到 配置它。

单机乘客将阅读该网址,查看/ ./上是否有相应的公共文件,并提供该服务。如果未找到,它将调用Rails并生成页面。实质上是页面缓存,可以选择使用或不使用.html发布您的URL。 Passenger文档中有一节专门针对页面缓存。

至于组合和缩小js和css,here's a good stackoverflow thread

Rails具有出色的i18n / l10n支持。

Rails模板引擎非常适合使用。如果您愿意,可以使用HAML。

对于你的第3和第4分,我有点困惑。你想要css和js组合,但是你希望每个人拥有它自己的URL。在Rails中,资产标签上的“cache => true”指令负责添加一个查询字符串参数,该参数在内容发生时会发生变化,这是一种相当传统的方案。我不确定你在哪些环境下工作不起作用。我曾经使用过的任何CDN都可以正常工作,正确实现HTTP规范的Web服务器也是如此。无论如何,更改URL中的实际路径或文件将需要更改对它的所有引用。也许我误会了?

答案 2 :(得分:1)

我认为

Monkeyman拥有您需要的模板引擎。把它想象成Middleman的小Scala兄弟。没有成熟或功能丰富,但我们最终会到达那里。目前的版本支持HAML,Jade,SSP用于布局,Markdown用于内容以及其他一些内容。

答案 3 :(得分:1)

没有任何特殊订单

答案 4 :(得分:0)

您可能还应该结帐mod_pagespeed。它至少会给你这个:

  • Javascript必须合并并缩小
  • 必须合并CSS文件
  • 每个image / CSS / Javascript资产必须具有唯一的URL才能获得更好的缓存(查询字符串不够)
  • 资产网址只有在真正更改时才会有所不同

它不会给你这个:

  • 本地化支持彻底的HTML,CSS,Javascript和图像文件
  • 带有布局,部分等的漂亮模板引擎。

答案 5 :(得分:0)

您可以查看docpad。它是用coffeescript编写的,并在Nodejs上运行。它是基于文档的,您可以在其中编写一些文档和布局,它将编译它们并将它们写在out目录中。您可以通过plugins

以多种语言撰写文档

它还支持多级文件编译。例如,从ecomarkdownhtml

它的另一个重要特性是您可以查询文档中生成的其他文档。例如,在第一页中,您可以使用以下内容获取所有博客文章:

database.findAll({url : /posts/})

将返回所有在其网址中有帖子的文档。