tag content attribute javascript dart

javascript - content - ¿Cómo se ve la salida de Dart?



title html css (2)

Dart, el nuevo lenguaje web de Google, dice que admite la salida a JavaScript.

¿Cómo se ve una conversión simple?


La salida del compilador Dart-> JavaScript es un objetivo móvil. El primer lanzamiento (vista previa técnica) no hizo mucho temblor en los árboles y, por lo tanto, era bastante grande. El nuevo compilador de rana (experimental) es mucho mejor en este sentido ( el blog de David Chandler ), pero espero que DartC también mejore considerablemente.


main() { print(''Hello, Dart!''); }

Cuando se compila con dart2js (desde 2013-04-26) (vea la nota en la parte inferior) se convierte en:

// Generated by dart2js, the Dart to JavaScript compiler. // The code supports the following hooks: // dartPrint(message) - if this function is defined it is called // instead of the Dart [print] method. // dartMainRunner(main) - if this function is defined, the Dart [main] // method will not be invoked directly. // Instead, a closure that will invoke [main] is // passed to [dartMainRunner]. function Isolate() {} init(); var $ = Isolate.$isolateProperties; // Bound closures $.Primitives_printString = function(string) { if (typeof dartPrint == "function") { dartPrint(string); return; } if (typeof window == "object") { if (typeof console == "object") console.log(string); return; } if (typeof print == "function") { print(string); return; } throw "Unable to print message: " + String(string); }; $.main = function() { $.Primitives_printString("Hello, Dart!"); }; $.String = {builtin$cls: "String"}; var $ = null; Isolate = Isolate.$finishIsolateConstructor(Isolate); var $ = new Isolate(); // BEGIN invoke [main]. if (typeof document !== "undefined" && document.readyState !== "complete") { document.addEventListener("readystatechange", function () { if (document.readyState == "complete") { if (typeof dartMainRunner === "function") { dartMainRunner(function() { $.main(); }); } else { $.main(); } } }, false); } else { if (typeof dartMainRunner === "function") { dartMainRunner(function() { $.main(); }); } else { $.main(); } } // END invoke [main]. function init() { Isolate.$isolateProperties = {}; Isolate.$finishIsolateConstructor = function(oldIsolate) { var isolateProperties = oldIsolate.$isolateProperties; isolateProperties.$currentScript = typeof document == "object" ? document.currentScript || document.scripts[document.scripts.length - 1] : null; var isolatePrototype = oldIsolate.prototype; var str = "{/n"; str += "var properties = Isolate.$isolateProperties;/n"; var hasOwnProperty = Object.prototype.hasOwnProperty; for (var staticName in isolateProperties) { if (hasOwnProperty.call(isolateProperties, staticName)) { str += "this." + staticName + "= properties." + staticName + ";/n"; } } str += "}/n"; var newIsolate = new Function(str); newIsolate.prototype = isolatePrototype; isolatePrototype.constructor = newIsolate; newIsolate.$isolateProperties = isolateProperties; return newIsolate; }; } //@ sourceMappingURL=out.js.map

Nota para la posteridad: la respuesta original a esta pregunta se ha modificado para reflejar el estado actual de las cosas.

En 2012-05-12 la salida del dardo para Hello World fue de 18,718 caracteres.

El 2012-08-29 la salida fue de 1531 caracteres.

En 2013-04-26, la salida fue de 2642 caracteres.

dart2js puede minificar el código. Aquí hay un ejemplo (a partir del 2013-04-26)

// Generated by dart2js, the Dart to JavaScript compiler. function I(){} init() var $=I.p $.ib=function(a){if(typeof dartPrint=="function"){dartPrint(a) return}if(typeof window=="object"){if(typeof console=="object")console.log(a) return}if(typeof print=="function"){print(a) return}throw "Unable to print message: " + String(a)} $.E2=function(){$.ib("Hello, Dart!")} $.qU={builtin$cls:"qU"} var $=null I = I.$finishIsolateConstructor(I) var $=new I() if (typeof document !== "undefined" && document.readyState !== "complete") { document.addEventListener("readystatechange", function () { if (document.readyState == "complete") { if (typeof dartMainRunner === "function") { dartMainRunner(function() { $.E2(); }); } else { $.E2(); } } }, false); } else { if (typeof dartMainRunner === "function") { dartMainRunner(function() { $.E2(); }); } else { $.E2(); } } function init(){I.p={} I.$finishIsolateConstructor=function(a){var z=a.p z.$currentScript=typeof document=="object"?document.currentScript||document.scripts[document.scripts.length-1]:null var y=a.prototype var x="{/n" x+="var properties = I.p;/n" var w=Object.prototype.hasOwnProperty for(var v in z){if(w.call(z,v)){x+="this."+v+"= properties."+v+";/n"}}x+="}/n" var u=new Function(x) u.prototype=y y.constructor=u u.p=z return u}}//@ sourceMappingURL=out.js.map

El 2013-04-26, el código modificado fue de 1386 caracteres.