Создание статического веб-сайта - PullRequest
16 голосов
/ 20 августа 2011

Мне нужен простой способ создания статических веб-страниц, чтобы я мог обслуживать их с помощью Apache или Nginx.В настоящее время я использую инструмент сборки (Abbot) SproutCore для создания статических страниц, но это немного громоздко, поскольку оно предназначено для создания приложений SproutCore, а не HTML-страниц, отличных от SproutCore.

Вот мои требования:

  • Javascript должен быть объединен и уменьшен
  • CSS файлы должны быть объединены
  • Каждый ресурс изображения / CSS / Javascript должен иметь уникальный URL для лучшего кэширования (строка запроса недостаточно)
  • URL-адрес ресурса должен отличаться только в том случае, если он действительно изменяется
  • Локализация поддерживает подробные файлы HTML, CSS, Javascript и изображений
  • Хороший шаблонизатор с макетами, частями и т. д.

Вот возможные решения, которые я нашел:

Есть какие-нибудь мысли по этому поводу?

После долгого процесса оценки я решил использовать Middleman.Это делает свое дело, и мне нравится его простота и тот факт, что я могу использовать существующие компоненты Rack с ним.

С наилучшими пожеланиями,

Pekka Mattila

Ответы [ 6 ]

17 голосов
/ 21 августа 2011

Я создатель Middleman и хотел бы помочь вам освоиться с Middleman. Моя главная цель - дать пользователям возможности Rails, но сосредоточиться на статической разработке. Некоторые из фактического кода Middleman упрощенные версии Ab

1 голос
/ 14 мая 2013

Без какого-либо специального заказа

1 голос
/ 14 февраля 2012

Monkeyman имеет шаблонный движок, который вам нужен, я думаю.Думайте об этом как о маленьком брате Скалы Мидлмана.Еще нигде нет ни зрелого, ни многофункционального приложения, но мы доберемся до конца.Текущее воплощение поддерживает HAML, Jade, SSP для макетов, Markdown для контента и пару других вещей.

1 голос
/ 21 августа 2011

Вот что я делаю:

  • Ruby on Rails 3 с High Voltage Gem , что делает его легким обслуживать статическое тело страницы, используя общие шаблоны. Это требует простая запись в маршрутах (и вы можете использовать пространства имен для создания иерархии).

  • Обратный прокси-сервер Apache для автономного пассажира (который использует nginx I поверьте) запустить приложение Rails. Эта статья описывает, как настроить его.

Автономный пассажир прочитает URL-адрес, проверит, существует ли соответствующий файл в / public с .html, и обработает его. Если он не найден, он вызовет Rails и сгенерирует страницу. По сути, кеширование страниц с возможностью публикации ваших URL с или без .html. В документации для пассажиров есть раздел, посвященный кешированию страниц.

Что касается объединения и минимизации js и css, вот хороший поток stackoverflow .

Rails имеет отличную поддержку i18n / l10n.

С движком шаблонов Rails очень приятно работать. И вы можете использовать HAML, если хотите.

Что касается ваших 3-го и 4-го пунктов, я немного запутался. Вы хотите, чтобы css и js были объединены, но затем вы хотите, чтобы у каждого был свой URL. В Rails директива cache => true для тегов ресурсов заботится о добавлении параметра строки запроса, который изменяется при изменении содержимого, что является довольно традиционной схемой. Я не уверен, в каком контексте вы работаете, где это не сработает. Любой CDN, который я когда-либо использовал, прекрасно с этим работает, как и веб-сервер, корректно реализующий спецификацию HTTP. В любом случае, изменение фактического пути или файла в URL-адресе потребует изменения всех ссылок на него. Может я недопонимаю?

0 голосов
/ 07 мая 2012

Вы можете взглянуть на документ .Он написан на coffeescript и работает на Nodejs .Он основан на документах, где вы пишете некоторые документы и макеты, он компилирует их и записывает их в каталог out.Вы можете писать документы на многих языках с помощью плагинов

Он также поддерживает многоуровневую компиляцию файлов.Например, от eco до markdown до html.

Еще одна замечательная особенность этого режима - возможность запроса других документов, создаваемых в документе.Например, на первой странице у вас есть что-то вроде этого, чтобы получить все сообщения в блоге:

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

, который вернет все документы, имеющие сообщения в их URL.

0 голосов
/ 14 февраля 2012

Вам, вероятно, также следует оформить заказ mod_pagespeed .Это как минимум даст вам следующее:

  • Javascript должен быть объединен и уменьшен
  • CSS файлы должны быть объединены
  • Каждый ресурс изображения / CSS / Javascript должен иметь уникальныйURL для лучшего кэширования (недостаточно строки запроса)
  • URL ресурса должен отличаться только в том случае, если он действительно изменяется

Это не даст вам этого:

  • Локализация поддерживает полный HTML, CSS, Javascript и файлы изображений
  • Хороший шаблонизатор с макетами, частями и т. Д.
...