2013-11-21 17 views
5

У меня есть этот код:Слишком большой JS-файл, созданный

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

Я делаю dart2js --minify --out=main.dart.js main.dart

Тогда у меня есть main.dart.js с размером 2,6 MiB (2,744,320 байт). Это не нормально. Что я делаю неправильно?

Возможно ли использование углового.dart для производства на данном этапе?

+0

http://stackoverflow.com/questions/21212131/ вопрос/ответы содержат релевантную информацию, связанную с этим вопросом. –

ответ

5

@ медиа-slave24

Может быть, это будет полезно для Вас: https://code.google.com/p/dart/issues/detail?id=14686

Как сообщается в системе отслеживания ошибок дротик. Некоторые люди, использующие зеркала, получили 760kb. Так что это определенно ошибка.

+0

Спасибо, это работает для меня, я объявил '@ MirrorsUsed', и теперь main.dart.js - _670.6 KiB (686,736 bytes) _. Но КАК это работает? Официальная документация не говорит ничего полезного для этого. –

+1

@ media-slave24 https://api.dartlang.org/docs/channels/stable/latest/dart_mirrors/MirrorsUsed.html и https://api.dartlang.org/docs/channels/stable/latest/dart_mirrors. html Это не стабильный API, поэтому его можно изменить в будущем. Надеюсь, это будет полезно. – galuszkak

+0

@ media-slave24 670KiB есть ** 17 ** раз больше угловой.min.js. Вы действительно рассматриваете возможность встраивания 670KB javascript на веб-страницу? Я не понимаю, почему они не упоминают об этой проблеме на angulardart.org. (Кстати, [https://angulardart.org/demo/] загружает 2 МБ javascript ...). –

5

UPDATE (Jan '14): AngularDart 0.9.5 теперь включает стандартный список MirrorsUsed. Чтобы завершить его и запустить оптимизацию дрожания Дарта, вам нужно добавить MirrorsUsed в свою программу.

  • , в котором перечислены все классы, которые вы вводите.
  • override: '*' для завершения использования MirrorsUsed.

Поскольку HelloWorld не имеет каких-либо новых классов, скажем:

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

See Github for the complete helloworld program

Ключ должен включать @MirrorsUsed аннотацию в файле Dart. Ссылка Павла на учебник AngularDart - отличный ресурс.

Чтобы ответить на ваш вопрос: Да, AngularDart можно использовать в производстве, но имейте в виду, что он находится в релизе «бета» прямо сейчас. Мы ожидаем много изменений API!

Смежные вопросы