Ich weiß ein bisschen über Angular.js Bescheid, aber ich möchte mir jetzt Dart und Angular.dart beibringen. Ich bin allerdings etwas neugierig, was die Unterschiede zwischen den beiden sind. Das Angular.dart-Tutorial sagt ausdrücklich, dass es die beiden nicht vergleichen wird . Hat jemand, der beide verwendet hat, eine Perspektive auf die Unterschiede?
angularjs
dart
angular-dart
CorayThan
quelle
quelle
Antworten:
Update Nr. 2 (16. August) Eine Dart-Version von Angular wird jetzt vom Dart-Team auf Github gepflegt: dart / angle2 auf Github
Update : Das AngularDart-Projekt ist eingemottet und wurde von Angular2 abgelöst. Angular2 ist die neueste Iteration von Angular und funktioniert in Dart.
Die ursprüngliche Antwort unten vergleicht AngularDart und AngularJS 1.x.
AngularDart und AngularJS werden beide vom Angular-Team verwaltet. Wir haben viel Wissen von der JS-Seite auf Dart übertragen. Wir haben auch viel Code genommen und ihn direkt in die Dart-Welt portiert.
Auf technischer Ebene im Kern von Angular:
Die Ausdruckssprache ist zwischen den beiden Versionen kompatibel. Der AngularDart-Parser wurde als direkter Port von JS gestartet, hat sich jedoch von selbst weiterentwickelt. Ein großer Unterschied besteht darin, dass der Dart-Parser mehrere Backends unterstützt, einschließlich eines Dart-Code-Generators.
Das DI-System ist anders. In Dart ist es klassenbasiert, in Javascript symbolbasiert.
Der Compiler wurde in der Dart-Version komplett neu geschrieben. Dies bedeutet, dass sich Direktiven unterschiedlich verhalten und nun zwischen "strukturellen Direktiven", die das DOM modifizieren, "dekorativen Direktiven" und Komponenten unterschieden wird.
ng-transclude ist "in den Browser eingeschmolzen" und wurde durch das Standard-Schatten-DOM ersetzt.
Direktiven-Controller wurden zu Komponenten zusammengeführt
Direktiven in AngularDart werden mit einer kommentierten Klasse deklariert. Link / Compile-Funktionen werden durch eine Apply-Funktion ersetzt
In AngularDart wird der Bereich automatisch durch Dart-Zonen verdaut, sodass der Bereich nicht mehr erforderlich ist. $ Apply.
AngularDart hat ein Konzept von Attributzuordnungen, das es noch nicht zurück zu AngularJS geschafft hat. Dies bedeutet, dass Direktiven viel weniger Gültigkeitsbereich benötigen sollten. $ Watches oder sogar eine Abhängigkeit vom Gültigkeitsbereich.
Es kann andere Unterschiede geben, aber das ist eine gute Liste, um Ihnen den Einstieg zu erleichtern.
quelle
Der erste Unterschied liegt also auf der Hand: Er
AngularJS
ist in JavaScript geschrieben, währendAngular.dart
er in Dart geschrieben ist.Während
Angular.dart
die Grundprinzipien folgenAngularJS
, scheint es ein bisschen ein Spielplatz für die Entwicklung neuer Funktionen zu sein. Ich denke, das Kernteam nimmt alle Erkenntnisse aus AngularJS und versucht, die Dinge für dieAngular.dart
Version nur geringfügig besser umzusetzen . Derzeit scheint es so, als ob eine Reihe von Dingen zuerst in der Dart-Version von Angular implementiert werden, bevor sie zurückportiert werdenAngularJS
. Zum Beispiel haben sie gerade eine leichtere Version hinzugefügt,ng-repeat
die irgendwann in enden sollteAngularJS
.Auch das Angular-Team hat kürzlich einige Einblicke in die Pläne für Angular 2.0 gegeben. Ich wette, die meisten dieser Dinge werden zuerst landen,
Angular.dart
bevor sie landenAngularJS
.quelle
Update 01/2018
Siehe auch Was ist der Unterschied zwischen Angular 2 TS und Angular 2 Dart?
Update 08/2016
Angular 2 für JS und Dart sind nun unabhängige Projekte und werden bis zu einem gewissen Grad voneinander abweichen.
Zum Beispiel wird das
NgModule
in TS RC.5 eingeführte wahrscheinlich nicht in Dart landen und auch das Routermodul wird wahrscheinlich nicht direkt übersetzt. Dies sind Änderungen, die in TS zum verzögerten Laden erforderlich waren. Dart hat eine einfachere Lazy-Loading-Story und benötigt nicht viele der in Angular2 für TS eingeführten Änderungen.Aktualisieren
Mit Angular 2 gibt es (fast) keine Unterschiede mehr, da Angular.dart und Angular.js automatisch aus derselben TypeScript-Quelle generiert werden. http://techcrunch.com/2015/03/05/microsoft-and-google-collaborate-on-typescript-hell-has-not-frozen-over-yet/
Original
Analog zu ngTransclude in Angular.Dart
Angular.dart verwendet shadowDom, AngularJs nicht.
AngularJs verwendet stattdessen ngTransclude.
Was ist der Unterschied zwischen ng-app und data-ng-app?
Angular.dart scheint andere Präfixe nicht zu unterstützen, wie in der verknüpften Frage beschrieben.
Angular.dart hat kein Äquivalent zu
ng-init
. (siehe auch GitHub-Problem - Port: ng-init )Angular.dart hat keine
ng-controller
Direktive ( Port: ngController ),sondern
@NgController(selector:'[foo-controller]', publishAs:'foo')
wird verwendetAngular.dart wird
ng-repeat
bei Karten nicht unterstützt ( ng-repeat bei nicht funktionierender Karte )Angular.dart hat keine
restrict
Has Angular.dart-Direktive, die der "Einschränkung" von AngularJS entsprichtMisko Hevery der Schöpfer von AngularJS und Mitglied des AngularDart Team beantwortet eine ähnliche Frage hier
Dieser Artikel listet verschiedene Unterschiede auf: ANGULARDART FÜR ANGULARJS-ENTWICKLER. EINFÜHRUNG IN DEN BESTEN WINKELN NOCH.
quelle