Con una estructura de navegación basada en hash, definirá sus rutas y sus controladores a través de JS en el navegador ... Cuando se cambia el hash, se activa un evento 'hashchange' y la 'window.onhashchange se llama a la función de controlador. *
por ejemplo
if ("onhashchange" in window) {
alert("The browser supports the hashchange event!");
}
function locationHashChanged() {
if (location.hash === "#somecoolfeature") {
somecoolfeature();
}
}
window.onhashchange = locationHashChanged;
Existe la opción de utilizar también el empuje de HTML5 más recientemente introducido.
Eche un vistazo a http://www.microjs.com/#spa para algunas buenas bibliotecas de enrutamiento JS: algunas de ellas brindan soporte para pushstate HTML5 así como contratiempos para hashchange para navegadores más antiguos.
Si está buscando construir una aplicación seria, podría utilizar algo como Backbone.js para manejar modelos, vistas, enrutamiento, etc. También debería verificar Crossroads.js (biblioteca de enrutamiento) y su Hasher.js acompañante (biblioteca hashchange/pushstate) si no necesita todos los extras que vienen con Backbone.
... o está LeviRoutes (HTML5 pushstate only, muy parecido al enrutamiento en Express for Node.js).
... o barbacoa Jquery (para jQuery/algunas características agradables/a base de hashchange - (github.com/cowboy/jquery-bbq)
... y luego, no hay dirección (hashchange/toneladas de características/trabajos en Node.js y el navegador/similar al enrutamiento Express/desarrollado principalmente por la gente de Nodejitsu).
* Nota: si te estás enfocando en SEO, entonces hashchange/ajax presentará algunos problemas. ... es posible que desee leer las directrices para webmasters de Google: http://code.google.com/web/ajaxcrawling/docs/getting-started.html
** PD: puede encontrar todas las bibliotecas mencionadas anteriormente en MicroJS.com sitio, a excepción de Jquery barbacoa
Esta pregunta probablemente obtendrá cerrado por no ser un verdadero problema. ¿Podría aclarar más claramente con qué está teniendo problemas? http://stackoverflow.com/faq#close –
try sammyjs http://sammyjs.org/ –