Должна быть возможность установить маршруты с учетом регистра или без него.
Что-то вроде этого
var Router = Backbone.Router.extend({
routes: {
"/": "home"
},
ignoreCase:true
});
Используйте регулярное выражение для вашего маршрута и флаг 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 .