我需要一种简单的方法来生成静态网页,以便我可以使用Apache或Nginx来提供它们。目前我正在使用SproutCore的构建工具(Abbot)来生成静态页面,但这有点麻烦,因为它是为构建SproutCore应用程序而非非SproutCore HTML页面而设计的。
以下是我的要求:
以下是我找到的可能解决方案:
对此有何想法?
经过漫长的评估过程后,我决定使用Middleman。它可以解决问题,我喜欢它的简单性以及我可以使用现有的Rack组件。
最诚挚的问候,
Pekka Mattila
答案 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。它至少会给你这个:
它不会给你这个:
答案 5 :(得分:0)
您可以查看docpad。它是用coffeescript编写的,并在Nodejs上运行。它是基于文档的,您可以在其中编写一些文档和布局,它将编译它们并将它们写在out目录中。您可以通过plugins
以多种语言撰写文档它还支持多级文件编译。例如,从eco
到markdown
到html
。
它的另一个重要特性是您可以查询文档中生成的其他文档。例如,在第一页中,您可以使用以下内容获取所有博客文章:
database.findAll({url : /posts/})
将返回所有在其网址中有帖子的文档。