Backbone: 大文字と小文字の区別

作成日 2015年04月12日  ·  5コメント  ·  ソース: jashkenas/backbone

大文字と小文字を区別するようにルートを設定するオプションがあるはずです

このようなもの

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

全てのコメント5件

ルートとフラグi(大文字と小文字を区別しない)には正規表現を使用します。 Es。:/ regex / i

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

#initialize内に、大文字と小文字を区別しない正規表現ルートを手動で追加できます。

URLの仕様で大文字と小文字の区別が指定されていることは理解していますが、ソリューションでルートを指定する通常の方法からかなり逸脱する必要があるという事実は、多くの問題を引き起こす可能性があります。 公式の仕様ではいくつかの重要なユースケースが考慮されていないことが判明したため、公式の仕様から逸脱したWebソフトウェアは無数にあります。 デフォルトの動作で仕様から逸脱することをお勧めしませんが、「これが仕様です」はその動作に対する実際の実際の要求をすべて無視しているため、大文字と小文字の区別をオフにするオプションは提供していません。 IISで.NETを実行していますが、どちらも大文字と小文字を区別するURLを要求しないため、仕様を満たすためだけに、プロジェクト全体に散在する数千のURLをすべて修正する必要はありません。起こる。 これについてはスタックオーバーフローの質問があります。人々はハックや回避策をオンラインで投稿しています。これはすべて、実際の実際のユーザーよりもW3Cの仕様を優先しているためです。

これをオプションとして許可しない場合は、少なくともバックボーン(現在はクロージャーになっている)で関連コードを公開して、元のソースを変更せずにこの動作をオーバーライドできるようにします。

実際、仕様では、URL大文字と小文字が区別されるとは実際には述べられていません。

「URLは_一般的に_大文字と小文字が区別されます(マシン名を除く)。大文字と小文字は関係ありませんが、URLまたはURLの一部が存在する場合がありますが、これらを識別するのは簡単ではありません。ユーザーは常にURLが大文字と小文字であると見なす必要があります。大文字と小文字を区別します。/u "

"一般的に"!= "である必要があります。" ユーザーは常に大文字と小文字を区別する必要があると書かれていますが、そうでない場合、ルーター/サーバーで大文字と小文字が区別されるように構成されていると、正しく使用されない可能性があります。

箱から出してケースに依存しないようにApacheを構成できるのであれば、Backboneも同じようにすべきだと思います。

このソリューションは、ルーターのルートがケースエラーを含む場合にも役立ちません。

たとえば、 www.example.com / MyAppの場合のように、アプリがドメインのルート上にない場合、ユーザーがwww.example.com/myappと入力しても、正規表現ソリューションは役に立ちません。

このページは役に立ちましたか?
0 / 5 - 0 評価