Transcript
Page 1: statische sites met nanoc

statische sitesmet nanocDenis Defreyne @ Fronteers, 19 juli 2012

Page 2: statische sites met nanoc

twitter.com/ddfreynegithub.com/ddfreyne

Page 3: statische sites met nanoc

Oorsprong

Page 4: statische sites met nanoc

A long time agoin a galaxy far away… :(

Page 5: statische sites met nanoc

A long time agoin a galaxy far away… :)

Page 6: statische sites met nanoc

Dit is een paragraaf. Eentje met twee zinnen zelfs!

1. Een kleine lijst2. met twee elementen

Sectie Twee-----------

Nog een kleine paragraaf.

Page 7: statische sites met nanoc

<p>Dit is een paragraaf. Eentje met twee zinnen zelfs!</p>

<ol><li>Een kleine lijst</li><li>met twee elementen</li></ol>

<h2>Sectie Twee</h2>

<p>Nog een kleine paragraaf.</p>

Page 8: statische sites met nanoc

Markdown HTML

Page 9: statische sites met nanoc

Markdown HTMLERB

Page 10: statische sites met nanoc

<html> <head> <title>Pagina X</title> </head> <body> <h1>Titel Hoort Hier</h1> <%= yield %> </body></html>

Page 11: statische sites met nanoc

<html> <head> <title>Pagina X</title> </head> <body> <h1>Titel Hoort Hier</h1> <p>Dit is een paragraaf. Eentje met twee zinnen zelfs!</p> <ol> <li>Een kleine lijst</li> <li>met twee elementen</li> </ol> <h2>Sectie Twee</h2> <p>Nog een kleine paragraaf.</p> </body></html>

Page 12: statische sites met nanoc
Page 13: statische sites met nanoc
Page 14: statische sites met nanoc

about/index.html →http://example.com/about/

Page 15: statische sites met nanoc

about/index.html →http://example.com/about/

about.html →http://example.com/about.html

Page 16: statische sites met nanoc

1. Markdown is eenvoudigerom te schrijven dan HTML.

Page 17: statische sites met nanoc

2. ERB zorgt voor eenconsistente layout.

Page 18: statische sites met nanoc

nanoc luvz <3

Page 19: statische sites met nanoc
Page 20: statische sites met nanoc
Page 21: statische sites met nanoc
Page 22: statische sites met nanoc
Page 23: statische sites met nanoc
Page 24: statische sites met nanoc
Page 25: statische sites met nanoc
Page 26: statische sites met nanoc

Soon!

Page 27: statische sites met nanoc

“really digging nanoc for generating static sites”

Rick Olson (GitHub)

“I’m singing the praises of nanoc to everyone I come across”

Wayne E. Seguin (RVM)

Page 28: statische sites met nanoc

Het Universum

Page 29: statische sites met nanoc

Ace, Bonsai, Blacksmith, Blogofile, Chisel, Deplot, Frank, Graze, Hakyll,

Hobix, Hyde, Jekyll, Korma, Machined, Markdoc, Middleman, nanoc, Pagegen, Pelican, Phrozn, PieCrust, Pilcrow, Pith,

Punch, Quill, RakeWeb, Rassmalog, Rizzo, Rog, Rote, RubyFrontier, Ruroh,

Second Crack, Speechhub, Stasis, StaticMatic, StaticWeb, Tahchee,Ultra simple Site Maker, Webby,

Website Meta Language, Wintersmith,Yurt CMS, ZenWeb, cyrax, mynt, poole,

webgen, yst

Page 30: statische sites met nanoc

Ace, Bonsai, Blacksmith, Blogofile, Chisel, Deplot, Frank, Graze, Hakyll,

Hobix, Hyde, Jekyll, Korma, Machined, Markdoc, Middleman, nanoc, Pagegen, Pelican, Phrozn, PieCrust, Pilcrow, Pith,

Punch, Quill, RakeWeb, Rassmalog, Rizzo, Rog, Rote, RubyFrontier, Ruroh,

Second Crack, Speechhub, Stasis, StaticMatic, StaticWeb, Tahchee,Ultra simple Site Maker, Webby,

Website Meta Language, Wintersmith,Yurt CMS, ZenWeb, cyrax, mynt, poole,

webgen, yst

Page 31: statische sites met nanoc

Getting Started

Page 32: statische sites met nanoc
Page 33: statische sites met nanoc

% gem install nanoc

Page 34: statische sites met nanoc

% gem install nanoc% nanoc create-site fronteers

Page 35: statische sites met nanoc

% gem install nanoc% nanoc create-site fronteers% cd fronteers

Page 36: statische sites met nanoc

% gem install nanoc% nanoc create-site fronteers% cd fronteers% echo "Helleuw!" > content/hoi.txt

Page 37: statische sites met nanoc

% gem install nanoc% nanoc create-site fronteers% cd fronteers% echo "Helleuw!" > content/hoi.txt% nanoc

Page 38: statische sites met nanoc

% gem install nanoc% nanoc create-site fronteers% cd fronteers% echo "Helleuw!" > content/hoi.txt% nanoc% nanoc view

Page 39: statische sites met nanoc

% gem install nanoc% nanoc create-site fronteers% cd fronteers% echo "Helleuw!" > content/hoi.txt% nanoc% nanoc view% open http://localhost:3000/hoi

Page 40: statische sites met nanoc
Page 41: statische sites met nanoc

Metadata

Page 42: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

title: "Documentation"markdown: basicis_dynamic: true

Page 43: statische sites met nanoc

<html> <head> <title>Pagina X</title> </head> <body> <h1>Den Titel</h1> <p>Written by Denis</p> <%= yield %> </body></html>

Page 44: statische sites met nanoc

<html> <head> <title><%= item[:title] %></title> </head> <body> <h1><%= item[:title] %></h1> <p>Written by Denis</p> <%= yield %> </body></html>

Page 45: statische sites met nanoc

<html> <head> <title><%= item[:title] %></title> </head> <body> <h1><%= item[:title] %></h1> <p>Written by <%= item[:author] %></p> <%= yield %> </body></html>

Page 46: statische sites met nanoc

Filters, Regels, Oh My!

Page 47: statische sites met nanoc

Filters voor inhoud:Markdown, Textile,RDoc, ASCIIDoc

Page 48: statische sites met nanoc

Markdown filters:BlueCloth, Pandoc, RedCarpet, RDiscount, Kramdown, Maruku

Page 49: statische sites met nanoc

Dynamische filters:ERB, Erubis, Haml,Mustache, Handlebars

Page 50: statische sites met nanoc

Meer filters:Sass & Less!

Page 51: statische sites met nanoc

Nog meer filters:Rubypants & Typogruby!

Page 52: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

Page 53: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

class FronteersFilter < Nanoc::Filter

Page 54: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

class FronteersFilter < Nanoc::Filter

identifier :fronteers

Page 55: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

class FronteersFilter < Nanoc::Filter

identifier :fronteers

def run(content, params={})

Page 56: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

class FronteersFilter < Nanoc::Filter

identifier :fronteers

def run(content, params={}) content.gsub( 'Fronteers', 'FRONTEERS!!!!!!111')

Page 57: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

class FronteersFilter < Nanoc::Filter

identifier :fronteers

def run(content, params={}) content.gsub( 'Fronteers', 'FRONTEERS!!!!!!111') end

end

Page 58: statische sites met nanoc

Rules

Page 59: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

Page 60: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '/stylesheets/*/' do

Page 61: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '/stylesheets/*/' do

filter :sass, Compass.sass_engine_options

Page 62: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '/stylesheets/*/' do

filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css

Page 63: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '/stylesheets/*/' do

filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css

filter :rainpress

end

Page 64: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

Page 65: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '*' do

Page 66: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '*' do

filter :erb

Page 67: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '*' do

filter :erb

filter :kramdown, :auto_ids => false

Page 68: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '*' do

filter :erb

filter :kramdown, :auto_ids => false

filter :colorize_syntax

end

Page 69: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

Page 70: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

<pre><code class="language-ruby">class Bob def greet(person) puts "Hi, #{person}!" endend</code></pre>

Page 71: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

title: "Documentation"markdown: basicis_dynamic: true

Page 72: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

Page 73: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

if item[:is_dynamic]

Page 74: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

if item[:is_dynamic] filter :erb

Page 75: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

if item[:is_dynamic] filter :erbend

Page 76: statische sites met nanoc
Page 77: statische sites met nanoc

route '*' do

Page 78: statische sites met nanoc

route '*' do # /about/ # -> /about/index.html

Page 79: statische sites met nanoc

route '*' do # /about/ # -> /about/index.html item.identifier + 'index.html'end

Page 80: statische sites met nanoc

route '*' do # /about/ # -> /about/index.html item.identifier + 'index.html'end

route '*' do

Page 81: statische sites met nanoc

route '*' do # /about/ # -> /about/index.html item.identifier + 'index.html'end

route '*' do # /about/ # -> /about.html

Page 82: statische sites met nanoc

route '*' do # /about/ # -> /about/index.html item.identifier + 'index.html'end

route '*' do # /about/ # -> /about.html item.identifier.chop + '.html'end

Page 83: statische sites met nanoc
Page 84: statische sites met nanoc

route '/style/*/' do

Page 85: statische sites met nanoc

route '/style/*/' do # /style/screen/ # -> /style/screen-v15.css

Page 86: statische sites met nanoc

route '/style/*/' do # /style/screen/ # -> /style/screen-v15.css item.identifier.chop +

Page 87: statische sites met nanoc

route '/style/*/' do # /style/screen/ # -> /style/screen-v15.css item.identifier.chop + "-v#{item[:version]}" +

Page 88: statische sites met nanoc

route '/style/*/' do # /style/screen/ # -> /style/screen-v15.css item.identifier.chop + "-v#{item[:version]}" + '.css'end

Page 89: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

Page 90: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '/images/*/' doend

Page 91: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '/images/*/' doend

compile '/images/*/', :rep => :thumb do

Page 92: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '/images/*/' doend

compile '/images/*/', :rep => :thumb do filter :thumbnail, :size => '100x80'end

Page 93: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

Page 94: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

route '/images/*/' do

Page 95: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

route '/images/*/' do item.identifier.chop + item[:extension]end

Page 96: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

route '/images/*/' do item.identifier.chop + item[:extension]end

route '/images/*/', :rep => :thumb do

Page 97: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

route '/images/*/' do item.identifier.chop + item[:extension]end

route '/images/*/', :rep => :thumb do item.identifier.chop + '-thumb' + item[:extension]end

Page 98: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

route '/images/*/' do item.identifier.chop + item[:extension]end

route '/images/*/', :rep => :thumb do item.identifier.chop + '-thumb' + item[:extension]end

content/images/blah.jpg

Page 99: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

route '/images/*/' do item.identifier.chop + item[:extension]end

route '/images/*/', :rep => :thumb do item.identifier.chop + '-thumb' + item[:extension]end

content/images/blah.jpg

output/images/blah.jpg

Page 100: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

route '/images/*/' do item.identifier.chop + item[:extension]end

route '/images/*/', :rep => :thumb do item.identifier.chop + '-thumb' + item[:extension]end

content/images/blah.jpg

output/images/blah.jpgoutput/images/blah-thumb.jpg

Page 101: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

Page 102: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '/blog/*/', :rep => :mp3 do

Page 103: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '/blog/*/', :rep => :mp3 do filter :say

Page 104: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '/blog/*/', :rep => :mp3 do filter :say filter :lameend

Page 105: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '/blog/*/', :rep => :mp3 do filter :say filter :lameend

route '/blog/*/', :rep => :mp3 do

Page 106: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

compile '/blog/*/', :rep => :mp3 do filter :say filter :lameend

route '/blog/*/', :rep => :mp3 do item.identifier.chop + '.mp3'end

Page 107: statische sites met nanoc

Voordelen

Page 108: statische sites met nanoc

Statische web sites zijn snel!

Page 109: statische sites met nanoc

% curl -I http://nanoc.stoneship.org/

HTTP/1.1 200 OKContent-Type: text/html; charset=utf-8Accept-Ranges: bytesETag: "4207500908"Last-Modified: Sun, 10 Jun 2012 19:16:38 GMTContent-Length: 3418Date: Mon, 16 Jul 2012 09:45:17 GMTServer: lighttpd/1.4.31

Page 110: statische sites met nanoc

Bekijk je web sitein voorvertoningvoor ze live te gooien

Page 111: statische sites met nanoc

Gebruik je favorietetext/code editor (vim dus)

Page 112: statische sites met nanoc
Page 113: statische sites met nanoc

Hou je niet bezigmet security updates

Page 114: statische sites met nanoc

Update softwarezonder vrees dat je siteonbereikbaar wordt

Page 115: statische sites met nanoc

Maak je geen zorgen overeen vergeten mysqldumpbij het maken van backups.

Page 116: statische sites met nanoc

Onthoud de historiek:steek je website in een versiecontrolesysteem

Page 117: statische sites met nanoc
Page 118: statische sites met nanoc
Page 119: statische sites met nanoc

Werk samen aan een site

Page 120: statische sites met nanoc
Page 121: statische sites met nanoc

Maak verschillendebranches van je site.

Page 122: statische sites met nanoc
Page 123: statische sites met nanoc

Leuke nanoc Features

Page 124: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

Page 125: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

nanoc deploy

Page 126: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

Page 127: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

nanoc deploy --target=staging

Page 128: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

deploy:

default: kind: rsync dst: "ectype:sites/nanoc"

staging: kind: rsync dst: "ectype:sites/nanoc-staging"

Page 129: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

Page 130: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

nanoc check

Page 131: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

nanoc check

Soon!

Page 132: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

Page 133: statische sites met nanoc

compile '/assets/style/*/' do filter :sass, Compass.sass_engine_options

filter :relativize_paths, :type => :css filter :rainpress

end

% nanoc check ilinks elinksLoading site data...

Running internal_links checker... errorRunning external_links checker... ok

output/blog/21/index.html: [ ERROR ] internal_links - reference to ../../docs/api/3.1/

output/docs/6-guides/index.html: [ ERROR ] internal_links - reference to ../api/3.4/

… etc …

Page 134: statische sites met nanoc

Demo Time!

Page 135: statische sites met nanoc

Bijna Gereed

Page 136: statische sites met nanoc

Google “nanoc”

Page 137: statische sites met nanoc

freenode #nanoc

Page 138: statische sites met nanoc

Q & A

Page 139: statische sites met nanoc

Danku! ♥


Top Related