Transcript
Page 1: Beyond HTML Internet Briefing

Beyond HTMLScriptsprachen, Frameworks, Templatesprachen und

vieles mehr

4. Dezember 2012Jens-Christian Fischer

@jcfischer

Freitag, 7. Dezember 12

Page 2: Beyond HTML Internet Briefing

Beyond HTMLScriptsprachen, Frameworks, Templatesprachen und

vieles mehr

4. Dezember 2012Jens-Christian Fischer

@jcfischer

Werkzeug

Freitag, 7. Dezember 12

Page 3: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 4: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 5: Beyond HTML Internet Briefing

1992Freitag, 7. Dezember 12

Page 6: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 7: Beyond HTML Internet Briefing

1998Freitag, 7. Dezember 12

Page 8: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 9: Beyond HTML Internet Briefing

2001Freitag, 7. Dezember 12

Page 10: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 11: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 12: Beyond HTML Internet Briefing

2012Freitag, 7. Dezember 12

Page 13: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 14: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 15: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 16: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 17: Beyond HTML Internet Briefing

http://flickr.com/photos/glennharper/49536169/

Freitag, 7. Dezember 12

Page 18: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 19: Beyond HTML Internet Briefing

Werkzeuge

The Way of the carpenter is to become proficient in the use of his tools, first to lay his plans with a true measure and then perform his work according to plan.

– Go Rin No Sho

Freitag, 7. Dezember 12

Page 20: Beyond HTML Internet Briefing

Software Tools

Freitag, 7. Dezember 12

Page 21: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 22: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 23: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 25: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 26: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 27: Beyond HTML Internet Briefing

HTMLCSS

JavaScript

Freitag, 7. Dezember 12

Page 28: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 29: Beyond HTML Internet Briefing

Offline

<!DOCTYPE HTML><html manifest="/cache.manifest"><body>...</body></html>

CACHE MANIFESTFALLBACK:/ /offline.htmlNETWORK:/tracking.cgiCACHE:/clock.css/clock.js/clock-face.jpg

http://diveintohtml5.info/offline.html

Freitag, 7. Dezember 12

Page 30: Beyond HTML Internet Briefing

Storage

http://diveintohtml5.info/storage.html

if (Modernizr.localstorage) { var foo = localStorage.getItem("key"); // ... localStorage.setItem("key", foo);} else { alert('No storage capabilities');}

Freitag, 7. Dezember 12

Page 31: Beyond HTML Internet Briefing

Websocketsvar sockets = new webSockets("ws://foo.example.com:8181/socket");

sockets.bind("open", function (msg) { debug(Verbindung steht!");});sockets.bind("close", function (msg) { debug("Verbindung verloren!");});sockets.bind("doStuff", function (msg) { var data = msg.data; if (data) { doSomething(data); }});

Freitag, 7. Dezember 12

Page 32: Beyond HTML Internet Briefing

Datei Zugriff<ol ondragstart="dragStartHandler(event)"> <li draggable="true" data-value="fruit-apple">Apples</li> <li draggable="true" data-value="fruit-orange">Oranges</li> <li draggable="true" data-value="fruit-pear">Pears</li></ol><script> var internalDNDType = 'text/x-example'; function dragStartHandler(event) { if (event.target instanceof HTMLLIElement) { // use the element's data-value="" attribute as the value to be moving: event.dataTransfer.setData(internalDNDType, event.target.dataset.value); event.dataTransfer.effectAllowed = 'move'; // only allow moves } else { event.preventDefault(); // don't allow selection to be dragged } }</script

http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-dragevent-and-datatransfer-interfaces

Freitag, 7. Dezember 12

Page 33: Beyond HTML Internet Briefing

Semantisch

http://slides.html5rocks.com/#new-form-types

Freitag, 7. Dezember 12

Page 34: Beyond HTML Internet Briefing

Multimedia

<audio id="audio" src="sound.mp3" controls></audio><video id="video" src="movie.webm" autoplay controls></video>

<script> document.getElementById("audio").muted = false; document.getElementById("video").play();</script>

Freitag, 7. Dezember 12

Page 35: Beyond HTML Internet Briefing

3D Graphik

http://slides.html5rocks.com/#canvas-3d

Freitag, 7. Dezember 12

Page 36: Beyond HTML Internet Briefing

Präsentation (CSS 3)

Freitag, 7. Dezember 12

Page 37: Beyond HTML Internet Briefing

Präsentation (CSS 3)Typographie (Webfonts)

Freitag, 7. Dezember 12

Page 38: Beyond HTML Internet Briefing

Präsentation (CSS 3)Typographie (Webfonts)

Rotation (2D / 3D)

Freitag, 7. Dezember 12

Page 39: Beyond HTML Internet Briefing

Responsive Design

Freitag, 7. Dezember 12

Page 40: Beyond HTML Internet Briefing

HTML Tools

http://www.flickr.com/photos/lynnfriedman/5570720402/

Freitag, 7. Dezember 12

Page 41: Beyond HTML Internet Briefing

<div id="profile"> <div class="left column"> <h4>Willkommen</h4> <p id="address"><%= current_user.address %></p> </div> <div class="right column"> <ul> <li id="email"><%= current_user.email %></li> <li id="bio"><%= current_user.bio %></li> </ul> </div></div>

HTML

profileleft column

address = current_user.address

right column

email = current_user.emailbio = current_user.bio

h4 Willkommenp

ul

lili

Freitag, 7. Dezember 12

Page 42: Beyond HTML Internet Briefing

HTML

profileleft column

address = current_user.address

right column

email = current_user.emailbio = current_user.bio

h4 Willkommenp

ul

lili

Freitag, 7. Dezember 12

Page 43: Beyond HTML Internet Briefing

HAML

profileleft column

address= current_user.addressright column

email= current_user.emailbio= current_user.bio

h4p

ullili

Freitag, 7. Dezember 12

Page 44: Beyond HTML Internet Briefing

#profile .left.column %h4 Willkommen %p#address= current_user.address .right.column %ul %li#email= current_user.email %li#bio= current_user

HAML

profileleft column

address= current_user.addressright column

email= current_user.emailbio= current_user.bio

h4p

ullili

Freitag, 7. Dezember 12

Page 45: Beyond HTML Internet Briefing

http://haml-lang.com/

Python, Lua, ASP.NET, .NET, PHP, PHP5, JavaScript, Perl, Scala, Java

Freitag, 7. Dezember 12

Page 46: Beyond HTML Internet Briefing

HAML

#profile .left.column %h4 Willkommen %p#address= current_user.address .right.column %ul %li#email= current_user.email %li#bio= current_user

profileleft column

address= current_user.addressright column

email= current_user.emailbio= current_user.bio

h4p

ullili

Willkommen

Freitag, 7. Dezember 12

Page 47: Beyond HTML Internet Briefing

Jade

profileleft column

address= current_user.addressright column

email= current_user.emailbio= current_user.bio

h4p

ullili

http://jade-lang.com/

Willkommen

Freitag, 7. Dezember 12

Page 48: Beyond HTML Internet Briefing

Jade

#profile .left.column h4 Willkommen p#address= current_user.address .right.column ul li#email= current_user.email li#bio= current_user

profileleft column

address= current_user.addressright column

email= current_user.emailbio= current_user.bio

h4p

ullili

http://jade-lang.com/

Willkommen

Freitag, 7. Dezember 12

Page 49: Beyond HTML Internet Briefing

Templates

http://www.flickr.com/photos/jima/460348206/

Freitag, 7. Dezember 12

Page 50: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 51: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 52: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 53: Beyond HTML Internet Briefing

{{ }}Mustache

http://mustache.github.com/

Freitag, 7. Dezember 12

Page 54: Beyond HTML Internet Briefing

<h1>{{header}}</h1>

{{#items}} {{#first}} <li><strong>{{name}}</strong></li> {{/first}} {{#link}} <li><a href="{{url}}">{{name}}</a></li> {{/link}}{{/items

Mustache Template

Freitag, 7. Dezember 12

Page 55: Beyond HTML Internet Briefing

JSON Daten

{ "header": "Colors", "items": [ {"name": "red", "first": true, "url": "#Red"}, {"name": "green", "link": true, "url": "#Green"}, {"name": "blue", "link": true, "url": "#Blue"} ],}

Freitag, 7. Dezember 12

Page 56: Beyond HTML Internet Briefing

Resultat

<h1>Colors</h1><li><strong>red</strong></li><li><a href="#Green">green</a></li><li><a href="#Blue">blue</a></li

Freitag, 7. Dezember 12

Page 57: Beyond HTML Internet Briefing

CSS Tools

http://www.flickr.com/photos/the-meir/2201434695/

Freitag, 7. Dezember 12

Page 58: Beyond HTML Internet Briefing

<font face="Arial Black">&nbsp;Google search, a <font color="#0000ff">new</font> service from</font><big><font face="Arial Black"><big><strong><font size="4"><a href="http://www.leicatime.com"><img src="favicon.gif" border="0" width="16" height="16"></a></font></strong></big></font></big><strong><br></strong><b><font face="Arial Black">ATTENTION: for my &quot;how to purchase&quot; INFO page, please <a target="_blank" href="a000-PURCHASE-info.htm">click HERE !</a>&nbsp; Partita IVA: IT 06822200587<br>--------------------------------------</font></b><br><font size="4"><strong><font color="#ff0000"><img alt="globeTurns.gif (7996 byte)" src="http://www.leicatime.com/globeTurns.gif" width="30" height="30"></font></strong></font><font size="5"><img border="0" src="http://www.leicatime.com/EuropeanUnionWte2.gif" width="75" height="50"></font><font size="5"><b><font size="1"><a href="http://www.leicatime.com/a000-CASES-line.htm" target="_blank"><img border="0" src="http://www.leicatime.com/LeicatimeBannerOK.jpg" width="141" height="75"></a></font></b><img src="http://www.leicatime.com/GianniFototesseraSmart.jpg" width="75" height="89"><font size="3"></font><font color="#800080" size="5" face="Arial Black">

http://leicatime.com/

Freitag, 7. Dezember 12

Page 59: Beyond HTML Internet Briefing

InhaltFormVerhalten

Freitag, 7. Dezember 12

Page 60: Beyond HTML Internet Briefing

Inhalt Form

Verhalten

Freitag, 7. Dezember 12

Page 61: Beyond HTML Internet Briefing

html css

javascript

Freitag, 7. Dezember 12

Page 62: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 63: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 64: Beyond HTML Internet Briefing

2744 Zeilen

Freitag, 7. Dezember 12

Page 65: Beyond HTML Internet Briefing

„Besseres“ CSS

Freitag, 7. Dezember 12

Page 66: Beyond HTML Internet Briefing

„Besseres“ CSS

SCSShttp://sass-lang.com/

Freitag, 7. Dezember 12

Page 67: Beyond HTML Internet Briefing

„Besseres“ CSS

SCSShttp://sass-lang.com/ http://lesscss.org/

Freitag, 7. Dezember 12

Page 68: Beyond HTML Internet Briefing

Vorteile

• Modular - includes

• Variablen

• Berechnungen

• Mixins

Freitag, 7. Dezember 12

Page 69: Beyond HTML Internet Briefing

SCSS#navbar { $navbar-width: 800px; $items: 5; $navbar-color: #ce4dd6;

width: $navbar-width; border-bottom: 2px solid $navbar-color;

li { float: left; width: $navbar-width/$items - 10px;

background-color: lighten($navbar-color, 20%); &:hover { background-color: lighten($navbar-color, 10%); } }}

Freitag, 7. Dezember 12

Page 70: Beyond HTML Internet Briefing

SCSS#navbar { $navbar-width: 800px; $items: 5; $navbar-color: #ce4dd6;

width: $navbar-width; border-bottom: 2px solid $navbar-color;

li { float: left; width: $navbar-width/$items - 10px;

background-color: lighten($navbar-color, 20%); &:hover { background-color: lighten($navbar-color, 10%); } }}

Variablen

Freitag, 7. Dezember 12

Page 71: Beyond HTML Internet Briefing

SCSS#navbar { $navbar-width: 800px; $items: 5; $navbar-color: #ce4dd6;

width: $navbar-width; border-bottom: 2px solid $navbar-color;

li { float: left; width: $navbar-width/$items - 10px;

background-color: lighten($navbar-color, 20%); &:hover { background-color: lighten($navbar-color, 10%); } }}

Variablen

Berechnungen

Freitag, 7. Dezember 12

Page 72: Beyond HTML Internet Briefing

SCSS#navbar { $navbar-width: 800px; $items: 5; $navbar-color: #ce4dd6;

width: $navbar-width; border-bottom: 2px solid $navbar-color;

li { float: left; width: $navbar-width/$items - 10px;

background-color: lighten($navbar-color, 20%); &:hover { background-color: lighten($navbar-color, 10%); } }}

Variablen

Berechnungen

Funktionsaufruf

Freitag, 7. Dezember 12

Page 73: Beyond HTML Internet Briefing

CSS

#navbar { width: 800px; border-bottom: 2px solid #ce4dd6; } #navbar li { float: left; width: 150px; background-color: #e5a0e9; } #navbar li:hover { background-color: #d976e0; }

Freitag, 7. Dezember 12

Page 74: Beyond HTML Internet Briefing

Browser Prefixe

Präfix Browser

-moz- Firefox

-webkit- Safari, Chrome

-o- Opera

-ms-, -mso- Internet Explorer

Freitag, 7. Dezember 12

Page 75: Beyond HTML Internet Briefing

.my-class, #my-id { border-radius: 1em; transition: all 1s ease; box-shadow: #123456 0 0 10px;}

Freitag, 7. Dezember 12

Page 76: Beyond HTML Internet Briefing

.my-class, #my-id { -moz-border-radius: 1em; -webkit-border-radius: 1em; -ms-border-radius: 1em; border-radius: 1em; -moz-transition: all 1s ease; -o-transition: all 1s ease; -webkit-transition: all 1s ease; -ms-transition: all 1s ease; transition: all 1s ease; -moz-box-shadow: #123456 0 0 10px; -webkit-box-shadow: #123456 0 0 10px; -ms-box-shadow: #123456 0 0 10px; box-shadow: #123456 0 0 10px; }

Freitag, 7. Dezember 12

Page 77: Beyond HTML Internet Briefing

@mixin rounded($side, $radius: 10px) { border-#{$side}-radius: $radius; -moz-border-radius-#{$side}: $radius; -webkit-border-#{$side}-radius: $radius;}

#navbar li { @include rounded(top); }#footer { @include rounded(top, 5px); }#sidebar { @include rounded(left, 8px); }

SCSS

Freitag, 7. Dezember 12

Page 78: Beyond HTML Internet Briefing

@mixin rounded($side, $radius: 10px) { border-#{$side}-radius: $radius; -moz-border-radius-#{$side}: $radius; -webkit-border-#{$side}-radius: $radius;}

#navbar li { @include rounded(top); }#footer { @include rounded(top, 5px); }#sidebar { @include rounded(left, 8px); }

Mixin

SCSS

Freitag, 7. Dezember 12

Page 79: Beyond HTML Internet Briefing

@mixin rounded($side, $radius: 10px) { border-#{$side}-radius: $radius; -moz-border-radius-#{$side}: $radius; -webkit-border-#{$side}-radius: $radius;}

#navbar li { @include rounded(top); }#footer { @include rounded(top, 5px); }#sidebar { @include rounded(left, 8px); }

Mixin Variable

SCSS

Freitag, 7. Dezember 12

Page 80: Beyond HTML Internet Briefing

#navbar li { border-top-radius: 10px; -moz-border-radius-top: 10px; -webkit-border-top-radius: 10px; }

#footer { border-top-radius: 5px; -moz-border-radius-top: 5px; -webkit-border-top-radius: 5px; }

#sidebar { border-left-radius: 8px; -moz-border-radius-left: 8px; -webkit-border-left-radius: 8px; }

CSS

Freitag, 7. Dezember 12

Page 81: Beyond HTML Internet Briefing

Modular

Freitag, 7. Dezember 12

Page 82: Beyond HTML Internet Briefing

WebKit

Freitag, 7. Dezember 12

Page 83: Beyond HTML Internet Briefing

WebKit

ist der neue IE 6

Freitag, 7. Dezember 12

Page 84: Beyond HTML Internet Briefing

JavaScript Tools

Freitag, 7. Dezember 12

Page 85: Beyond HTML Internet Briefing

JS DOM Frameworks

Freitag, 7. Dezember 12

Page 86: Beyond HTML Internet Briefing

Application Frameworks

Freitag, 7. Dezember 12

Page 87: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 88: Beyond HTML Internet Briefing

Tools

Socketstream

Freitag, 7. Dezember 12

Page 89: Beyond HTML Internet Briefing

Testing

Freitag, 7. Dezember 12

Page 90: Beyond HTML Internet Briefing

Jasmine

http://pivotal.github.com/jasmine/

describe("CreditCard", function() { it("cleans number by removing spaces and dashes", function() { expect(CreditCard.cleanNumber("123 4-5")).toEqual("12345"); }); it("validates based on mod 10", function() { expect(CreditCard.validNumber("4111 1111-11111111")).toBeTruthy(); expect(CreditCard.validNumber("4111111111111121")).toBeFalsy(); }); it("validates when text field loses focus", function() { loadFixtures("order_form.html"); $("#card_number").validateCreditCardNumber(); $("#card_number").val("123"); $("#card_number").blur(); expect($("#card_number_error")).toHaveText("Invalid credit card number."); $("#card_number").val("4111 1111-11111111"); $("#card_number").blur(); expect($("#card_number_error")).toHaveText(""); });});

Freitag, 7. Dezember 12

Page 91: Beyond HTML Internet Briefing

http://visionmedia.github.com/mocha/Freitag, 7. Dezember 12

Page 92: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 93: Beyond HTML Internet Briefing

Server

Freitag, 7. Dezember 12

Page 94: Beyond HTML Internet Briefing

node.js

var http = require('http');http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');}).listen(1337, '127.0.0.1');console.log('Server running at http://127.0.0.1:1337/');

Freitag, 7. Dezember 12

Page 95: Beyond HTML Internet Briefing

CoffeeScriptnumber = 42opposite = true

number = -42 if opposite

square = (x) -> x * x

list = [1, 2, 3, 4, 5]

math = root: Math.sqrt square: square cube: (x) -> x * square x

race = (winner, runners...) -> print winner, runners

alert "I knew it!" if elvis?

cubes = (math.cube num for num in list)

Freitag, 7. Dezember 12

Page 96: Beyond HTML Internet Briefing

var cubes, list, math, num, number, opposite, race, square, __slice = [].slice;

number = 42;

opposite = true;

if (opposite) { number = -42;}

square = function(x) { return x * x;};

list = [1, 2, 3, 4, 5];

math = { root: Math.sqrt, square: square, cube: function(x) { return x * square(x); }};

race = function() { var runners, winner; winner = arguments[0], runners = 2 <= arguments.length ? __slice.call(arguments, 1) : []; return print(winner, runners);};

if (typeof elvis !== "undefined" && elvis !== null) { alert("I knew it!");}

cubes = (function() { var _i, _len, _results; _results = []; for (_i = 0, _len = list.length; _i < _len; _i++) { num = list[_i]; _results.push(math.cube(num)); } return _results;})();

http://coffeescript.org/

Freitag, 7. Dezember 12

Page 97: Beyond HTML Internet Briefing

Freitag, 7. Dezember 12

Page 98: Beyond HTML Internet Briefing

http://www.flickr.com/photos/gruts/4612133889/

Freitag, 7. Dezember 12

Page 99: Beyond HTML Internet Briefing

Jens-Christian Fischer

[email protected]

@jcfischer

Freitag, 7. Dezember 12

Page 100: Beyond HTML Internet Briefing

Beyond HTML Präsentation am Internet Briefing von Jens-Christian Fischer steht unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Schweiz Lizenz.

Freitag, 7. Dezember 12