Я немного знаю о Angular.js, но я хочу научить себя Dart и Angular.dart сейчас. Мне немного любопытно, каковы различия между ними. Angular.dart tutorial конкретно говорит, что он не будет сравнивать эти два. Кто-нибудь, кто использовал оба, имеет представление о различиях?
Различия между Angular.js и Angular.dart?
Ответ 1
Обновление # 2 (Aug '16) Дантовая версия Angular теперь поддерживается командой Dart на Github: dart/angular2 на github
Обновление: проект AngularDart законсервирован и заменен на Angular2. Angular2 - самая последняя итерация Angular и работает в Dart.
В первоначальном ответе ниже сравниваются AngularDart и AngularJS 1.x.
AngularDart и AngularJS поддерживаются командой Angular. Мы взяли много знаний со стороны JS и применили его к Dart. Мы также взяли много кода и поместили его прямо в мир Дартов.
На техническом уровне в ядре Angular:
-
Язык выражения совместим между двумя версиями. Парсер AngularDart начинался как прямой порт от JS, но развивался сам по себе. Большая разница в том, что парсер Dart поддерживает несколько бэкэндов, включая генератор кода Дарта.
-
Система DI отличается. В Dart он основан на классе, где в Javascript он основан на символе.
-
Компилятор полностью переписан в версии Dart. Это означает, что директивы ведут себя по-разному, и теперь существует различие между "структурными директивами", которые изменяют DOM, "декоративные директивы" и компоненты.
-
ng-transclude "расплавился в браузере", заменен стандартным теневым DOM.
-
управляющие контроллеры были объединены в компоненты
Директивы -
в AngularDart объявляются с аннотированным классом. функции link/compile заменяются функцией apply
-
В AngularDart область вычисляется автоматически через зоны Дарта, устраняя необходимость в области. $apply.
-
У AngularDart есть концепция карт атрибутов, которые еще не вернулись к AngularJS. Это означает, что директивам должно потребоваться гораздо меньше возможностей. $Watches или даже зависимость от области.
Могут быть и другие различия, но это хороший список, чтобы вы начали.
Ответ 2
Итак, первое отличие довольно очевидно: AngularJS
написано в JavaScript, тогда как Angular.dart
записано в дроте.
В то время как Angular.dart
следует основным принципам AngularJS
, это кажется немного игровой площадкой для развития новых функций. Я думаю, что основная команда берет все знания у AngularJS и пытается реализовать вещи немного лучше для версии Angular.dart
. В настоящее время кажется, что сначала куча вещей реализована в дротической версии Angular, прежде чем они вернутся к AngularJS
. Например, они просто добавили более легкую версию ng-repeat
, которая в конечном итоге должна заканчиваться на AngularJS
.
Также команда Angular недавно рассказала о том, что запланировано для Angular 2.0. Бьюсь об заклад, большинство из этих вещей сначала приземлится в Angular.dart
, прежде чем они приземлятся в AngularJS
.
Ответ 3
Обновление 08/2016
Angular 2 для JS и Dart теперь являются независимыми проектами и будут в некоторой степени расходиться.
Например, NgModule
, введенный в TS RC.5, вероятно, не будет помещен в Dart, а также модуль маршрутизатора, вероятно, не будет переведен непосредственно.
Это изменения, которые были необходимы в TS для ленивой загрузки. Дарт имеет более лёгкую историю загрузки и не нуждается во многих изменениях, внесенных в Angular2 для TS.
Обновление
С Angular 2 (почти) нет различий, потому что Angular.dart и Angular.js автоматически генерируются из того же источника TypeScript. http://techcrunch.com/2015/03/05/microsoft-and-google-collaborate-on-typescript-hell-has-not-frozen-over-yet/
Оригинал
-
Аналог ngTransclude в Angular.Dart
Angular.dart использует shadowDom, а AngularJs - нет.
Вместо этого AngularJs использует ngTransclude. -
В чем разница между ng-app и data-ng-app?
Angular.dart, похоже, не поддерживает другие префиксы, как обсуждалось в связанном вопросе. -
Angular.dart не имеет эквивалента
ng-init
. (см. также Проблема GitHub - порт: ng-init) -
Angular.dart не имеет директивы
ng-controller
(port: ngController)
вместо этого используется@NgController(selector:'[foo-controller]', publishAs:'foo')
-
Angular.dart не поддерживает
ng-repeat
с картами (ng-repeat с неработающей Картой) -
Angular.dart не имеет
restrict
Имеет директиву Angular.dart эквивалент` ограничения `AngularJS -
Misko Hevery создатель AngularJS и член команды AngularDart ответил на аналогичный вопрос здесь
В этой статье перечислены некоторые отличия: ANGULARDART ДЛЯ РАЗРАБОТЧИКОВ ANGULARJS. ВВЕДЕНИЕ В ЛУЧШИЙ Angular YET.