Wie funktioniert das Internet?
HTML und CSS für Anfänger
Jörg Kantel, 24. und 25. Januar 2013, aktualisiert am 14. und 21. August 2013
Der Client fragt:
(standardmäßig auf Port 80)
GET /index.html HTTP/1.1
User-Agent: Safari (Macintosh)
Accept: */*
Accept: image/gif>
Accept: image/jpeg
...
[Leerzeile (wichtig!)]
eventuell Daten
Der Server antwortet
(hoffentlich)
HTTP/1.1 200 OK
Server: Apache
MIME-version: 1.0
Content-Type: text/html
Last-modified: ...
Content-lenght: 1029
[Leerzeile (wichtig!)]
Body ... (HTML)
Was fällt daran auf?
- Die gesamte Kommunikation verläuft im Klartext (ASCII, UTF-8)
- Unverschlüsselt (auch Passwörter!)
- It's no Rocket Science!
- Bei der GET-Methode erfolgt die Parameterübergabe an den Server in der URL, bei der POST-Methode (mehr oder weniger) unsichtbar im Body der Anfrage.
Was sind Webserver?
Der erste Webserver der Welt lief auf dem Schreibtisch von Tim Berners-Lee am CERN.
Webserver-Software
- httpd (der klassische CERN-Webserver, immer noch die Referenzimplementierung des W3C)
- Apache (der Marktführer)
- lighttpd (schneller, kleiner Webserver, wird unter anderem von YouTube und Flickr eingesetzt)
- nginx (BSD-Lizenz, ebenfalls sehr schnell, wachsende Popularität)
- Zope (eigentlich ein Framework mit eigenem Server, wird viel am Institut eingesetzt)
Clients
The Web is a Writing Environment
Das sah zumindest Tim Berners-Lee so (Screenshot des ersten Browsers am CERN).
Teil 2: Hypertext/Hypermedia
Definition: Hypertext ist das Verfahren, Textpassagen untereinander durch Software-Links netzartig zu verknüpfen. Ted Nelson hatte es Mitte der sechziger Jahre, als an ein ziviles Internet noch nicht zu denken war, im Rahmen des Xanadu-Projekts mit der Absicht konzipiert, das digitalisierte Wissen der Menschheit effizienter zu organisieren.
Hypermedia
Der Begriff Hypermedia setzt sich zusammen aus den Wörtern Hypertext und Multimedia. Er bezeichnet ein verlinktes Dokument (oder verlinkte Dokumente), deren Knoten nicht nur Text-, sondern auch andere multimediale Elemente (Photo, Video, Audio etc.) sein können.
Das WWW war ursprünglich als Hypertext-Umgebung konzipiert worden (HTML: HyperTextMarkupLanguage).
Multimedia
- Neben Hypertext waren von Anfang an Bilder vorgesehen (JPEG, GIF, später kam noch PNG dazu)
- Audiodateien, Videos und andere interaktive Inhalte (Flash!) waren nicht vorgesehen, konnte daher bis vor kurzem (HTML5) nur über Plugins realisiert werden
- Ähnliches gilt für (Land-) Karten, interaktive Charts und andere nette Spielereien
Die Sprachen des Web (1)
Im Client
- HTML
- CSS (Cascading Style Sheet)
- JavaScript
Die Sprechen des Web (2)
Auf dem Server
- Im Prinzip alles, was das Betriebssystem kann
- Gängig sind aber in der Hauptsache Java, Perl, PHP, Python, Ruby, aber auch JavaScript (Node.js)
- Weite Verbreitung finden auch Servlet-Engines (meist in Java), die XML-Dateien mit Stylesheets kombinieren und daraus (HTML-) Seiten produzieren (Tomcat, Jetty, Railo)
HTML
Wichtig: HTML ist eine Auszeichnungs-, keine Programmiersprache!
Aktuelle HTML-Versionen
- HTML 4.0.1 (die letzte Version des »klassischen« HTML)
- XHTML 1.1 (HTML als »strenges« XML)
- HTML5 (zurück in die Zukunft – ursprünglich keine Idee des W3C)
HTML 4.0.1
- SGML-Anwendung (SGML-DTD) (DTD: Document Type Definition, eine formale Definition einer Sprache/Anwendung)
- Abschließende Tags konnten bei Eindeutigkeit weggelassen werden
- Case-insensitive (d.h.) <HTML>, <html>, aber auch <HtMl> waren nicht nur gültige Tags, sie bezeichneten auch alle das Gleiche
XHTML
- XML Anwendung (XML-DTD, wobei XML aber wiederum durch eine SGML-DTD definiert wird)
- Alle Tags mußten geschlossen werden (<html> ... </html>), wobei bei »solitären« Tags eine Kurzform erlaubt war (<br /> statt <br></br>)
- Case-sensitive: Nur noch Kleinschreibung der Tags erlaubt.
- Ist (im Prinzip) durch Namensräume beliebig erweiterbar (MathML, SVG, SMIL)
Zurück auf Anfang: HTML5
- HTML5 kann selber DTDs erstellen und ist in einer HTML5-DTD definiert (keine Abhänigkeiten mehr von SGML/XML)
- Sowohl die SGML-Variante (abschließende Tags können weggelassen werden) wie auch die XML-Variante (alle Tags müssen geschlossen werden) sind möglich
- Erweiterter Multimedia-Support (Audio, Video und SVG)
HTML5 (2)
- Enge Verzahnung mit JavaScript (Canvas), daher Unterstützung für Spiele und andere interaktive Zaubereien
- Wieder Case-insensitive, allerdings wird die Kleinschreibung empfohlen
Welches HTML soll ich nehmen?
- HTML 4.0.1 ist tot, allerdings ist die Zahl der (noch) existierenden HTML-4.0.1-Websites beachtlich, daher muß ich es für Wartungszwecke beherrschen.
- XHTML ist immer dann zu empfehlen, wenn die Website in eine XML-Anwendung eingebettet wird oder wenn größtmögliche Verbreitung gewünscht wird.
Welches HTML? (2)
- HTML5 ist noch nicht fertig, die Browserunterstützung ist noch nicht eindeutig, aber HTML5 ist eindeutig die Zukunft, speziell im Multimedia-Bereich (und das Netz ist multimedial)
Ich werde im Folgenden auf die Elemente eingehen, die in XHTML und HTML5 gleich sind und ein wenig auf die neue Audio- und Video-Unterstützung in HTML5. Alles weitere zu HTML5 eventuell in einem späteren Lehrgang.
HTML-Struktur
Die einfachst-mögliche HTML-Seite:
<hmtl>
<head>
<title>Meine HTML-Seite</title>
</head>
<body>
<h1>Hallo Welt</h1>
</body>
</html>
Nicht ganz standardkonform, aber die meisten Browser interpretieren das korrekt.
HTML 4.0.1 Header
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>HTML 4.0.1 Header</title>
</head>
<body>
Your HTML here …
</body>
</html>
XHTML Header
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>XHTML-Header</title>
</head>
<body>
Your HTML here …
</body>
</html>
HTML5 Header
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<title>HTML5 Header</title>
</head>
<body>
Your HTML here …
</body>
</html>
Warum dann HTML5?
- HTML5 ist die Zukunft des Publizierens
- Epub und Mobi (eigentlich auch nur HTML) sind nur Übergangslösungen
Was ist HTML5?
- HTML (für den Inhalt – Modell)
- CSS3 (für das – responsive – Layout – View)
- JavaScript (für die Interaktion) – Controller
- Vgl. Modell View Controller (MVC) in der Wikipedia
Weiter …?
Das war der schwierige Teil …
- Das HTML zwischen <body> ... </body> ist in den verschiedenen HTML-Flavours im Prinzip identisch
- Lediglich die neuen Elemente in HTML5 gibt es in den beiden anderen Varianten nicht
- HTML unterscheidet zwischen block- und inline-Elementen
Block-Elemente
Block-Elemente dienen der Gleiderung eines Dokuments, kennzeichnen also Absätze, Überschriften und Ähnliches.
- div (ab XHTML) erlaubt es, verschiedene Teile eines Dokuments unter einer einheitlichen Bezeichnung zusammenzufassen.
- h1 bis h5 stehen für Überschriften, dabei geht die Rangfolge von h1 (ganz groß und fett) bis h5 (kaum noch als Überschrift erkennbar)
Block-Elemente (2)
- p steht für Paragraph und klammert einen Absatz ein
- table steht für eine Tabelle (später mehr)
- blockquote steht für längere Zitate, die in der Regel als eingerückter Absatz dargestellt werden
Block-Elemente (3)
- object steht für die Einbindung eines Fremdobjektes mit Hilfe eines Plugins (meist Videos, Audios etc.) Wird häufig zusammen mit dem (nicht standardkonfomren embed-Tag verwendet, damit auch der dümmste Browser es noch versteht). object ist eigentlich in HTML5 veraltet, aber dennoch auch dort in Gebrauch.
- Mit iframe können HTML-Seiten in die aktuelle Seite eingebettet werden. Vorsicht! Gefahr von Urheberrechtsverletzungen!
Es versteht sich von selbst, daß alle Block-Elemente mit einem schließenden Tag versehen werden müssen.
Inline Elemente
- b steht für bold und bedeutet fett
- i steht für italic und bedeutet kursiv (allerdings ist es meistens keine echte Kursive, sondern einfach eine schräggestellte Schrift)
- strong ist eine besondere Hervorhebung und wird ebenfalls fett dargestellt
- em steht für emphazise und ist eine einfache Hervorhebung, die kursiv dargestellt wird.
Inline Elemente (2)
Bei diesen vier Elementen hat HTML eine Unterscheidung zwischen semantischer und syntaktischer Auszeichnung versucht, da dies aber generell sehr inkonsistent gehandhabt wurde, ist das ziemlich in die Hose gegangen.
Inline Elemente (3)
- sup steht für superior hochgestellt
- sub steht für tiefgestellt
- tt steht für teletype und stellt eine nichtproportionale Schreibmschinenschrift zur Verfügung
- span macht eigentlich gar nichts, sondern ist eine leere Klammer für Elemente, die mit Attributen versehen werden sollen.
Inline Elemente (4)
- cite steht für (Kurz-) Zitat und wird meistens kursiv dargestellt. Dabei ist diese Verwendung von cite eigentlich ein großes Mißverständnis, denn wenn ich die Definition richtig verstanden habe, steht die Verwendung von cite eigentlich eher für die Quellenangabe, denn für das Zitat. Aber es wird nun mal von aller Welt so verwendet.
Inline Elemente (5)
- code steht für Codeschnipsel oder ganze Programme und wird in der Regel ebenfalls in einer nichtproportionalen Schreibmaschinenschrift dargestellt (mir ist nicht ganz klar ob code nicht eigentlich auch als Blockelement Verwendung finden kann).
- pre übernimmt auch die Zeilenumbrüche im Text und wird in der Regel zusammen mit code verwendet. Auch pre ist eigentlich eher ein Blockelement, das auch als Inline-Element Verwendung findet.
Inline Elemente (6)
- br steht für einen Zeilenumbruch (ist ein Solitärtag: <br />)
- hr steht für horizontal ruler und zieht eine waagrechte Linie (ebenfalls ein Solitärtag <hr />)
- nobr (no break) klammert Text, der nicht umgebrochen werden soll (Vorsicht: Kann – wie auch pre – zu horizontalen Scollbalken-Orgien führen)
Bilder
<img src="http://mein-server-de/clara.jpg" width="450" height="303" alt="Clara, das Rhinozeros" />
Tags können auch Attribute haben!
Bilder im Text
<img src="http://mein-server-de/freiheit.jpg" width="255" height="276" alt="'La Liberté ou la Mort' von Jean-Baptiste Regnault" align="right" hspace="8" vspace="4" />
Die meisten der Attribute werden aber heutzutage in der Regel via CSS gesetzt.
Hyperlinks
Hier geht es zu <a href="http://www.spiegel.de/">Spiegel Online</a>.
Hier geht es zu Spiegel Online.
Hier geht es zu <a href="http://www.spiegel.de/" target="_blank" title="Hier geht es zu Spiegel Online">Spiegel Online</a>.
Hier geht es zu Spiegel Online.
Listen 1: Einfache Listen
<ul>
<li>Kapitel 1: Der Anfang</li>
<li>Kapitel 2: Fortsetzung ...</li>
</ul>
- Kapitel 1: Der Anfang
- Kapitel 2: Fortsetzung ...
Listen 2: Geordnete Listen
<ol>
<li>Das Kapitel am Anfang</li>
<li>Das Kapitel, das darauf folgt</li>
</ol>
- Das Kapitel am Anfang
- Das Kapitel, das darauf folgt
Listen 3: Gemischte Listen
<ul>
<li>Kapitel 1: Der Anfang</li>
<ol>
<li>Am Anfang war das Wort</li>
<li>Und das Wort ist Fleisch geworden</li>
</ol>
<li>Kapitel 2: Fortsetzung ...</li>
</ul>
- Kapitel 1: Der Anfang
- Am Anfang war das Wort
- Und das Wort ist Fleisch geworden
- Kapitel 2: Fortsetzung ...
Definitionslisten
<dl>
<dt><b>Blattlaus</b></dt>
<dd>Die gefräßige Blattlaus schädigt den Kumquat-Baum,
indem sie seine Blätter frißt.</dd>
<dt><b>Borkenkäfer</b></dt>
<dd>Die Larven des Borkenkäfers werden unter die Rinde abgelegt
und verzehren von dort den Kumquat-Baum von innen.</dd>
</dl>
- Blattlaus
- Die gefräßige Blattlaus schädigt den Kumquat-Baum, indem sie seine Blätter frißt.
- Borkenkäfer
- Die Larven des Borkenkäfers werden unter die Rinde abgelegt und verzehren von dort den Kumquat-Baum von innen.
Tabellen
- Tabellen waren früher einmal extrem wichtig, weil mit ihnen – mangels Alternative – selbst komplexeste Layouts verwirklicht wurden.
- Heute verwendet man für Layouts nur noch CSS (hoffentlich!), Tabellen werden daher nur noch für »wirkliche« Tabellen und daher viel seltener genutzt.
Tabellen – der Code
<table border="1" cellpadding="8" cellspacing="0" width="90%" align="center">
<tr>
<th> </th><th>Stuttgart</th><th>Berlin</th>
</tr>
<tr>
<th align="left">Einwohner</th>
<td align="right">595.000</td>
<td align="right">3.405.000</td>
</tr>
<tr>
<th align="left">Fläche</th>
<td align="right">207 km<sup>2</sup></td>
<td align="right">891 km<sup>2</sup></td>
</tr>
</table>
In der Regel werden heutzutage die Attributwerte für Tabellen ebenfalls via CSS vergeben. Das sorgt für ein einheitliches Aussehen aller Tabellen in einem Dokument (und spart Schreibarbeit).
HTML-Farben
Farbe | Hex-Wert |
Farbe | Hex-Wert |
|
#ffffff |
|
#000000 |
|
#ff0000 |
|
#00ff00 |
|
#0000ff |
|
#cccccc |
|
#3993ff |
|
#ff1c92 |
- Farben werden in HTML im RGB-Farbschema in einer Hex-Notation dargestellt.
HTML-Farben
- Dabei entspricht das erste Zahlenpaar dem Rot-Anteil (R), das zweite Zahlenpaar dem Grünanteil (G) und das dritte Zahlenpaar dem Blauanteil (B)
- Jeder Farbanteil kann so den Wert von 0 - 255 annehmen, das ergibt 255*255*255 = 16.581.375 verschiedene Farben.
Entities
Zeichen | Entity | UTF-8 |
Zeichen | Entitiy | UTF-8 |
Ä | Ä | Ä |
ä | ä | ä |
Ö | Ö | Ö |
ö | ö | ö |
Ü | Ü | Ü |
ü | ü | á |
ß | ß | ß |
§ | § | § |
< | < | < |
> | > | > |
& | & | & |
° | ° | ° |
€ | € | € |
¢ | ¢ | ¢ |
Entities (2)
- Die Zeichen <, > und & besitzen in XML und HTML eine Sonderstellung und müssen daher immer kodiert werden
- Das führt zu <- und >-Orgien, wenn man den Quelltext von HTML- und XML-Seiten im Web veröffentlichen will (aber auch einige andere Programmiersprachen sind da sehr anfällig)
- Ansonsten muß man in Zeiten von UTF-8 andere Entities kaum noch verwenden
CSS
CSS: Cascading Style Sheets
- Inline Styles
- Eingebettete Stylesheets
- Externe Stylesheets
Inline Styles
<p style="color:red; background:yellow;">
Vorsicht! Dieser Text verursacht Augenkrebs!</p>
Vorsicht! Dieser Text verursacht Augenkrebs!
Inline Styles (2)
<p>Niemand liest die
<b style="color:white; background-color:red">BLÖD<b>-Zeitung.</p>
Niemand liest die BLÖD-Zeitung.
Inline Styles (3)
<p>Alle meine Photos sind auf
<strong style="color:#3993ff">flick<span style="color:#ff1c92">r</span>
</strong>.</p>
Alle meine Photos sind auf flickr.
Eingebettete Stylesheets
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<title>Das hat Stil!</title>
<style type="text/css">
h1 {color:red;}
p {font-size:12px;color:gray;}
</style>
</head>
<body>
<h1>Hallo rote Welt!</h1>
<p>Dieser Text ist grau und hat eine Größe von 12 Pixeln.</p>
</body>
</html>
Externe Stylesheets
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<title>Das hat (noch mehr) Stil!</title>
<link rel="stylesheet" type="text/css" href="default.css">
</head>
<body>
<h1>Hallo rote Welt!</h1>
<p>Dieser Text ist grau und hat eine Größe von 12 Pixeln.</p>
</body>
</html>
Externe Stylesheets
Und so sieht die Datei default.css aus:
h1 {
color: red;
}
p {
font-size: 12px;
color: gray}
Der andere Umbruch ist nur der Übersichtlichkeit geschuldet.
Klassen und IDs
- Klassen: Einer für Alle
- IDs: Es kann nur einen geben
Klassen
Im HTML-Dokument:
<div class="maincontent">
Im Stylesheet:
.maincontent {
font-size: 12px;
}
IDs
Im HTML-Dokument:
<div id="footer">
<div id="header">
Im Stylesheet
#footer {
font-size: 9px;
}
#header {
margin-left: 8px;
text-decoration: underline;
}
Frühe Experimente (1)
Auch mit Stylesheets kann man Augenkrebs erzeugen!
Frühe Experimente (Quelltext)
HTML:
<BODY BGCOLOR="#FF0000" LINK="#FFFFFF" ALINK="#000000" VLINK="#FFFFFF">
<SPAN ID="name">jörg</SPAN>
<SPAN ID="subt">www.schockwellenreiter.de</SPAN>
<DIV ID="text">
Diese Seiten sind mein Experimentierfeld. Sie dienen dazu,
Versuche mit Cascading Style Sheets und anderen DHTML-Elementen
anzustellen, um irgendwann einmal ein Design zu finden, das auch
der <A HREF="http://www.stylepolice.de/">stylepolice</A>
genügt.</DIV>
</BODY>
Frühe Experimente (1 - CSS)
body {
margin-left: 10em;
margin-right: 10em;
}
#name {
font-family: Verdana, Helvetica, sans-serif;
font-style: italic;
font-weight: bold;
font-size: 100px;
color: blue;
position: absolute;
top: 100px;
left: 250px;
}
#subt {
font-family: Times, serif;
font-size: 60px;
color: #999933;
position: absolute;
top: 145px;
left: 50px;
}
Frühe Experimente (2 - CSS)
#text {
font-family: Verdana, Helvetica, sans-serif;
font-size: 18px;
line-height: 36px;
color: white;
position: absolute;
top: 210px;
left: 250px;
}
a {
text-decoration: none;
}
Frühe Experimente (2)
Frühe Experimente (3)
Frühe Experimente (4)
Ein Beispiel aus meinem Buch
Zum Nachbauen … (Seite 105-110)
Clara ohne Stil
Das ist die Seite in HTML pur (ohne CSS).
Clara mit Stil
Und dann ein wenig CSS-Zauberei und aus der gleichen HTML-Datei wird diese Seite.
Ein kleines Projekt
Eine persönliche Homepage ansprechend gestalten
Die Ordner und Dateien
Das HTML5-Grundgerüst
<!DOCTYPE html>
<html lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="css/jj.css" type="text/css" />
<title>Jörg Kantel und Joey</title>
</head>
<body>
</body>
</html>
Die ersten CSS-Anweisungen
body {
background-image: url("jj.jpg");
background-repeat: no-repeat;
background-attachment: fixed;
background-position: center center;
background-size: cover;
-moz-background-size: cover;
-webkit-background-size: cover;
-o-background-size: cover;
}
Die letzten drei Zeilen machen das Stylesheet auch für ältere Browser fit: -moz- für Firefox 3.6, -webkit- für Safari 3 und Chrome 1 und -o- für Opera 9.5.
Zwischenergebnis 1
Zum Photo
- Das Photo sollte mindestens eine Breite von 1.920 Pixeln besitzen um auch auf größeren Monitoren noch gut auszusehen.
- Es sollte im Seitenverhältnis von ungefähr 16:9 oder 16:10 vorliegen
- Es sollte Platz für den Text bieten
Die Vorstellung
Im <body>
der HTML-Seite:
<h1>Jörg Kantel und Joey</h1>
<h2>Chaoten auf sechs Pfoten</h2>
Und im Stylesheet:
h1 {
font-family: Verdana, sans-serif;
font-size: 350%;
color: #ffffff;
margin: 10% 5% 10px 5%;
}
h2 {
font-family: Verdana, sans-serif;
font-size: 200%;
color: #ffffff;
margin: 0% 5% 10px 5%;
}
Zwischenergebnis 2
Ein wenig Text hinzugefügt:
<div id="article">
<p>
Jörg und der Sheltie Joey bevölkern seit
Mai 2013 die Agility-Turnierplätze der
Republik. Unser lautstarkes Motto lautet:
»Shelties bellen nicht!«</p>
<p>
Das Ergebnis unserer bisherigen
sportlichen Erfolge läßt sich so
zusammenfassen: »Der Hund ist gut,
aber an dem Hundeführer müssen wir noch
arbeiten.«</p>
</div>
Und ein wenig CSS:
#article {
font-family: Georgia, Times, "Times New Roman", serif;
font-size: 200%;
color: #ffffff;
text-shadow: 1px 1px 0 #333333;
width: 50%;
max-width: 600px;
margin: 0% 5% 10px 5%;
}
Der leichte Schatten im Text bewirkt, daß dieser auch vor hellem Hintergrund gut lesbar bleibt. Daher habe ich ihn mit 3px für den <h1>- und mit 2px für den
<h2>-Tag ebenfalls noch eingefügt.
Zwischenergebnis 3
… und Links
HTML:
<p>
Trefft uns auf <a href="https://www.facebook.com/joerg.kantel">
<strong style="color:#ffffff; background-color: #3B5998; padding: 2px;">
facebook</strong></a> und
<a href="http://www.flickr.com/photos/schockwellenreiter/?details=1">
<strong style="color:#3993ff">flick<span
style="color:#ff1c92">r</span></strong></a>.</p>
… und Links
CSS:
a {
font-family: Verdana, sans-serif;
text-decoration: none;
}
a:hover {
opacity: .6;
transition: opacity .4s ease;
-moz-transition: opacity .4s ease;
-webkit-transition: opacity .4s ease;
-o-transition: opacity .4s ease;
}
Voilà …
Helfen lassen (1)
Template Engines
- Template Engines trennen zwischen Layout und Inhalt
- Erst beim Herausschreiben werden Layout, Stylesheets und evtl. JavaScript zu einer Webseite/Website zusammengefügt (man nennt diesen Vorgang »rendern«)
- Außerdem können die meisten Template Engines mit Makrosprachen erweitert werden
- Mein Favorit auf dem Mac: RubyFrontier
- Plattformübergreifend und für größere Projekte (mehrere tausend Seiten) geeignet: Perl Template Toolkit
- Und dann ist da noch Webby (noch nicht getestet)
RubyFrontier (1)
RubyFrontier (2)
- Läuft als Plugin im Texteditor TextMate, daher Mac only
- Makrosprache(n) ERB und Ruby
- Automatische Linkverwaltung -- die kostet allerdings Rechenpower und daher ist bei großen Projekten (> 3.000 Seiten) eine Designstrategie notwendig
- Fast alle meine Seiten werden derzeit mit RubyFrontier gepflegt
- Ich schreibe gerade an einem Buch über RubyFrontier
Perl Template Toolkit (1)
Perl Template Toolkit (2)
- Der Methusalem unter den Template-Toolkits (seit 1996)
- Schnell (kompiliert nach Perl vor der Ausführung) und daher auch für sehr große Projekte geeignet
- Plattformübergreifend (läuft überall dort, wo Perl läuft)
- Makrosprache(n): Eigene und Perl
- Eine etwas steilere Lernkurve als RubyFrontier, dafür im Endeffekt aber auch sehr viel mächtiger
- In meinem Blog gibt es ein (derzeit) dreiteiliges Tutorial über das Perl Template Toolkit (und Bootstrap – dazu später) (Teil 1, Teil 2, Teil 3 – wird fortgesetzt)
Helfen lassen (2)
MAMP
MAMP
- MAMP (GPL) ist ein Entwicklungswebserver für den Mac
- MAMP steht für Macintosh, Apache, MySQL und PHP
- Nicht für die Produktion geeignet
- Völlig unabhängig vom übrigen Betriebssystem. Hat man sich vergaloppiert, wirft man einfach den MAMP-Ordner weg und installiert MAMP neu
- Eine ähnliche, aber plattformübergreifende Lösung ist XAMPP
Helfen lassen (3)
Bootstrap
Bootstrap
- Bootstrap ist ein Open-Source (Apache-Lizenz) CSS- und JavaScript-Framework (von Twitter)
- Es wurde für die schnelle und elegante Entwicklung von Webseiten mit HTML5, CSS und JavaScript konzipiert
- Es kann sowohl festes wie auch responsives Design (ein Design, daß sich der Größe der Ausgabegeräte (Bildschirm, Tablet, Smartphone) anpaßt)
- Das Layout basiert auf einem Grid-System, das die Seite in 12 gleichgroße Spalten aufteilt
- Es gibt auch noch andere, ähnliche Frameworks, aber die habe ich noch nicht getestet
Bootstrap (2)
Eine Bootstrap-Site muß nicht wie eine Bootstrap-Site aussehen (diese Site wurde von mir mit Bootstrap und RubyFrontier gebaut)
Entwicklungsumgebung
Für die Entwicklung von HTML-Seiten genügt eigentlich ein normaler Texteditor, es macht die Sache aber einfacher, wenn man sich eine Entwicklungsumgebung einrichtet:
- Text-Editor: Ich nutze TextMate für RubyFrontier und TextWrangler für das Perl Template Toolkit
- Ein lokaler Entwicklungs-Webserver zum Testen: MAMP oder XAMPP
- Ein (S)FTP-Client: Ich nutze Cyberduck (Open Source), der kann auch mit Amazon S3 umgehen (Kurz-Tutorial)
Entwicklungsumgebung (2)
- Ein (einfaches) Bildbearbeitungs-Programm: Thorsten Lemkes GraphiConverter ist hier das Werkzeug meiner Wahl, aber auch die beiden freien Pakete ImageJ und GIMP sind dafür gut geeignet.
- Synchronisation und/oder Versionverwaltung: Meine Empfehlung ist GitHub – ich habe darüber ein Tutorial geschrieben –, für Ein-Mann- oder Ein-Frau-Projekte reichen aber auch die Dropbox oder ähnliche (Spideroak, Wuala, Google Drive) Cloud-Speicher.
Von der Website zur App
Mit
- HTML5,
- CSS3 und
- JavaScript
lassen sich mittlerweile Anwendungen bauen, die von einer nativen Applikation auf dem Desktop, dem Tablet oder dem Smartphone nicht mehr zu unterscheiden sind. Doch das ist der Stoff für ein weiteres Tutorial.