16

Apache または Nginx で提供できるように、静的 Web ページを生成する簡単な方法が必要です。現在、SproutCore のビルド ツール (Abbot) を使用して静的ページを生成していますが、SproutCore 以外の HTML ページではなく、SproutCore アプリをビルドするために設計されているため、少し面倒です。

ここに私の要件があります:

  • Javascript を組み合わせて縮小する必要があります
  • CSS ファイルを結合する必要があります
  • 各画像 / CSS / Javascript アセットには、キャッシュを改善するために一意の URL が必要です (クエリ文字列では不十分です)。
  • アセット URL は、実際に変更された場合にのみ異なる必要があります
  • HTML、CSS、Javascript、画像ファイルによるローカリゼーションのサポート
  • レイアウト、パーシャルなどを備えた素敵なテンプレート エンジン。

私が見つけた可能な解決策は次のとおりです。

  • Ruby on Rails を使用してサイトを作成し、http://usefulfor.com/ruby/2009/03/23/use-rails-to-create-a-static-site-rake-and-subversion のように wget を使用してすべてのリソースを取得します/
  • 仲介者を使用: http://middlemanapp.com

これについて何か考えはありますか?

長い評価プロセスの後、Middleman を使用することにしました。それはトリックを行い、そのシンプルさと、既存のラック コンポーネントを使用できるという事実が気に入っています。

よろしくお願いします、

ペッカ・マッティラ

4

6 に答える 6

17

私はミドルマンの作成者であり、ミドルマンを快適に使用できるように支援したいと思っています。私の主な目標は、ユーザーにRailsのパワーを提供することですが、静的な開発に重点を置いています。Middlemanの実際のコードの一部は、Abの簡略化されたバージョンです。

于 2011-08-21T05:55:36.490 に答える
1

モンキーマンには必要なテンプレートエンジンがあると思います。MiddlemanのScalaの弟と考えてください。まだ成熟した機能や機能が豊富な場所はありませんが、最終的にはそこに到達します。現在の化身は、HAML、Jade、レイアウト用のSSP、コンテンツ用のMarkdown、およびその他のいくつかのものをサポートしています。

于 2012-02-13T20:43:00.073 に答える
1

これが私がすることです:

  • Ruby on Rails 3 とHigh Voltage Gemを使用すると、共通のテンプレートを使用して静的ページの本文を簡単に提供できます。ルートに単純なエントリが必要です (また、名前空間を使用して階層を作成できます)。

  • Railsアプリを実行するために、スタンドアロンのPassenger(nginxを使用していると思います)へのApacheリバースプロキシ。この記事では、その構成方法について説明します。

スタンドアロンのパッセンジャーは URL を読み取り、/public に .html を含む対応するファイルがあるかどうかを確認し、それを提供します。見つからない場合は、Rails を呼び出してページを生成します。本質的には、.html の有無にかかわらず URL を公開するオプションを備えたページ キャッシングです。Passenger ドキュメントには、特にページ キャッシングに関するセクションがあります。

js と css を組み合わせて縮小する限り、ここに良いスタックオーバーフロー スレッドがあります

Rails は優れた i18n/l10n サポートを備えています。

Rails テンプレート エンジンは非常に使いやすいです。必要に応じて HAML を使用することもできます。

3 点目と 4 点目については、少し混乱しています。css と js を組み合わせて、それぞれに独自の URL を持たせたいとします。Rails では、アセット タグの "cache => true" ディレクティブが、コンテンツが変更されると変更されるクエリ文字列パラメーターの追加を処理します。これはかなり伝統的なスキームです。それがうまくいかない場所で、あなたがどのような状況で働いているのかわかりません。HTTP 仕様を正しく実装する Web サーバーと同様に、これまでに使用した CDN はすべてそれで正常に動作します。とにかく、URL 内の実際のパスまたはファイルを変更するには、それへのすべての参照を変更する必要があります。多分私は誤解していますか?

于 2011-08-21T15:07:58.337 に答える
1

特注なしで

于 2013-05-14T14:23:05.073 に答える
0

docpadを見ることができます。これはcoffeescriptで書かれており、 Nodejsで実行されます。これはドキュメント ベースであり、いくつかのドキュメントとレイアウトを記述し、それらをコンパイルして out ディレクトリに書き込みます。プラグインを介して多くの言語でドキュメントを作成できます

また、複数レベルのファイル コンパイルもサポートしています。たとえば、ecoからmarkdownまでhtml

もう 1 つの優れた機能は、ドキュメント内で生成されている他のドキュメントに対してクエリを実行できることです。たとえば、最初のページでは、すべてのブログ投稿を取得するために次のようなものがあります。

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

URLに投稿があるすべてのドキュメントを返します。

于 2012-05-07T12:00:58.173 に答える
0

おそらくmod_pagespeedもチェックアウトする必要があります。少なくともこれを提供します:

  • Javascript を組み合わせて縮小する必要があります
  • CSS ファイルを結合する必要があります
  • 各画像 / CSS / Javascript アセットには、キャッシュを改善するために一意の URL が必要です (クエリ文字列では不十分です)。
  • アセット URL は、実際に変更された場合にのみ異なる必要があります

これはあなたに与えません:

  • HTML、CSS、Javascript、画像ファイルによるローカリゼーションのサポート
  • レイアウト、パーシャルなどを備えた素敵なテンプレート エンジン。
于 2012-02-13T20:40:07.967 に答える