EXPRESS.JS
• node.js basiertes Web Framework
• Inspiriert von Sinatra (Ruby), analog zu Silex (PHP)
• asynchron
• http://expressjs.com/
Slide 31
Slide 31 text
EXPRESS.JS
var express = require('express'),
app = new express();
app.get('/', function(req, res){
res.send('Hello, Munich!');
});
app.listen(8080);
Slide 32
Slide 32 text
STARTEN DER APP
$ node server.js
Slide 33
Slide 33 text
IM BROWSER
http://localhost:8080/index.html
Slide 34
Slide 34 text
Demo
Web App
Slide 35
Slide 35 text
FRAGEN? HILFE?
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
STRUKTUR
• HTML (Templates)
• CSS
• JavaScript (Libraries und eigener Code)
• LESS/SASS
• Tests (lassen wir mal aussen vor)
• Medien wie Bilder, Fonts, Audio, Video, usw
Slide 38
Slide 38 text
Hallo, München
Hallo, München
Slide 39
Slide 39 text
Hallo, München
Hallo, München
Slide 40
Slide 40 text
Hallo, München
Hallo, München
Slide 41
Slide 41 text
Hallo, München
Hallo, München
Slide 42
Slide 42 text
Hallo, München
Hallo, München
Slide 43
Slide 43 text
Hallo, München
Hallo, München
Slide 44
Slide 44 text
Hallo, München
Hallo, München
Slide 45
Slide 45 text
Hallo, München
Hallo, München
Slide 46
Slide 46 text
No content
Slide 47
Slide 47 text
Slide 48
Slide 48 text
Demo
Web App
Slide 49
Slide 49 text
No content
Slide 50
Slide 50 text
Demo
Web App
Slide 51
Slide 51 text
data-*
Slide 52
Slide 52 text
Demo
Web App
Slide 53
Slide 53 text
CONTENTEDITABLE
Slide 54
Slide 54 text
Demo
Web App
Slide 55
Slide 55 text
Slide 56
Slide 56 text
Demo
Web App
Slide 57
Slide 57 text
No content
Slide 58
Slide 58 text
JSLINT
Slide 59
Slide 59 text
JSLINT
• „The JavaScript Quality Tool“
• http://www.jslint.com/
• Integriert in
• CLI
• IDE
Slide 60
Slide 60 text
“USE STRICT”
Slide 61
Slide 61 text
STRICT MODE
MEHR FEHLER
• keine versehentlichen globals (ReferenceError)
• Schärfere Regeln bei Zuweisungen
• Non-writable, getter-only, neue Properties bei non-extensible Objekten
• Kein Löschen von nicht löschbaren Eigenschaften (prototype)
• Eindeutige Propertynamen
• Eindeutige Namen für Argumente (function (a, a, b)...)
• Keine Oktalnotation (z.B. 012 - SyntaxError)
Slide 62
Slide 62 text
STRICT MODE
EINFACHERE BENUTZUNG
• “with” ist verboten
• (var x = 1; with (obj) { x};)
• Keine neuen Variablen mit “eval”
• eval(“var x”);
• Keine Variablen löschen
• var x = 123; delete x;
Slide 63
Slide 63 text
STRICT MODE
EINFACHERE BENUTZUNG
• “with” ist verboten
• (var x = 1; with (obj) { x};)
• Keine neuen Variablen mit “eval”
• eval(“var x”);
• Keine Variablen löschen
• var x = 123; delete x;
Slide 64
Slide 64 text
STRICT MODE
EVAL & ARGUMENTS
• eval und arguments können nicht mehr mit anderen Werten
belegt oder an einen Kontext gebunden werden
• arguments kann nicht mehr durch Aliases verändert werden
• function func(arg) { var arg = 15; return [arg,
arguments[0]]};
• arguments.callee existiert nicht mehr - TypeError
Slide 65
Slide 65 text
STRICT MODE
SICHERHEIT
• Kein Zugriff mehr auf das globale Objekt aus Funktionen
• function f() { return this; } - undefined
• Kein Zugriff auf func.arguments und func.caller von außerhalb
• Kein Zugriff auf Variablen in einer Funktion von außerhalb
Slide 66
Slide 66 text
STRICT MODE
• Reservierte Wörter: implements, interface, let, package,
private, protected, public, static, und yield
• Keine Funktionsdefinition in Bedingungen und Schleifen
Slide 67
Slide 67 text
Demo
Web App
Slide 68
Slide 68 text
FRAGEN?
Slide 69
Slide 69 text
KONTAKT
Sebastian Springer
sebastian.springer@mayflower.de
Mayflower GmbH
Mannhardtstr. 6
80538 München
Deutschland
@basti_springer
https://github.com/sspringer82
Thorsten Rinne
[email protected]
Yatego GmbH
Kobellstr. 15
80336 München
Deutschland
@ThorstenRinne
https://github.com/thorsten