2011-07-02 29 views
10

Vi el último backbone.js (0.5) introdujo la opción pushState para el enrutamiento.¿Para qué sirve pushState?

Después de leer https://developer.mozilla.org/en/dom/manipulating_the_browser_history Tengo que decir que no es muy claro para mí: qué es pushState y qué es exactamente lo que pushState trae, en el contexto de escribir una aplicación web con red troncal; ¿es para:

  • URLs mejora: tener una url 'real', bookmarkable, 'servidor alcanzable', en contraposición a los hashes?

  • degradación gradual: ¿permite que el servidor muestre las páginas correctas sin JS habilitado?

  • ambos/ninguno de los anteriores, u otras razones?

Además, ¿qué estoy haciendo mal a continuación:?

class MyRouter extends Backbone.Router 
    routes : 
    ''  : 'index' 
    '#hello' :'hello' 

    index : -> console.log 'index' 
    hello: -> console.log 'hello' 

new MyRouter 

Backbone.history.start pushState: true 

Cuando navego a http://localhost#hello, la URL se cambia a http://localhost/#hello, pero la devolución de llamada no se dispara?

Gracias

Respuesta

2

No es necesario el prefijo # en la tabla de rutas. Pruebe esto:

routes : 
    ''  : 'index' 
    'hello' : 'hello' 

En cuanto a pushState, creo que son las dos anteriores. Significa más trabajo en el lado del servidor de lo que tendría que hacer con el hash de ubicación porque tendrá que asegurarse de que su servidor pueda publicar páginas para todas esas URL.