8
votes

Pourquoi les fichiers javascript générés par Dart sont-ils si énormes?

J'ai le code dard suivant:

$ 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:[]);
$


1 commentaires

Le compilateur plus récent réduit la taille de la taille. Un 'Hello World' est maintenant 8 lignes à l'aide du compilateur de grenouilles.


3 Réponses :


9
votes

Pourquoi le code JavaScript est-il généré à partir d'un code dard par un compilateur à dard est si énorme?

Parce que cela inclut un runtime DART.

Quel problème essaye-ils de résoudre en générant de tels énonsts fichiers JavaScript?

Le problème du code d'exécution qui n'est pas JavaScript dans un navigateur.


1 commentaires

Cela n'inclut pas de runtime de Dart. JavaScript généré précédemment incluait de nombreuses bibliothèques intégrées, mais des compilateurs plus récents font de la meilleure manière à inclure uniquement ce qui est nécessaire. Le 17k 'Hello World' du lancement est maintenant 8 lignes, par exemple.



10
votes

Si vous souhaitez obtenir même un meilleur JavaScript, essayez le compilateur de grenouille au lieu de DartC. Frog ist écrit en fléchette elle-même.

http://turbomanage.wordpress.com/2011 / 12/09 / DART-DEV-MODE-COMETH /

Remarque, ce blogpostérieur ci-dessus est un peu obsolète. Vous pouvez attendre pendant ce temps, utilisez la DART SDK pour grenouille: http://gsdview.appot.com/dart-atretor-Archive-Continuer/ 3058 /

Ce post pourrait également vous intéresser, Seth montre comment la grenouille générée JS ressemble à: http://blog.sethladd.com/2011 /12/10-lessons-de-porting-javascript-a.html

Voici comment vous pouvez activer la grenouille dans l'éditeur actuel: https://groups.google.com/a/dartlang.org / Groupe / Divers / MSG / 5DFE04C69ED0FED3


0 commentaires

14
votes

Quel problème essaye-ils de résoudre en générant de tels énonsts fichiers JavaScript?

Le problème de l'équilibrage de la fléchette d'être optimal dans la majorité des cas, plutôt que de celui-ci un exemple personnel, spécifique, inutile et inutile que personne n'essayait jamais d'utiliser sérieusement dans un projet de production.


0 commentaires