Backbone: Чувствительность к регистру при маршрутизации

Созданный на 12 апр. 2015  ·  5Комментарии  ·  Источник: jashkenas/backbone

Должна быть возможность установить маршруты с учетом регистра или без него.

Что-то вроде этого

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

Все 5 Комментарий

Используйте регулярное выражение для вашего маршрута и флаг i (без учета регистра). Пример: /regex/i

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

Вы можете вручную добавить маршруты регулярных выражений без учета регистра внутри #initialize .

Я понимаю, что спецификация для URL-адресов указывает на чувствительность к регистру, но тот факт, что ваше решение требует значительного отклонения от обычного способа указания маршрутов, может вызвать много головной боли. Существует бесчисленное множество веб-приложений, которые отклоняются от официальных спецификаций, потому что оказалось, что официальные спецификации не учитывают некоторые важные варианты использования. Я не предлагаю вам отклоняться от спецификации в вашем поведении по умолчанию, но и не предлагаю возможность отключить чувствительность к регистру, потому что «это спецификация» игнорирует все фактические, реальные потребности в таком поведении. Мы используем .NET на IIS, ни один из которых не требует URL-адресов с учетом регистра, поэтому требовать от всех наших разработчиков вернуться и исправить все тысячи URL-адресов, разбросанных по всему проекту, только для того, чтобы удовлетворить спецификации, просто не будет. случаться. По этому поводу возникают вопросы о переполнении стека, люди публикуют хаки и обходные пути в Интернете, и все потому, что вы отдаете предпочтение спецификации W3C, а не реальным пользователям из реального мира.

Если вы не разрешаете это как вариант, по крайней мере, предоставьте соответствующий код в магистрали (который в настоящее время находится в закрытии), чтобы мы могли переопределить это поведение без изменения исходного кода.

На самом деле в спецификации не говорится, что URL - адреса чувствительны к регистру:

«URL-адреса _в целом_ чувствительны к регистру (за исключением имен компьютеров). Могут быть URL-адреса или части URL-адресов, где регистр не имеет значения , но определить их может быть непросто. Пользователи всегда должны учитывать, что URL-адреса -чувствительный. /u"

"Вообще" != "должно быть." В нем говорится, что пользователи всегда должны учитывать их регистрозависимость, но это потому, что если они этого не сделают, они могут быть неправильными, если маршрутизатор/сервер настроен на чувствительность к регистру.

Я чувствую, что если apache можно настроить на нечувствительность к регистру из коробки, Backbone должен быть таким же.

Это решение также не помогает в случаях, когда корень маршрутизатора содержит ошибку регистра.

Например, если приложение не находится в корне домена, как в случае с www.example.com/MyApp , ваше решение с регулярным выражением не поможет, когда пользователь вводит www.example.com/myapp .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги