2013-08-24 6 views
9

Ich bin bereits vertraut mit Knockout, Angular, Sammy, jQuery, eine kleine Brise und ein wenig Glut. Die Tutorials und die ersten Schritte für Durandal scheinen alle zu sagen ... naja, zuerst addiere jQuery und vielleicht knockout.Was ist der Zweck von Durandal?

Handelt es sich um etwas völlig anderes als all diese? Welchen Bedarf hat es, dass es wahrscheinlich mit Knockout verwendet wird?

Ist es nur ein Sammelsurium von Client-Seite Routing und UI-Komponenten?

Was macht es konzeptionell alleine?

Antwort

11

Durandal ähnelt Angular insofern, als es ein MV * -Framework für clientseitige SPA-Webanwendungen bietet.

Angular ist meist, wenn nicht alle, benutzerdefinierte Code, während Durandal nimmt vorhandene Bibliotheken, vor allem Knockout und RequireJS (Sammy Abhängigkeit wurde mit der 2.0-Version umgangen), und bietet die Installation, um vollständige SPA-Funktionalität, einschließlich Ansicht/Ansicht Modellzusammensetzung und Hash-Tag (Spa) -Navigation.

Wie für Knockout, verlässt sich Durandal stark auf Knockout, um die Ansichten zu bilden und Modelle anzusehen. Ihre Ansicht und das Ansichtsmodell sind automatisch datengebunden, wenn die Ansicht in das DOM eingefügt wird. Der Vorteil besteht darin, dass ich Knockout verwenden kann, um die V/VM-Datenbindung bereitzustellen, und Durandal die Arbeit machen muss, herauszufinden, welche v/vm verwendet wird, sie vom Server abzurufen und in den aktuellen Bildschirm zu schreiben.

In diesem Fall bietet Durandal eine Möglichkeit, Ansichten/Ansichtsmodelle auf Hash-Tag-basierte Routen abzubilden, die Ihnen die SPA-Navigation ermöglichen. Durch die Angabe einer shell oder Layoutansicht als Hauptansicht kann ein Platzhalter hinzugefügt werden, den Durandal verwendet, um ein "Bildschirmpräsentator" -Muster zu implementieren. Durandal überwacht die URL-Änderungen und kann automatisch aktivieren, Daten binden (mithilfe von Knockout) und die Ansicht anzeigen, die der aktuellen URL-Route entspricht.

Wenn Sie mit WPF vertraut sind, können Sie Durandal als Prism-ähnliche Funktionalität als Hauptangebot betrachten, zusammen mit anderen Goodies, die das Erstellen von Single-Page-Anwendungen für das Web unterstützen.

+0

Ich würde sagen, es ist viel näher an Caliburn.Micro als Prism ist. – cubski

9

Durandal ist ein "voll ausgestattetes" SPA-Framework, während Knockout nur datenbindend ist. Es ist ähnlich im Umfang wie Angular.

+1

Während kurz, meine Antwort ist korrekt und nicht eines Downvote würdig. Wie wäre es, wenn Sie stattdessen einen korrigierenden Kommentar hinzufügen? (vorausgesetzt, Sie haben sogar besser zu beantworten ..) – 7zark7

+0

Ich habe keine Antworten auf Antworten hier unten getan, nicht sicher, warum es war eine für Sie und eine für Tyrsius – Maslow

+0

Ich weiß, Knospe, war einige zufällige down-Voter. War nicht auf dich gerichtet. – 7zark7

10

Durandal hat mehrere Vorteile, baut aber auch auf vorhandenen Bibliotheken auf. Es hat eine Abhängigkeit von

  1. RequireJS
  2. Knockout
  3. jQuery

Diese sind nicht "maybes." Sie sind harte Abhängigkeiten. Durandal kann ohne sie nicht arbeiten.

In seinem Kern, fügt Durandal die sehr starke Verbindung zu knockout hinzu. Diese Bindung wird automatisch die Ansicht (eine HTML-Datei) finden, wenn sie ein Ansichtsmodell übergeben, sie vom Server abrufen, sie an das Ansichtsmodell binden und sie in das DOM einfügen. Ein ähnliches Verhalten kann unter Verwendung der Knockout template Bindung erreicht werden, aber das Verwalten der Vorlagen kann umständlich werden. Composition fügt dem Prozess auch Lebenszyklusereignisse hinzu, mit denen sichergestellt werden kann, dass Ansichtsmodelle ordnungsgemäß eingerichtet und abgerissen werden. Es bietet auch optionales DOM-Caching.

Durandal bietet auch einige Framework-Struktur. Es bietet eine einfache Plugin-API, die von seinem Router verwendet wird, um SPA-Navigation über Hash- oder Push-Status zu geben. Es fördert die Organisation von Viewmodels und Views durch übersteuerbare Konvention sowie die Verwendung von Require AMD-Modulen. Es bietet außerdem ein einfaches Ereignismodul, mit dem anwendungsweite Ereignisse erstellt und konsumiert werden können.

Es hat viele andere kleine Funktionen neben diesem, der Durandal Homepage hat eine nette Referenz.

1

Magento 2 stehen auf Knockout und RequireJS. Durandal kann hinzugefügt werden, damit mehr Möglichkeiten mit den neuesten Funktionen (Komponenten, Vorlagen usw.) kommen.

Es ist besser, weil:

  • es stabile und große als anderer Rahmen ist, weniger Fehler

  • große Dokumentation

  • einfache api auftreten

  • mehr SEO freundlich! (Sie können alle HTML seved haben und verwenden Sie es wie Komponente, gemischte Situation). Angular 2 steht auf Mischlogik mit Präsentation.

  • html5 Standarddaten und Bindung mit besserer Code einer Ablesbarkeit (nur versuchen, html lesen reagieren)

  • noch gepflegt

  • Schöpfer von Durandal war seit einiger Zeit Angular Entwickler (3 Monate), so gibt es etwas Ähnlichkeit geht dort im Denken vor sich.

  • Arbeiten im alten Browser! (IE6>)

Es gibt auch Nachteile, aber vor allem, weil es nicht geben, so viel Funktion in einem Satz und nicht neu, modernste Technologie, angenommen wurde.

Pleas teilen mehr Punkt über Durandal :)

mehr: https://johnpapa.net/compare-durandal-to-angular-not-knockout-to-angular/