Создание статического веб-сайта

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

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

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

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

какие мысли по этому поводу?

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

С Уважением,

Пекка Маттила

6 ответов


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


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

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

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

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

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

рельсы имеет отличные реализация i18n/команде l10n поддержки.

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

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


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


без какого-либо специального порядка!--1-->


вы, вероятно, также должны проверить модуль mod_pagespeed. Это по крайней мере даст вам это:

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

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

  • локализация поддержка тщательной HTML, CSS, Javascript и файлов изображений
  • хороший движок шаблонов с макетов, фрагментов и т. д.

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

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

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

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

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