2013-11-21 17 views
5

ho questo codice:Troppo grande JS file

// main.dart 
import "package:angular/angular.dart"; 
main() => ngBootstrap(); 

faccio dart2js --minify --out=main.dart.js main.dart

allora ho main.dart.js con dimensioni 2,6 MiB (2,744,320 bytes). Non è normale. Cosa sto facendo di sbagliato?

È angular.dart utilizzabile per la produzione in questa fase?

+0

http://stackoverflow.com/questions/21212131/ domanda/risposte hanno informazioni pertinenti relative a questa domanda. –

risposta

5

@ media-slave24

Forse questo sarà utile per voi: https://code.google.com/p/dart/issues/detail?id=14686

E 'riportato sul sistema di tracciamento bug dardo. Alcune persone che usano i mirror hanno 760kb. Quindi è sicuramente un bug.

+0

Grazie, funziona per me, ho dichiarato '@ MirrorsUsed' e ora main.dart.js è _670.6 KiB (686.736 byte) _. Ma come funziona? La documentazione ufficiale non dice nulla di utile per questo. –

+1

@ media-slave24 https://api.dartlang.org/docs/channels/stable/latest/dart_mirrors/MirrorsUsed.html e https://api.dartlang.org/docs/channels/stable/latest/dart_mirrors. html Non è un'API stabile, quindi può essere modificata in futuro. Spero che sarà utile. – galuszkak

+0

@ media-slave24 670KiB è ** 17 ** volte più grande di angular.min.js. Stai davvero valutando l'inclusione di 670 KB di javascript in una pagina Web? Non capisco perché non menzionino nulla su questo problema su angulardart.org. (A proposito, [https://angulardart.org/demo/] carica 2MB di javascript ...). –

5

UPDATE (gen '14): AngularDart 0.9.5 include ora un elenco MirrorsUsed standard. Per finalizzarlo e attivare le ottimizzazioni di Dart's tree-shaking, è necessario aggiungere un MirrorsUsed al programma

  • elencando tutte le classi introdotte.
  • override: '*' per finalizzare il MirrorsUsed.

Dal helloworld non ha nuove classi, dire:

@MirrorsUsed(override: '*') 
import 'dart:mirrors'; 

See Github for the complete helloworld program

La chiave è quella di includere un'annotazione @MirrorsUsed nel file Dart. Il link di Pavel al tutorial di AngularDart è un'ottima risorsa.

Per rispondere effettivamente alla tua domanda: Sì, AngularDart può essere utilizzato in produzione, ma tieni presente che è in versione "beta" in questo momento. Ci aspettiamo molte modifiche all'API di rottura!