– Dead code can be eliminated.
– A little typing goes a long way.
– The DOM doesn't have to suck.
– Built-in syntax, your semantics.
– Classes for stating intent and good tools.
– Don't be evil: compile to Javascript.
For me the notion of swapping out existing client code compilation steps with a Dart compilation step might almost be worth it just for a legible, declarative class syntax. Throw in a vastly improved DOM API and some sensible syntax choices (e.g. same form for calling a getter as accessing a field, avoiding getFoo() boilerplate) and I'm half way to having a play.https://developer.mozilla.org/en/JavaScript/Reference/Operat... https://developer.mozilla.org/en/JavaScript/Reference/Global...
With that in mind, Dart just feels like CoffeeScript + jQuery's Sizzle + Underscore. I don't see how using jQuery to create a button is any more "routing around the problem" of DOM creation than using Dart's framework, when they are both translated to document.createElement.
I rather have smaller individually pieces for the greater flexibility it provides. Where Dart clearly has the advantage is in tooling...but that's not nearly enough for me.
Which isn't to say Dart is evil, but I don't see how they'll make web development easier when, in practice (no VM), they aren't bringing anything new.
> I don't see how using jQuery to create a button is any more "routing around the problem" of DOM creation than using Dart's framework, when they are both translated to document.createElement.
With Dart, you don't need to send 96k of jQuery over the wire. Better, you have the returned elements as a baked-in data type. I imagine there's a pleasant consistency to being able to append an element to a <ul> with the same API you'd use to manipulate any other list.
Sure, the Dart framework is smaller, but it also does less. If you don't need everything that comes with jQuery, you can swap it out for something smaller, like zepto or TinyDOM - which make Dart look massive.
jQuery, zepto, xyz, abc, ... all give you a consistent way to manipulate DOM objects.