Vorteile / Nachteile des HTML5-Modus vs Hash-Modus AngularJS

10

Bei AngularJS 1.3 ist das <base> -Tag im HTML5-Modus erforderlich, und das hat mich dazu gebracht, darüber nachzudenken, welche Vorteile / Nachteile der HTML5-Modus gegenüber dem Hash-Modus hat.

Im Hash-Modus ist der Nachteil, dass URLs leicht hässlich und nicht intuitiv sind, wenn Sie erwarten, dass Benutzer URLs selbst eingeben. Der Nachteil des HTML5-Modus (mit 1.3) ist, dass das <base> -Tag benötigt wird, was eine Reihe von Problemen verursachen kann (wie zum Beispiel die Arbeit mit SVG ein wenig mühsam machen).

Gibt es irgendwelche anderen Nachteile für beide Modi, an die ich nicht denke?

    
ryanzec 04.09.2014, 19:59
quelle

1 Antwort

1

Mit der Verlaufs-API können Sie eine echte URL erstellen, über die der entsprechende Inhalt direkt vom Server bereitgestellt werden kann.

Dies:

  • Ermöglicht das Laden der Seite in den richtigen Status, auch wenn die erste vom Benutzer besuchte Seite nicht die Startseite ist. (Dies ist schneller als das Laden in den Startseitenzustand, dann wird es mit JS geändert, nachdem der Hashbang gelesen wurde)
  • Verleiht Suchmaschinen einen guten Inhalt für die Indexierung (ohne den schrecklichen (und jetzt veralteten) Hash-Code von Google zu verwenden hacken )
  • Erlaubt den URLs zu arbeiten, auch wenn das aus irgendeinem Grund fehlschlägt .

Siehe auch Breaking the Web mit Hash Bangs .

Der Hashbang-Ansatz:

  • Funktioniert in alten Browsern
  • Gibt nicht vor, einen serverseitigen Fallback zu haben, wenn Sie nicht die Mühe investieren, einen zu erstellen.

Hinweis: Ancient-Browser können einfach auf Links zu der vom Server generierten Seite zurückgreifen, wenn Sie die History-API verwenden.

Das heißt, Angulars Verwendung der History-API ist ziemlich schlecht.

Die folgenden Zitate stammen aus der Dokumentation :

  

Wenn Sie diesen Modus verwenden, müssen Sie das URL-Rewriting auf der Serverseite durchführen. Im Grunde müssen Sie alle Ihre Links zum Einstiegspunkt Ihrer Anwendung umschreiben (z. B. index.html).

Dieser Rat ist schrecklich. Wenn Sie die History-API verwenden, sollten Sie Ihren serverseitigen Code mit progressiver Verbesserung schreiben. Indem man jede URL in ein HTML-Dokument umschreibt, das Angular bootet und nichts anderes tut, macht man verschiedene URLs, die vom Server gehandhabt werden, sinnlos. Sie hängen auch vollständig von der JS-Funktion ab, da es keine Möglichkeit gibt, den Server dazu zu bringen, den Inhalt zu liefern, wenn er fehlschlägt.

Kurz gesagt, dieser Ansatz verwendet die History-API aus rein kosmetischen Gründen und verwendet dann einen Dirty-Hack, um 404-Fehler zu vermeiden.

  

Für Browser, die die HTML5-Verlaufs-API unterstützen, verwendet $ location die HTML5-Verlaufs-API zum Schreiben von Pfad und Suche. Wenn die Verlaufs-API nicht von einem Browser unterstützt wird, stellt $ location eine Hashbang-URL bereit.

Dies ist das Ergebnis von Angular, gefolgt von der Philosophie, dass die History-API eher aus kosmetischen als aus praktischen Gründen besteht. Anstatt auf reguläre Seiten vom Server zu wechseln, greift Angular auf zwei URLs (eine History-API und eine Hashbang-URL) für jede Ressource zurück.

    
Quentin 05.09.2014 12:28
quelle

Tags und Links