En todos los ejemplos (tabla de clasificación, juegos de palabras, etc.) tienen un único archivo de plantilla HTML. ¿Existe algún gran proyecto de Meteor de código abierto con muchos archivos de plantillas HTML diferentes que podamos usar como ejemplo de mejores prácticas? No parece práctico poner todo lo que una aplicación grande necesita en un solo archivo de plantilla.
165
Respuestas:
¡Agrúpelo todo junto! De los documentos:
fuente
Al igual que en las preguntas frecuentes sobre meteoritos no oficiales, creo que explica bastante bien cómo estructurar una aplicación grande:
Obtenga más información: Preguntas frecuentes sobre meteoritos no oficiales
fuente
mobile-config.js
?Estoy de acuerdo con yagooar, pero en lugar de:
Utilizar:
Los archivos main. * se cargan en último lugar. Esto ayudará a garantizar que no tenga problemas de orden de carga. Consulte la documentación de Meteor, http://docs.meteor.com/#structuringyourapp , para obtener más detalles.
fuente
Meteor se diseñó para que pueda estructurar su aplicación de la forma que desee. Entonces, si no le gusta su estructura, simplemente puede mover un archivo a un nuevo directorio, o incluso dividir un archivo en muchas partes, y para Meteor es más o menos lo mismo. Solo tenga en cuenta el tratamiento especial de los directorios de clientes, servidores y públicos como se especifica en la página principal de documentación: http://docs.meteor.com/ .
Simplemente agrupar todo en un relleno HTML ciertamente no surgirá como una mejor práctica.
Aquí hay un ejemplo de una posible estructura: en una de mis aplicaciones, un foro de discusión, organizo por módulo o "tipo de página" (inicio, foro, tema, comentario), colocando archivos .css, .html y .js para cada tipo de página juntos en un directorio. También tengo un módulo "base", que contiene código común .css y .js y la plantilla maestra, que utiliza {{renderPage}} para representar uno de los otros módulos dependiendo del enrutador.
También puedes organizar por función
Sin embargo, espero que surjan algunas estructuras de mejores prácticas más específicas y convenciones de nomenclatura.
fuente
Para todos los que están buscando en Google sobre este tema:
La
em
herramienta de línea de comando (por EventedMind, los chicos detrás del Enrutador de Hierro) es muy útil cuando se manipula una nueva aplicación Meteor. Creará una buena estructura de archivos / carpetas. Si ya trabaja en una aplicación y desea reorganizarla, simplemente configure un nuevo proyectoem
y podrá usarlo como inspiración.Ver: https://github.com/EventedMind/em
Y aquí: /programming/17509551/what-is-the-best-way-to-organize-templates-in-meteor-js
fuente
Creo que la estructura de archivos del Discover Meteor Book es realmente buena y un comienzo sólido.
fuente
Crea paquetes
Por supuesto, no todo encaja en este enfoque, pero en aplicaciones grandes tendrá muchas funcionalidades que pueden aislarse. Cualquier cosa separable y reutilizable cabe en los paquetes, el resto va en la estructura de directorio habitual, como se menciona en otras respuestas. Incluso si no crea paquetes para evitar la sobrecarga, es una buena idea estructurar el código de forma modular (consulte estas sugerencias )
Meteor permite un control detallado sobre cómo cargar sus archivos (orden de carga, dónde: cliente / servidor / ambos) y qué exporta el paquete.
Especialmente encuentro muy útil la manera fácil de compartir la lógica entre los archivos relacionados. Digamos, por ejemplo, que quieres hacer alguna función de utilidad y usarla en diferentes archivos. Simplemente lo hace "global" (sin el
var
) y Meteor lo envolverá en el espacio de nombres del paquete, por lo que no contaminará el espacio de nombres globalAquí está el documento oficial.
fuente
Después de un tiempo fuera de la codificación de meteorjs, estoy feliz de tener algo de tiempo libre para dedicarlo a construir un juego en línea bastante complejo. La estructura de la aplicación ha sido una de mis primeras preocupaciones, y parece que varios programadores muy buenos han defendido el método de estructuración de una aplicación de solo paquete, que le permite acoplar paquetes funcionalmente distintos. Hay otras ventajas del enfoque, y se pueden encontrar 2 artículos muy buenos que explican el enfoque aquí:
http://www.matb33.me/2013/09/05/meteor-project-structure.html http://www.manuel-schoebel.com/blog/meteorjs-package-only-app-structure-with-mediator -patrón
fuente
Tenemos un gran proyecto (probablemente uno de los proyectos Meteor más grandes que alguien haya construido hasta la fecha, ya que estuvo en desarrollo a tiempo completo durante 1,5 años). Usamos el mismo conjunto de nombres de archivo en cada vista. Es muy consistente y nos ayuda a navegar rápidamente a exactamente lo que estamos buscando:
Se ve así en un proyecto:
Las plantillas relacionadas se almacenan juntas en el mismo archivo. El contenido de lo
view/order/checkout/templates.html
mostrado se contrajo aquí:Usamos subcarpetas cuando las vistas se vuelven complejas con muchas partes:
También desarrollamos con WebStorm, un editor extremadamente potente y flexible para el desarrollo de Meteor. Lo encontramos inmensamente útil cuando buscamos y organizamos nuestro código y trabajamos productivamente.
Feliz de compartir detalles a petición.
fuente
Utilice andamios de hierro-cli CLI. Hace las cosas muy fáciles.
https://github.com/iron-meteor/iron-cli
una vez instalado. utilizar
iron create my-app
para crear un nuevo proyecto. Creará la siguiente estructura para usted. También puede usar esto en proyectos existentes. utilizariron migrate
en el directorio del proyecto.fuente
Estoy siguiendo el formato repetitivo mattdeom, que ya incluye el enrutador de hierro y el Modelo (Colección2). Vea abajo :
fuente
Existen muchos enfoques diferentes para estructurar su aplicación. Por ejemplo, si tiene un enrutador y diferentes plantillas de página, y dentro de cada plantilla de página tiene muchas partes de página, etc., lo estructuraría dependiendo de la semántica de nivel superior> inferior.
Por ejemplo:
Por supuesto, puede poner sus plantillas de noticias en la carpeta común, ya que puede usar su plantilla de noticias en diferentes páginas.
Creo que es mejor estructurar su aplicación de una manera cómoda.
Escribí una pequeña aplicación aquí: http://gold.meteor.com Y es tan pequeña que uso solo un archivo html y solo un archivo template.js .. :)
Espero que ayude un poco
fuente
Hay una nueva clase en Evented Mind llamada Configuración de proyectos de meteoros que aborda esto pero también habla sobre la configuración del proyecto y la configuración de su entorno de desarrollo.
Del video Estructura de la aplicación en la clase: Meteor no tiene una opinión muy sólida sobre cómo debe estructurarse su aplicación, pero aquí hay algunas reglas:
1) Orden de carga: Meteor va primero a la ubicación más profunda del directorio de archivos y procesa los archivos en orden alfabético
2) el cliente y el servidor son carpetas especiales que Meteor reconoce
Nuestra estructura se ve así:
Todos_controller extiende RouteController, algo que viene con Iron Router.
La
em
herramienta mencionada anteriormente también está recibiendo una gran actualización en este momento y debería estar mucho mejor y disponible en: https://github.com/EventedMind/emfuente
También estoy buscando las mejores prácticas para mejorar y escalar mis aplicaciones a través de una arquitectura bien concebida. Todas las prácticas mencionadas anteriormente funcionan para aplicaciones de tamaño pequeño a mediano, pero fallarán cuando trabajes en un equipo más grande. Hay varias formas en que lo he intentado:
1) Seguí esta estrategia: https://github.com/aldeed/meteor-autoform para escalar y reutilizar plantillas. El autor tiene una muy buena idea sobre el diseño de componentes y de campo. Actualmente lo estoy implementando porque la comunidad desarrolló 36 paquetes que cubren casi todos los casos y puedo usar TypeScript para escribir con seguridad durante la fase de desarrollo.
Aquí hay una buena publicación de blog sobre cómo hacerlo: http://blog.east5th.co/2015/01/13/custom-block-helpers-and-meteor-composability/ , así como aquí: http: // meteorpedia .com / read / Blaze_Notes
2) Este se ve muy prometedor pero no se ha actualizado últimamente. Es un paquete escrito en script de café llamado. Blaze Components ( https://github.com/peerlibrary/meteor-blaze-components ) para Meteor es un sistema para desarrollar fácilmente elementos complejos de IU que deben reutilizarse en su aplicación Meteor. Puede usarlos en CoffeeScript, JavaScript vainilla y ES6. Lo mejor es que los componentes son OOP. Aquí está uno de sus ejemplos:
3) Me gustan los tipos y los transpiladores que me dicen dónde y cuándo algo saldrá mal. Estoy usando TypeScript para trabajar con Meteor y encontré el siguiente repositorio: https://github.com/dataflows/meteor-typescript-utils parece que el creador trató de lograr un enfoque MVC.
Lamentablemente, este proyecto no se mantiene ni se desarrolla activamente.
4) y creo que ya se mencionó, puedes escalar usando paquetes. Eso requiere una buena forma abstracta de pensar. Parece funcionar para Telescope: https://github.com/TelescopeJS/Telescope
5) meteor-template-extension : proporciona varias formas de copiar ayudantes de plantilla, manejadores de eventos y ganchos entre plantillas, permitiendo la reutilización de código; Una desventaja es que todas las copias deben ser realizadas por un desarrollador, a menudo una y otra vez, lo que se vuelve problemático a medida que crece la base de código; Además, sin una API claramente definida, la comunidad no puede construir y compartir componentes
6) Componentes de flujo: los componentes de flujo están más cerca de reaccionar en el diseño de la API, mientras que los componentes de Blaze mantienen conceptos familiares como contextos de datos y ayudantes de plantillas; Los componentes de flujo, por otro lado, todavía usan controladores de eventos basados en plantillas, mientras que los componentes de Blaze los convierten en métodos de clase para que sea más fácil extenderlos o anularlos a través de la herencia; en general, Blaze Components parece estar más orientado a OOP; Flow Components aún no se han lanzado oficialmente ( créditos de texto para los n. ° 5 y n. ° 6 https://github.com/peerlibrary/meteor-blaze-components#javascript-and-es6-support )
Los números 2 y 3 también necesitan acostumbrarse, pero con el tiempo ganarás velocidad de desarrollo. El número cuatro le permite construir y probar componentes para hacer que su código sea más estable. El número tres viene con la ventaja de la seguridad total de Typecript, que es una gran ventaja cuando se desarrolla en un equipo con poca documentación. Sin embargo, actualmente estoy transfiriendo el número dos a TypeScript porque me siento muy cómodo para trabajar con él y no tengo que modificar el paquete del compilador para que funcione con Meteor cuando no estoy usando Gulp.
Todavía es difícil encontrar la forma correcta de trabajar con Meteor. Debe resolverlo usted mismo, de lo contrario, terminará con una estructura de carpetas bien organizada, pero no tiene idea de dónde está todo. Feliz codificación
fuente