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?
Mit der Verlaufs-API können Sie eine echte URL erstellen, über die der entsprechende Inhalt direkt vom Server bereitgestellt werden kann.
Dies:
Siehe auch Breaking the Web mit Hash Bangs .
Der Hashbang-Ansatz:
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.
Tags und Links javascript angularjs html5