SlideShare a Scribd company logo
Dart != JavaScript
       Christian Grobmeier
     http://www.grobmeier.de
            @grobmeier
Was ist falsch
an JavaScript?
JavaScript „false“:


   false, 0, „“,
 undefined, null


#1
Batterien selbst besorgen.


 jQuery et al ist
    Pflicht.


#2
Segen oder Fluch?


 Keine Typen


#3
1000 und 1 Möglichkeit


 Vererbung


#4
Patterns helfen:


 Namespace


#5
Jeder Browser
ist ein Individuum.



#6
Nicht nett.
var a1 = new Array(1,2,3,4,5);
    var a2 = new Array(5);




#7
Einer für alle.
if( a === null || a === undefined)




#8
Fallstricke.
'' == '0'            //   false
0 == ''              //   true
0 == '0'             //   true
false == 'false'     //   false
false == '0'         //   true




#9
false == undefined   //   false
false == null        //   false
null == undefined    //   true
' trn ' == 0      //   true
Darwin wusste es.



#10
Verkaufs-
argumente
Native VM


Dart Source

                           JavaScript
                 dart2js
                            Engine




              Überall.
Dart != JavaScript
Pub
Nix neues.
Viele Libs.
Isolates.
Serverseitig.
JS -> Dart
Roadcrew.js
(https://github.com/grobmeier/Roadcrew.js
Use Case
<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>
function Roadcrew() {    JavaScript
   // Constructor
}

Roadcrew.prototype = {
   // Prototyp
};

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




Prototype
};

Roadcrew.another = function () {
   // Static Function
};
class RoadcrewController {
  var pages;
                              Dart
    RoadcrewController() {
       // Constructor
    }

    void act(e) {
       // Method




              Class
    }

    void static another() {
      // Static method
    }
}
JavaScript

 Properties kopieren
 Framework extend


Vererbung
Dart
class RoadcrewController
   extends C {
   ...
}

class C {

Vererbung
}
   ...
Dart
class A implements B {
    ...
}

abstract class B {


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

var act = function () {

Namespace
 console.log(test);
};
Dart
library Roadcrew;

import 'dart:html';

part ,RoadcrewController.dart';
part 'RoadcrewInterceptor.dart';



Namespace
part 'RoadcrewException.dart';
JavaScript
var myobj = (function() {
  var name = „CG“;
  return {
    getName = function() {
      return name;
    }


    Privacy
  }
}());
Dart

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



    Privacy
JavaScript


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



      Types
Dart

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


      Types
JavaScript
function RcErr(m,c,r){}

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

try {
  interceptor(d, data);


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

try {


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


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



     DOM
Dart

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




     DOM
JavaScript

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


     DOM
Dart

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


     DOM
});
Batterien
beigelegt
import 'dart:isolate';            Dart
echo() {
  port.receive((msg, reply) {
    reply.send('I received: $msg');
  });
}

main() {
  var sendPort = spawnFunction(echo);




     Isolates
  sendPort.call('Hello').then((reply) {
    print(reply);
  });
}
Mehr?
          Dart

  I/O
 JSON
Mirrors
Logging
   ...
Wo steht Dart?
 Diskussion
Danke!

  Christian Grobmeier
http://www.grobmeier.de
       @grobmeier
Image Credits
    Omikuji: 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)

More Related Content

PPT
Dart und JavaScript
PDF
Java script.trend(spec)
PDF
Modern Mobile Web Apps
PDF
Progressive Mobile Web Apps
PDF
JavaScript de qualidade: hoje, amanhã e sempre!
PDF
Discover ServiceWorker
PDF
Bookmarklets and you!
PDF
C/C++とWebAssemblyを利用したライブラリ開発
Dart und JavaScript
Java script.trend(spec)
Modern Mobile Web Apps
Progressive Mobile Web Apps
JavaScript de qualidade: hoje, amanhã e sempre!
Discover ServiceWorker
Bookmarklets and you!
C/C++とWebAssemblyを利用したライブラリ開発

What's hot (20)

PDF
ECMA2015 INSIDE
KEY
jQuery for designers
PDF
Java Script - Object-Oriented Programming
PDF
用 Javascript 實現你的想像
PDF
jQuery PLUGIN
PPTX
Jquery ui, ajax
PPT
Web App Mvc
PDF
Collection pipeline par Mathieu Godart
PDF
詳説WebAssembly
PPTX
JavaScript Assíncrono
PPTX
JS programowanie obiektowe
PDF
Prototype UI
PDF
ECMAScript 6 im Produktivbetrieb
PDF
Clase 7 el modelo
PDF
Primeiros passos-com-docker
PDF
Javascript Funcional - TDC Florianópolis 2017
PDF
Introduction to Service Worker
PDF
Working With Ajax Frameworks
PPTX
GRUNT - The JavaScript Task Runner
PDF
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
ECMA2015 INSIDE
jQuery for designers
Java Script - Object-Oriented Programming
用 Javascript 實現你的想像
jQuery PLUGIN
Jquery ui, ajax
Web App Mvc
Collection pipeline par Mathieu Godart
詳説WebAssembly
JavaScript Assíncrono
JS programowanie obiektowe
Prototype UI
ECMAScript 6 im Produktivbetrieb
Clase 7 el modelo
Primeiros passos-com-docker
Javascript Funcional - TDC Florianópolis 2017
Introduction to Service Worker
Working With Ajax Frameworks
GRUNT - The JavaScript Task Runner
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
Ad

More from Christian Grobmeier (6)

PDF
The "Why Should You Talk" Talk
PDF
Zen Programming
PDF
Go Mobile with Apache Cordova, Zagreb 2014
PDF
Apps with Apache Cordova and Phonegap
PDF
Dart @ JUG Saxony
PDF
World of Logging
The "Why Should You Talk" Talk
Zen Programming
Go Mobile with Apache Cordova, Zagreb 2014
Apps with Apache Cordova and Phonegap
Dart @ JUG Saxony
World of Logging
Ad

Dart != JavaScript

Editor's Notes