Unterschiede zwischen Angular.js und Angular.dart? [geschlossen]


75

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?


3
Ja ... und einer ist älter und reifer als die beiden anderen, aber ich habe an die weniger offensichtlichen Unterschiede gedacht.
CorayThan

Antworten:


95

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.


2
Irgendeine Idee, wann es in einem brauchbaren Zustand sein wird? Sogar einige Grundfunktionen fehlen momentan und ich freue mich sehr, Dart zu verwenden :(
Salman von Abbas

@SalmanPK AngularDart ist verwendbar. Welche Funktionen fehlen Ihnen?
James deBoer


Grundlegende Unterstützung für beide ist bereits verfügbar. Wir arbeiten noch an einigen zusätzlichen Funktionen (z. B. Validierung).
James deBoer

7
Ein offensichtlicher Unterschied wäre die Browserkompatibilität - angular.js gibt "Safari, Chrome, Firefox, Opera, IE8, IE9 und mobile Browser (Android, Chrome Mobile, iOS Safari)" an, während es keinen solchen Anspruch für angular.dart (Port 'gibt) t fand nichts auf ihrer Website) - Dart selbst zielt auf ECMAScript 5 (> = IE9) ab, aber angle.dart verwendet Shadow DOM und die Polyfill von Polymer dafür - und das einzige Ziel von Polymer sind "immergrüne" Browser, wobei mobile Browser nicht einmal erwähnt werden. Weiß jemand, ob dies eine korrekte Beobachtung ist?
Herbert

17

Der erste Unterschied liegt also auf der Hand: Er AngularJSist in JavaScript geschrieben, während Angular.darter in Dart geschrieben ist.

Während Angular.dartdie Grundprinzipien folgen AngularJS, 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 die Angular.dartVersion 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 werden AngularJS. Zum Beispiel haben sie gerade eine leichtere Version hinzugefügt, ng-repeatdie irgendwann in enden sollte AngularJS.

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.dartbevor sie landen AngularJS.


1
Diese Aussagen aus einer sehr hohen Sicht. Ich bin mir bewusst, dass diese Frage möglicherweise nicht perfekt zu SO passt, aber für Angular.dart ist nicht sehr viel Dokumentation verfügbar. Ich hoffte also auf ein wenig umfangreichere Informationen wie - wo unterscheidet sich das Markup (dies sollte nicht viel von der Sprachsyntax abhängen (zumindest von den gängigsten Konstrukten, um auf die Idee zu kommen) - welche Markup-Konstrukte in dem einen aber verfügbar sind nicht in der anderen. IMHO, dass beide Produkte verwandt sind und von zwei Gruppen entwickelt werden, die miteinander reden, ist ein bisschen dünn.
Günter Zöchbauer

Um den Punkt über 'Spielplatz' zu sichern
stackoverflow.com/a/21055757/3966682

15

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 NgModulein 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

Dieser Artikel listet verschiedene Unterschiede auf: ANGULARDART FÜR ANGULARJS-ENTWICKLER. EINFÜHRUNG IN DEN BESTEN WINKELN NOCH.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.