Backbone: Sensibilidad a mayúsculas y minúsculas de enrutamiento

Creado en 12 abr. 2015  ·  5Comentarios  ·  Fuente: jashkenas/backbone

Debería haber una opción para configurar las rutas para que distingan entre mayúsculas y minúsculas o no.

Algo como esto

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

Todos 5 comentarios

Use una expresión regular para su ruta y la bandera i (sin distinción entre mayúsculas y minúsculas). Es.: /regex/i

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

Puede agregar manualmente rutas de expresiones regulares que no distinguen entre mayúsculas y minúsculas dentro #initialize .

Entiendo que la especificación para URL especifica la distinción entre mayúsculas y minúsculas, pero el hecho de que su solución requiera una buena desviación de la forma normal en que se especifican las rutas puede causar muchos dolores de cabeza. Hay innumerables fragmentos de software web que se han desviado de las especificaciones oficiales porque resultó que las especificaciones oficiales no consideraron algunos casos de uso importantes. No sugiero que se desvíe de la especificación en su comportamiento predeterminado, pero no ofrezco la opción de desactivar la distinción entre mayúsculas y minúsculas porque "esa es la especificación" ignora toda la demanda real del mundo real para ese comportamiento. Estamos ejecutando .NET en IIS, ninguno de los cuales requiere direcciones URL que distingan entre mayúsculas y minúsculas, por lo que exigir a todos nuestros desarrolladores que regresen y corrijan todas las miles de direcciones URL dispersas en todo el proyecto solo para satisfacer la especificación no va a ser suficiente. suceder. Hay preguntas de desbordamiento de pila sobre esto, personas que publican trucos y soluciones en línea, todo porque está priorizando la especificación del W3C sobre los usuarios reales del mundo real.

Si no permite esta opción, al menos exponga el código relacionado en backbone (que actualmente se encuentra cerrado) para que podamos anular este comportamiento sin modificar la fuente original.

De hecho, la especificación en realidad no dice que las URL distinguen entre mayúsculas y minúsculas:

"Las URL _en general_ distinguen entre mayúsculas y minúsculas (con la excepción de los nombres de las máquinas). Puede haber URL, o partes de URL, donde las mayúsculas y minúsculas no importan , pero identificarlas puede no ser fácil. Los usuarios siempre deben considerar que las URL son mayúsculas y minúsculas. -sensible. /u"

"En general" != "tiene que ser". Dice que los usuarios siempre deben considerar que distinguen entre mayúsculas y minúsculas, pero eso se debe a que, si no lo hacen, es posible que no funcionen correctamente si el enrutador/servidor está configurado para distinguir entre mayúsculas y minúsculas.

Siento que si apache se puede configurar para que no distinga entre mayúsculas y minúsculas, Backbone debería ser de la misma manera.

Esta solución tampoco ayuda en los casos en que la raíz del enrutador es la que contiene el error de caso.

Por ejemplo, si la aplicación no se encuentra en la raíz de un dominio, como en el caso de www.example.com/MyApp , entonces su solución de expresiones regulares no ayudará cuando un usuario escriba www.example.com/myapp .

¿Fue útil esta página
0 / 5 - 0 calificaciones