49
Dart und JavaScript Christian Grobmeier www.grobmeier.de @grobmeier

Dart und JavaScript

Embed Size (px)

DESCRIPTION

Präsentation für eine großen Dienstleister in München. 14.12.2012

Citation preview

Page 1: Dart und JavaScript

Dart und JavaScript

Christian Grobmeierwww.grobmeier.de

@grobmeier

Page 2: Dart und JavaScript

Quo Vadis? Quo Vadis? JavaScript?JavaScript?

Page 3: Dart und JavaScript

JavaScript „false“:

false, 0, „“, undefined, null

Page 4: Dart und JavaScript

Batterien selbst besorgen.

jQuery ist Pflicht.

Page 5: Dart und JavaScript

Segen oder Fluch?

Keine Typen

Page 6: Dart und JavaScript

1000 und 1 Möglichkeit

Vererbung

Page 7: Dart und JavaScript

Patterns helfen:

Namespace

Page 8: Dart und JavaScript

Jeder Browserist ein

Individuum.

Page 9: Dart und JavaScript

Nicht nett.

var a1 = new Array(1,2,3,4,5);var a2 = new Array(5);

Page 10: Dart und JavaScript

Einer für alle.

if(a === null || a === undefined){}

Page 11: Dart und JavaScript

Fallstricke.

'' == '0' // false0 == '' // true0 == '0' // truefalse == 'false' // falsefalse == '0' // truefalse == undefined // falsefalse == null // falsenull == undefined // true' \t\r\n ' == 0 // true

Page 12: Dart und JavaScript

Nur die Harten überleben.

Page 13: Dart und JavaScript

Verkaufs-Verkaufs-argumenteargumente

Page 14: Dart und JavaScript

Überall.

DartSource

DartVM

JavaScriptEngine

dart2js

Page 15: Dart und JavaScript
Page 16: Dart und JavaScript

PuPubb

PuPubb

Page 17: Dart und JavaScript

Nix Nix neues.neues.

Nix Nix neues.neues.

Page 18: Dart und JavaScript

Viele Viele Libs.Libs.Viele Viele Libs.Libs.

Page 19: Dart und JavaScript

Isolates.

Page 20: Dart und JavaScript

Serverseitig.

Page 21: Dart und JavaScript

JS -> Dart Roadcrew.js

github.com/grobmeier/Roadcrew.js

Page 22: Dart und JavaScript

<div class="page" id="tablePage"> <h1>Table Page</h1> <a href="#otherPage">Other</a></div>

<div class="page" id="otherPage"> <h1>Other Page</h1> <a href="#tablePage">Table</a></div>

Use Case

Page 23: Dart und JavaScript

function Roadcrew() { // Constructor}

Roadcrew.prototype = { // Prototyp};

Roadcrew.prototype.act = function () { // Function};

Roadcrew.another = function () { // Static Function};

.js

Page 24: Dart und JavaScript

class RoadcrewController { var pages;

RoadcrewController() { // Constructor }

void act(e) { // Method } void static another() { // Static method }}

Page 25: Dart und JavaScript

Properties kopierenFramework extend

.js

Page 26: Dart und JavaScript

class RoadcrewController extends C { ...}

class C { ...}

Page 27: Dart und JavaScript

class A implements B { ...}abstract class B { ...}

Page 28: Dart und JavaScript

function Roadcrew() { test = „blub“; var xyz = „bla“;}

var act = function () { console.log(test);};

.js

Page 29: Dart und JavaScript

library Roadcrew;

import 'dart:html';

part ,RCController.dart';part 'RCInterceptor.dart';part 'RCException.dart';

Page 30: Dart und JavaScript

var myobj = (function() { var name = „CG“; return { getName = function() { return name; } }}());

.js

Page 31: Dart und JavaScript

class Roadcrew { var _name = „CG“; _getTest() => name;}

Page 32: Dart und JavaScript

var test = „Christian“;test = true;test = 10.32;

.js

Page 33: Dart und JavaScript

class Roadcrew { String _name = „CG“; String _getTest() => name; List<DivElement> pages;}

Page 34: Dart und JavaScript

function RcErr(m,c,r){}

RcErr.prototype = new Error();RcErr.prototype.constructor = RcErr;

try { interceptor(d, data);} catch (error) { ...}

.js

Page 35: Dart und JavaScript

class RcEx { String msg = "An error..."; int c; RcEx(this.msg, [this.c = 1] );}

try { interceptors[pageId].act(d);} on RcEx catch(e) {}

Page 36: Dart und JavaScript

pages = $('.page');page = $('#myPage');

.js

Page 37: Dart und JavaScript

pages = queryAll('.page');page = query('#myPage');

Page 38: Dart und JavaScript

$("a").live( 'click', $.proxy(this,'goto'));

.js

Page 39: Dart und JavaScript

queryAll('a').forEach( (el) { el.on.click.add((e) { goto(e); }); });

Page 40: Dart und JavaScript
Page 41: Dart und JavaScript

import 'dart:isolate';

echo() {

port.receive((msg, reply) { reply.send('I received: $msg'); });}

main() {

var sendPort = spawnFunction(echo); sendPort.call('Hello').then((reply) { print(reply); });}

Page 42: Dart und JavaScript

<element name="x-click-counter"

constructor="CountComponent" extends="div"> <template> … </template>

<script type="…"> … </script> </element>

Page 43: Dart und JavaScript

<element name="x-click-counter" constructor="CountComponent" extends="div">

<template> <button on-click=”inc()">Click</button>

<span>{{count}}</span> </template>

</element>

Page 44: Dart und JavaScript

<element name="x-click-counter" constructor="CountComponent" extends="div”>

<script type="application/dart”> class CountComponent extends WebComponent { int count = 0; void inc() { count++; } } </script>

</element>

Page 45: Dart und JavaScript

<head><link rel="components” href="click.html"> </head><body>

<x-click-counter></x-click-counter>

<script type="application/dart"> main() {}</script>

Page 46: Dart und JavaScript

Mehr?

I/OJSON

MirrorsLogging

...

Page 47: Dart und JavaScript

Wo steht Wo steht Dart?Dart?

DiskussionDiskussion

Wo steht Wo steht Dart?Dart?

DiskussionDiskussion

Page 48: Dart und JavaScript

Danke!Christian Grobmeierwww.grobmeier.de

@grobmeier

Page 49: Dart und JavaScript

Image CreditsOmikuji: Flickr (jessleecuizon)Dollars: Flickr (401(K) 2012)

Pub: Flickr (ell brown)Dog: Flickr (joshme17)

Package: Flickr (lemonhalf)Threads: Flickr (The Big Quack)

Server: Flickr (getButterfly)School Bus: Flickr (loop_oh)

Batteries: Flickr (scalespeeder)Discussing Monks: Flickr (wonderlane)