Pregunta

Tengo el siguiente código de dardo:

$ cat helloworld.dart
main() => print('Hello world!');
$ 

El código JavaScript generado por el compilador DART para el código anterior es el siguiente:

$ cat helloworld.dart.app.js 
function native_ListFactory__new(typeToken, length) {
  return RTT.setTypeInfo(
      new Array(length),
      Array.$lookupRTT(RTT.getTypeInfo(typeToken).typeArgs));
}
function native_ListImplementation__indexOperator(index) {
  return this[index];
}
function native_ListImplementation__indexAssignOperator(index, value) {
  this[index] = value;
}
function native_ListImplementation_get$length() {
  return this.length;
}
function native_ListImplementation__setLength(length) {
  this.length = length;
}
function native_ListImplementation__add(element) {
  this.push(element);
}
function native_BoolImplementation_EQ(other) {
  return typeof other == 'boolean' && this == other;
}
function native_BoolImplementation_toString() {
  return this.toString();
}

<snapped>

var static$uninitialized = {};
var static$initializing = {};
function $inherits(child, parent) {
  if (child.prototype.__proto__) {
    child.prototype.__proto__ = parent.prototype;
  } else {
    function tmp() {};
    tmp.prototype = parent.prototype;
    child.prototype = new tmp();
    child.prototype.constructor = child;
  }
}
isolate$inits.push(function(){
  isolate$current.Duration$DartMILLISECONDS_PER_MINUTE$field = static$uninitialized;
  isolate$current.Duration$DartMILLISECONDS_PER_HOUR$field = static$uninitialized;
  isolate$current.Duration$DartMILLISECONDS_PER_DAY$field = static$uninitialized;
  isolate$current.Duration$DartSECONDS_PER_HOUR$field = static$uninitialized;
  isolate$current.Duration$DartSECONDS_PER_DAY$field = static$uninitialized;
  isolate$current.Duration$DartMINUTES_PER_DAY$field = static$uninitialized;
}
);
RunEntry(unnamedd9297f$main$member, this.arguments ? (this.arguments.slice ? [].concat(this.arguments.slice()) : this.arguments) : []);
$

Y el tamaño de helloworld.dart.app.js es 102k!

Cuando se ejecutó en modo Optimize, generó el siguiente JavaScript - helloworld.dart.js que es de tamaño 20k

$ cat helloworld.dart.js 
var e;function f(a,b){if(b>=0&&b<a.length)return b;h(i(b))};var j={},k={};function aa(a,b,c){if(b)a.g=function(){return b.call(c)}}function ba(a,b,c,d){function g(b,g,t,m){return a.call(c,d,b,g,t,m)}aa(g,b,c);return g}function l(a,b){if(a.prototype.__proto__)a.prototype.__proto__=b.prototype;else{var c=function(){};c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a}}function ca(a,b){return typeof a=="number"&&typeof b=="number"?a+b:a.na(b)}function da(a){a/=4;return a<0?Math.ceil(a):Math.floor(a)}
function o(a,b){if(a===void 0)return b===void 0;else if(typeof a==typeof b&&typeof a!="object")return a===b;return a.G(b)}function h(a){a&&typeof a=="object"&&Error.captureStackTrace&&Error.captureStackTrace(a);throw a;}function p(){var a=new q;a.f=s("ya",ea);a.va="";a.qa="";a.N=[];h(a)}var u={d:0};

<snapped>

y.push(function(){x.fb=j;x.eb=j;x.gb=j});y.push(function(){x.Ta=j;x.Sa=j;x.Ra=j;x.Wa=j;x.Va=j;x.Ua=j});(function(a,b){if(!A){var c=new ya;oa=c;sa(c,function(){a(b)});Ea();x=c}})(function(){return qb()(1,u,"Hello world!")},this.arguments?this.arguments.slice?[].concat(this.arguments.slice()):this.arguments:[]);
$

¿Por qué es tan grande el código JavaScript que fue generado por un compilador DART?

¿Qué problema están tratando de resolver generando archivos JavaScript tan enormes?

Nota al margen: los archivos JavaScript eran muy grandes, así que arrojó el siguiente error:

¡Ups! Su pregunta no pudo presentarse porque: el cuerpo está limitado a 30000 caracteres; Entraste 140984

¿Fue útil?

Solución

Si desea obtener incluso un mejor JavaScript, pruebe el compilador de rana en lugar de DARTC. Frog está escrita en Dart.

http://turbomanage.wordpress.com/2011/12/09/dartdev-mode-cometh/

Tenga en cuenta que esta publicación de blog anterior está un poco desactualizada. Mientras tanto, puede usar el SDK Dart para Frog:http://gsdview.appspot.com/dart-editor-archive-continuous/3058/

Esta publicación también puede ser de interés para usted, Seth muestra cómo se ve la rana generada JS:http://blog.sethladd.com/2011/12/10-lessons-from-porting-javascript-to.html

Así es como puede habilitar la rana en el editor actual:https://groups.google.com/a/dartlang.org/group/misc/msg/5dfe04c69ed0fed3

Otros consejos

¿Qué problema están tratando de resolver generando archivos JavaScript tan enormes?

El problema de equilibrar a DART para ser óptimo en la mayoría de los casos, en lugar de solo este programa de ejemplo personal, específico, artificial e inútil que nadie intentaría usar seriamente en un proyecto de producción.

¿Por qué el código JavaScript que fue generado a partir de un código DART por un compilador DART es tan grande?

Porque incluye un tiempo de ejecución de Dart.

¿Qué problema están tratando de resolver generando archivos JavaScript tan enormes?

El problema de ejecutar código que no es JavaScript en un navegador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top