2012-01-24 13 views
15

Estoy interesado en la implementación de Backbone.js para algunas de las estructuras CRUD in-page más repetitivas en nuestra aplicación (que se basa en el framework CakePHP). He intentado controlar a Backbone mientras pensaba cómo funcionaría junto con Cake, y estoy "un poco perdido cuando se trata de separar los deberes de las dos partes."Backbone.js y CakePHP

¿Estoy tratando de engañarme? algo en mi sitio que no necesita estar allí? ¿Hay precedencia para este tipo de estructura de pila? Estoy todo oídos en este punto.

+0

Comentario, porque realmente no tengo una respuesta completa. Creo que la red troncal funciona mejor con una API (repos), por lo que la perspectiva que debes tomar con CakePHP es manejar todas las acciones con solicitudes y respuestas JSON. – Evert

+0

Entonces, ¿desarrolla el lado api/platform de la aplicación más a fondo que el punto de acceso? – dclowd9901

+1

Creo que podrías estructurar la columna vertebral para actuar más como un formulario cakephp normal, con el envío de formularios estándar, pero el uso de una API puede ser más apropiado y funcionar mejor con Backbone. Supongo que realmente también depende del objetivo que estás tratando de lograr con la red troncal. Puedes usarlo para muchas cosas, pero también para validar la forma, supongo. – Evert

Respuesta

28

En realidad estoy trabajando en la misma situación ahora (aunque con Python/Flask, pero los mismos conceptos deberían aplicarse a cualquier lenguaje del lado del servidor). Así es como va el flujo de trabajo para una página en mi aplicación. Solo una nota que NO sigo el formato de la aplicación de una sola página; en mi aplicación, cada página principal es una recarga completa.

  1. usuario solicita una página, por ejemplo una lista de empresas,/empresas/lista/
  2. servidor hace el enrutamiento, cargar el controlador correcto
  3. controlador carga primeras empresas X de DB
  4. Las empresas están codificados como JSON
  5. se carga
  6. Otro de metadatos (como el número total de empresas) y se convirtió en JSON
  7. la plantilla de página de la lista se carga y el JSON apareció en una etiqueta > < la escritura dentro de la plantilla. Tenga en cuenta aquí I no complete la tabla de la lista o cualquier cosa en esas líneas, dejo que Backbone haga todo eso. Rellene el JSON aquí para que el cliente no tenga que hacer una segunda solicitud para el conjunto inicial de empresas
  8. La página de la lista se envía al cliente. El servidor está hecho por ahora
  9. El cliente tiene todos los datos que necesita para iniciarse, entonces tomo el JSON y lo paso a mi Backbone. Vea la página de listado
  10. La vista crea una colección para los modelos y administra un conjunto de sub-vistas que representan las entradas en la lista
  11. Cualquier otra creación de procesamiento/vista ocurre como la creación de páginas, botones prev/next, etc.
  12. Si el usuario hace clic en la página siguiente de las compañías , Disparo una consulta AJAX al servidor (/ companies/listing/page/1 o algo similar) que devuelve una nueva cadena JSON con un nuevo conjunto de modelos
  13. Envía el nuevo conjunto de modelos a mi Backb uno.Ver que actualiza todo

De hecho, el servidor no se utiliza para nada más que la carga real de datos y el envío inicial de la plantilla. Me gusta porque me permitirá conectar fácilmente nuevas interfaces (por ejemplo, una aplicación para iPad o algo así).

Para una forma, en muy grandes rasgos, hago algo como esto:

  1. El usuario solicita la forma,/empresas/editar/1
  2. servidor hace permisos de cheques, las cargas de entrada, envía la plantilla/JSON al cliente.Servidor no rellenar el formulario con los datos
  3. cliente utiliza JSON para llenar el formulario
  4. cliente modifica la forma, golpea presentar
  5. Todos los cambios se aplican al modelo, el modelo se convirtió en JSON y se envía al servidor usando AJAX
  6. Server realiza la validación y, o bien envía mensajes de error (en JSON) al cliente o actualiza la base de datos y envía un mensaje de éxito

Así, de nuevo, esas son realmente grandes rasgos en como lo hice En general, utilizo el servidor para tomar datos de la base de datos, hago validaciones del lado del servidor (no puedo confiar en el cliente je) y actualizo la base de datos.

Si tiene algunas preguntas específicas, me complace intentar compartir lo que he aprendido hasta ahora.

+0

+1 ampliamente respondida – vikmalhotra

+0

Sospeché que estaría cargando la página JSON en Backbone, y lo que dijiste lo confirma. Me alegra saber que al menos estaba en el camino correcto. Muchas gracias por esta respuesta. Muy completo, y me da un buen proceso para comenzar. – dclowd9901

+0

Ningún problema en absoluto. Feliz fue útil. –