Statische Webseiten mit nanoc

Warum statische Seiten?

1x gerendert, 10.000x ausgeliefert

No PHP, no webapp ⇒ No webapp with security holes

Häufig: Verwaltung der Inhalte in git. Markdown ftw!

Static webspace is cheap (github pages, etc.)

Die „Platzhirsche“

What's wrong with Octopress?

Abgesehen von diversen „Detail-Schmerzen“ (fragt Octopress-Benutzer)...

Build-Zeiten!

It's completely blog-centric!

Was ich will...

Möglichst beliebige Eingabeformate (Markdown ist cool, aber wie wär's mit asciidoc?)

Seiteninhalt mit git verwalten

Meine Organisationsstruktur

Meine Seitenstruktur

Generische statische Seitengeneratoren

...ist wie das Verhältnis von
Webapp-Framework:Wordpress zu Generator:Octopress

Heiße Kandidaten: nanoc und hakyll.

Beide: Konfigurierbarer Übersetzungsschritt von Quellen zur Ausgabe

nanoc Pipeline

Data Sources: Quellen für „Items“ (Basiseinheit für ein „Ding“).
Standardquelle: Dateisystem

Preprocessing: Items sind gelesen, aber noch nicht bearbeitet
In diesem Schritt: Items entfernen oder synthetische erzeugen

Compilation: Umwandeln von Items ins Ausgabeformat (oder mehrere Formate = Representations!)

Routing: Bestimmen von Dateiname und Pfad

nanoc Rules (1)

compile '*' do
  unless rep.binary? then
    filter :erb
    case item[:extension]
    when 'textile' then
            filter :redcloth
    when 'md','markdown' then
            filter :rdiscount,
              { :extensions => [ :smart ] }
    end
    filter :colorize_syntax
    layout 'default'
  end
end

nanoc Rules (2)


route '*' do
  if rep.binary? then
    item.identifier.chop + ".#{item[:extension]}"
  else
    item.identifier + 'index.html'
  end
end
            

Was ich schon habe...

Meine Seitenstruktur: Artikel, Artikelarchiv, Zuordnung von Artikeln zu Projekten oder Artikelserien

Tags, RSS-Feed

Ein wenig Metadaten-Management (Bildreferenzen)

Import von Twitter und del.icio.us

Lessons learned

Ruby ist behäbig (oder man braucht mehr Detailwissen)

Gute Tutorials sind rar, viele Seiten sind crappy (aber der IRC-Kanal ist die Wucht)

Meine „kleine Seite“ besteht aus >700 Blogeinträgen. Ist eine Menge für solche Seitengeneratoren!

Das Bauen statischer Generatoren erfordert mehr Knoffhoff als zunächst gedacht (incremental builds, performance)

Beim nächsten Mal vielleicht doch lieber Webapp + Varnish?

Wanna-be hipsers use Octopress.

The really cool wolves use nanoc :-)




This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.


Creative Commons License