Pregunta

Estoy diseñando una aplicación web basada en el navegador de una página.

JQuery ya se está utilizando en mi aplicación. Actualmente estoy planeando usar KnockoutJS para la unión de datos y la gestión de la interfaz de usuario. Sin embargo, he usado Backbone.js En el pasado, y me ha impresionado bastante las instalaciones de enrutamiento proporcionadas por la capa del controlador.

También he buscado una solución basada en jQuery como ruta para enrutamiento del lado del cliente.

Sería genial si alguien pudiera ofrecer sugerencias y pautas para elegir un sistema de enrutamiento adecuado.

No estoy dispuesto a usar Backbone.js en vez de KnockoutJS Debido a las excelentes instalaciones de unión de datos de KnockoutJS.

¿Fue útil?

Solución

Después de pasar por un poco de exploración, he encontrado la solución. Las instalaciones de enrutamiento de @Eisenhauer Backbone son increíbles, pero ¿qué pasa si no estoy usando Backbone? Como describí en mi pregunta, ya estoy usando knockoutjs que me proporciona un modelo MVVM del lado del cliente y, por lo tanto, no es realmente una buena idea poner una implementación de MVC adicional en la misma página.

Para las personas que buscan una solución de enrutamiento independiente, PathJS es una solución simple y elegante.

Una solución de enrutamiento más flexible, potente y independiente es Crossroads.js disponible en http://millermedeiros.github.com/crossroads.js/. Está muy bien documentado y realmente poderoso, por lo que se puede adaptar a cualquier conjunto de requisitos.

Otros consejos

¿Podría usar la API de la historia en lugar de un enfoque de hashbang?

  • Le permite manipular la URL que se muestra al usuario.
  • Significa que el trabajo hacia atrás / hacia adelante con sensatamente.
  • El marcador de la página funciona con sensatez.
  • Es mejor en términos de rendimiento, porque si el usuario actualiza una página (o llega a un enlace a la página desde una fuente externa), el contenido correcto se carga la primera vez en lugar de tener que cargar una página en blanco y luego tomar el contenido correcto a través de AJAX .

La desventaja es que los navegadores más antiguos no lo apoyarán. Podrías recurrir a un enfoque de hashbang (si realmente es necesario). Sin embargo, no conozco ningún marco existente que haga esto. Preferiría recurrir a no cargar dinámicamente el contenido (es decir, la página completa se vuelve a cargar cuando el usuario hace clic en un enlace). La API de la historia será cada vez más ampliamente compatible, por lo que este "problema" se reducirá con el tiempo.

Aquí está un ejemplo de trabajo con alguna documentación. Desde la barra de direcciones, parece que las páginas están cargando "Old School" (actualización de la página completa), pero si mira la consola (Firebug, Chrome Dev Tools), puede ver que el contenido se toma a través de una solicitud de Ajax .

Mozilla tiene algunos documentos sobre eso.

También hay excelente Director

Crossroads.js Parece ser uno de los mejores. Una gran ventaja de esto, no se basa en la ventana. Ubicación para el enrutamiento. Es liviano, ya que se adhiere a hacer solo enrutamiento y enrutamiento solo.

Otros, es posible que desee probar: finch.js, davisjs (Basado en PushState para que pueda usar los enlaces existentes como alternativos si JS falla)

Agregar una actualización: 30 de marzo de 2015 - Me mudé a AngularJS a fines del año pasado. Sin duda, el mejor cambio de interruptor JQ, tiene muchos módulos como el enrutamiento incorporado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top