Backbone: Groß-/Kleinschreibung beim Routing

Erstellt am 12. Apr. 2015  ·  5Kommentare  ·  Quelle: jashkenas/backbone

Es sollte eine Option geben, um die Router so einzustellen, dass sie zwischen Groß- und Kleinschreibung unterscheiden oder nicht

So etwas

var Router = Backbone.Router.extend({
    routes: {
        "/": "home"
    },
    ignoreCase:true
});
change wontfix

Alle 5 Kommentare

Verwenden Sie eine Regex für Ihre Route und das Flag i (Groß-/Kleinschreibung wird nicht beachtet). Beispiel: /regex/i

var Router = Backbone.Router.extend({
    routes: {
        /regex/i: "home"
    }
    ....
});

Sie können Regex-Routen ohne Berücksichtigung der Groß-/Kleinschreibung innerhalb #initialize manuell hinzufügen .

Ich verstehe, dass die Spezifikation für URLs die Groß- und Kleinschreibung angibt, aber die Tatsache, dass Ihre Lösung ein gutes Stück Abweichung von der normalen Art und Weise erfordert, wie Routen angegeben werden, kann viele Kopfschmerzen verursachen. Es gibt unzählige Teile von Websoftware, die von den offiziellen Spezifikationen abgewichen sind, weil sich herausstellte, dass die offiziellen Spezifikationen einige wichtige Anwendungsfälle nicht berücksichtigten. Ich schlage nicht vor, dass Sie in Ihrem Standardverhalten von der Spezifikation abweichen, aber ich biete nicht die Option an, die Berücksichtigung der Groß-/Kleinschreibung zu deaktivieren, da "das ist die Spezifikation" die gesamte tatsächliche Nachfrage nach diesem Verhalten ignoriert. Wir führen .NET auf IIS aus, die beide keine URLs mit Berücksichtigung der Groß-/Kleinschreibung erfordern, sodass alle unsere Entwickler zurückgehen und all die Tausenden von URLs reparieren müssen, die im gesamten Projekt verstreut sind, nur um die Spezifikation zu erfüllen, geht einfach nicht passieren. Es gibt Stack-Overflow-Fragen dazu, Leute posten Hacks und Problemumgehungen online, alles nur, weil Sie die Spezifikation des W3C gegenüber tatsächlichen Benutzern aus der realen Welt priorisieren.

Wenn Sie dies nicht als Option zulassen, stellen Sie zumindest den zugehörigen Code im Backbone bereit (der sich derzeit in einer Schließung befindet), damit wir dieses Verhalten überschreiben können, ohne die ursprüngliche Quelle zu ändern.

Tatsächlich sagt die Spezifikation nicht wirklich, dass URLs zwischen Groß- und Kleinschreibung unterscheiden :

"Bei URLs wird _im Allgemeinen_ zwischen Groß- und Kleinschreibung unterschieden (mit Ausnahme von Maschinennamen). Es kann URLs oder Teile von URLs geben, bei denen die Groß-/Kleinschreibung keine Rolle spielt, aber diese zu identifizieren ist möglicherweise nicht einfach. Benutzer sollten immer berücksichtigen, dass bei URLs die Groß-/Kleinschreibung beachtet wird -sensitiv. /u"

"Im Allgemeinen" != "müssen sein." Es besagt, dass Benutzer immer zwischen Groß- und Kleinschreibung unterscheiden sollten, aber das liegt daran, dass sie, wenn sie dies nicht tun, möglicherweise nicht richtig sind, wenn der Router/Server für die Unterscheidung zwischen Groß- und Kleinschreibung konfiguriert ist.

Ich habe das Gefühl, wenn Apache standardmäßig für die Groß- und Kleinschreibung konfiguriert werden kann, sollte Backbone genauso sein.

Diese Lösung hilft auch nicht in Fällen, in denen der Root des Routers den Fallfehler enthält.

Wenn sich die App beispielsweise nicht im Stammverzeichnis einer Domain befindet, wie im Fall von www.example.com/MyApp , hilft Ihre Regex-Lösung nicht, wenn ein Benutzer www.example.com/myapp eingibt .

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen