Statische Webseiten mit nanoc



Statische Webseiten mit nanoc

0 0


Vortrag-StatischeWebseitenMitNanoc

Lightning talk bei den shackspace Thundertalks 0×06

On Github Skyr / Vortrag-StatischeWebseitenMitNanoc

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 vonWebapp-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.