Backbone: Diferenciação de maiúsculas e minúsculas de roteamento

Criado em 12 abr. 2015  ·  5Comentários  ·  Fonte: jashkenas/backbone

Deve haver uma opção para definir as rotas para diferenciar maiúsculas de minúsculas ou não

Algo assim

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

Todos 5 comentários

Use um regex para sua rota e o sinalizador i (não diferencia maiúsculas de minúsculas). Ex.: /regex/i

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

Você pode adicionar manualmente rotas regex que não diferenciam maiúsculas de minúsculas dentro de #initialize .

Entendo que a especificação para URLs especifica a distinção entre maiúsculas e minúsculas, mas o fato de sua solução exigir um bom desvio da maneira normal como as rotas são especificadas pode causar muitas dores de cabeça. Existem inúmeros bits de software da web que se desviaram das especificações oficiais porque as especificações oficiais não consideraram alguns casos de uso importantes. Não estou sugerindo que você se desvie da especificação em seu comportamento padrão, mas não estou oferecendo a opção de desativar a diferenciação de maiúsculas e minúsculas porque "essa é a especificação" está ignorando toda a demanda real do mundo real para esse comportamento. Estamos executando .NET no IIS, nenhum dos quais exige URLs que diferenciam maiúsculas de minúsculas, portanto, exigir que todos os nossos desenvolvedores voltem e corrijam todos os milhares de URLs espalhados pelo projeto apenas para satisfazer as especificações não vai funcionar. acontecer. Há perguntas de estouro de pilha sobre isso, pessoas postando hacks e soluções alternativas on-line, tudo porque você está priorizando as especificações do W3C sobre usuários reais do mundo real.

Se você não permitir isso como opção, pelo menos exponha o código relacionado no backbone (que está atualmente em um encerramento) para que possamos substituir esse comportamento sem modificar a fonte original.

Na verdade, a especificação não diz que os URLs diferenciam maiúsculas de minúsculas:

"Os URLs _em geral_ diferenciam maiúsculas de minúsculas (com exceção de nomes de máquina). Pode haver URLs, ou partes de URLs, onde maiúsculas não importam , mas identificá-los pode não ser fácil. Os usuários devem sempre considerar que os URLs são maiúsculas -sensível. /u"

"Em geral" != "tem que ser." Ele diz que os usuários devem sempre considerá-los com distinção entre maiúsculas e minúsculas, mas isso porque, se não o fizerem, podem não ser adequados se o roteador/servidor estiver configurado para diferenciar maiúsculas de minúsculas.

Eu sinto que se o apache pode ser configurado para não diferenciar maiúsculas de minúsculas, o Backbone deve ser da mesma maneira.

Esta solução também não ajuda nos casos em que a raiz do roteador é o que contém o erro do caso.

Por exemplo, se o aplicativo não estiver na raiz de um domínio, como no caso de www.example.com/MyApp , sua solução regex não ajudará quando um usuário digitar www.example.com/myapp .

Esta página foi útil?
0 / 5 - 0 avaliações