Pregunta Ember Routes vs Controllers vs Views


He leído la mayoría de las guías para principiantes en el sitio Ember.js, pero todavía estoy confundido sobre el lugar correcto para poner cosas.

  1. Ruta - a partir de la investigación en línea, la gente sugirió poner la lógica relacionada con el enrutamiento en la ruta. Eso está bien, pero lo único que puedo pensar es this.transisionTo(). Leí en otro lado que todas las operaciones relacionadas con el modelo deberían estar en la ruta porque ahí es donde model el campo está definido. ¿Es esto correcto? ¿Cuáles son algunos buenos casos de uso de poner actions en la ruta sobre el controlador?

  2. Ver - Actualmente, no puedo ver el punto de vista. Los documentos dicen que maneja eventos DOM nativos, pero probablemente siempre use el {{action}} Ayudante que será manejado por el controlador. Entonces, ¿cuáles son algunos buenos casos de uso de usar la vista sobre el controlador en lo que respecta a las acciones? Cuáles son algunos buenos casos de uso de la vista que generalmente consideran que usaré componentes sobre vistas para código reutilizable.

  3. Controlador - Me parece que el controlador puede hacer cualquier cosa que la Vista o la Ruta pueda hacer. Puede hacer la transición usando this.transitionToRoute(), puede guardar modelos usando this.get('model').save() y puede manejar acciones usando el {{action}} ayudante. Todos los tutoriales para principiantes parecen ignorar por completo la vista y usar el controlador en su lugar. ¿Cuáles son algunos buenos casos de uso del uso del controlador sobre la vista o la ruta?

Supongo que todo se reduce a una pobre comprensión de cómo todo se junta. No puedo encontrar nada en línea o en los documentos que sea explícito sobre las áreas grises como dónde usar el {{action}} ayudante para diferentes escenarios. Los enlaces a algunos buenos materiales también serían útiles.


32
2017-07-12 11:04


origen


Respuestas:


Actualizar: No toda esta información será correcta para Ember 2. Hasta donde yo sé, Ember 2.0 solo usará Components.

Cómo varios componentes de Ember.js encajan

Modelo

Un modelo se ocupa de interactuar con una tienda de datos. Un ejemplo de almacén de datos puede ser un servidor RESTful o Localstorage.

Modelo

Una plantilla se encarga de construir HTML a partir de los datos disponibles para su controlador y vista. Un controlador a su vez tiene acceso a un modelo.

Controlador y vista

Los controladores y las vistas son muy similares y ambos actúan sobre los eventos generados por el usuario. Se supone que un controlador debe tomar medidas en eventos semánticos como submit y se supone que una Vista debe tomar medidas en eventos de interacción como focus o click.

Enrutador

Ember tiene un solo enrutador. El enrutador vincula urls a Rutas. Por ejemplo users/:user_id a users.show ruta o UsersShowRoute.

Ruta

Cada ruta, cuando se activa, se encarga de desempaquetar una url en un estado. Por ejemplo users/:user_id requiere que un usuario inicie sesión para ver el perfil de un amigo. Una ruta se asegura de que un usuario inicie sesión y cuide el estado de inicio de sesión.

Una ruta obtiene información del almacén de datos. Por ejemplo users/pekhee irá a buscar pekhee usuario de un almacén de datos y dárselo a Controlador y Vista.

Una ruta elige dinámicamente qué Controlador y Visualización necesita o cuántos de ellos necesita.

Una ruta administra el estado de una aplicación y cómo debe representarse ese estado. Sin embargo, los Modelos se encargan de gestionar el estado de la aplicación para Route y Controllers / Views, y se encargan de gestionar los detalles esenciales de su representación.

Mantenga la lógica lo más relevante y lo más local posible: algunas notas

  • Si su lógica no se preocupa por ningún contexto o modelo, colóquelo activate devolución de llamada de la ruta.
  • Si una pieza de lógica solo necesita saber modelo, colóquela afterModel devolución de llamada de la ruta.
  • Si necesita conocer el contexto del Controlador o interactuar con el significado semántico de un recurso, póngalo en un controlador.
  • Si necesita conocer el contexto de Ver o interactuar con la representación de un recurso, póngalo en una vista.
  • Si necesita conocer ambos contextos o interactuar con la semántica y la presentación de un recurso, primero dele el evento a una vista y luego escalelo a un controlador.

Ejemplos

Cuando más de un Controlador trabaja con un Modelo, mantenga las acciones semánticas en la ruta más alta posible en la cadena; de lo contrario, mantenga la lógica en la mayoría del Controlador local.

Mantenga el código relacionado con la animación en Ver y use Liquid Fire.

A veces, cada usuario tiene muchas publicaciones y cada publicación tiene muchos comentarios. Intenta tener un usuario relevante de devolución de Ruta. Luego, solicite al usuario relevante las publicaciones en PostsRoute y después de eso intente solicitar comentarios relevantes en CommentsRoute. Esto mantiene la lógica lo más local posible. La ruta de comentarios no necesita saber cómo recuperar un usuario.


15
2017-07-13 01:45



Creo que ember2.0 pretendía abandonar la vista y los controladores, quiere hacer que los códigos sean más reutilizables y es por eso que los componentes son más bienvenidos. Para el beneficio de poner acciones en ruta en lugar de controladores, solo puedo ver que facilita la comprensión de las brasas para los nuevos usuarios. Ya no es necesario que pases mucho tiempo tratando de entender la relación entre el controlador, la ruta, el enrutador, la vista y la plantilla. Esa es mi suposición sin embargo.


0
2017-12-21 16:28