Dans tous les exemples (classement, jeu de mots, etc.), ils ont un seul fichier de modèle HTML. Existe-t-il un grand projet Meteor open source avec de nombreux fichiers de modèles HTML différents que nous pouvons utiliser comme exemple de bonne pratique? Cela ne semble pas pratique de mettre tout ce dont une grande application a besoin dans un seul fichier de modèle.
165
Réponses:
Mettez tout cela ensemble! À partir de la documentation:
la source
Comme dans la FAQ non officielle sur les météores, je pense que cela explique assez bien comment structurer une grande application:
En savoir plus: FAQ non officielle sur Meteor
la source
mobile-config.js
?Je suis d'accord avec yagooar, mais au lieu de:
Utilisation:
Les fichiers main. * sont chargés en dernier. Cela vous aidera à vous assurer que vous n'avez aucun problème d'ordre de chargement. Voir la documentation Meteor, http://docs.meteor.com/#structuringyourapp , pour plus de détails.
la source
Meteor a été conçu pour que vous puissiez structurer votre application à peu près comme vous le souhaitez. Donc, si vous n'aimez pas votre structure, vous pouvez simplement déplacer un fichier vers un nouveau répertoire, ou même diviser un fichier en plusieurs morceaux, et dans Meteor, c'est à peu près tout de même. Notez simplement le traitement spécial des répertoires client, serveur et public tel que spécifié dans la page principale de la documentation: http://docs.meteor.com/ .
Le simple fait de tout regrouper dans un seul remplissage HTML ne sera certainement pas une bonne pratique.
Voici un exemple d'une structure possible: dans l'une de mes applications, un forum de discussion, j'organise par module ou "type de page" (accueil, forum, sujet, commentaire), en mettant les fichiers .css, .html et .js pour chacun type de page ensemble dans un répertoire. J'ai aussi un module "base", qui contient le code commun .css et .js et le modèle maître, qui utilise {{renderPage}} pour rendre l'un des autres modules en fonction du routeur.
Vous pouvez également organiser par fonction
J'espère cependant que des structures de meilleures pratiques et des conventions de dénomination plus spécifiques émergeront.
la source
Pour tous ceux qui recherchent sur Google ce sujet:
L'
em
outil de ligne de commande (par EventedMind, les gars derrière Iron Router) est très utile lors du montage d'une nouvelle application Meteor. Cela créera une belle structure de fichiers / dossiers. Si vous travaillez déjà sur une application et que vous souhaitez la réorganiser, configurez simplement un nouveau projet avecem
et vous pouvez l'utiliser comme source d'inspiration.Voir: https://github.com/EventedMind/em
Et ici: /programming/17509551/what-is-the-best-way-to-organize-templates-in-meteor-js
la source
Je pense que la structure des fichiers du Discover Meteor Book est vraiment bonne et constitue un bon début.
la source
Créer des packages
Bien sûr, tout ne rentre pas dans cette approche, mais dans les grandes applications, vous aurez de nombreuses fonctionnalités qui peuvent être isolées. Tout ce qui est séparable et réutilisable tient dans des packages, le reste va dans la structure de répertoires habituelle, comme mentionné dans d'autres réponses. Même si vous ne créez pas de packages pour éviter la surcharge, structurer le code de manière modulaire est une bonne idée (voir ces suggestions )
Meteor permet un contrôle fin sur la façon dont vous chargez vos fichiers (ordre de chargement, où: client / serveur / les deux) et ce que le paquet exporte.
Je trouve surtout très pratique le moyen facile de partager la logique entre les fichiers associés. Disons, par exemple, que vous voulez créer une fonction util et l'utiliser dans différents fichiers. Vous le rendez simplement "global" (sans le
var
) et Meteor l'enveloppera dans l'espace de noms du paquet, donc il ne polluera pas l'espace de noms globalVoici la doc officielle
la source
Après un certain temps en dehors du codage meteorjs, je suis heureux d'avoir un peu de temps libre à consacrer à la création d'un jeu en ligne assez complexe. La structure de l'application a été l'une de mes premières préoccupations, et il semble que plusieurs très bons programmeurs aient défendu la méthode de structuration d'une application uniquement basée sur les packages, qui vous permet de coupler de manière lâche des packages fonctionnellement distincts. Il y a d'autres avantages à l'approche, et 2 très bons articles expliquant l'approche peuvent être trouvés ici:
http://www.matb33.me/2013/09/05/meteor-project-structure.html http://www.manuel-schoebel.com/blog/meteorjs-package-only-app-structure-with-mediator -modèle
la source
Nous avons un grand projet (probablement l'un des plus grands projets Meteor que quiconque ait construit à ce jour, car il était en développement à plein temps depuis 1,5 an). Nous utilisons le même ensemble de noms de fichiers dans chaque vue. C'est très cohérent et nous aide à naviguer rapidement vers exactement ce que nous recherchons:
Ressemble à ceci dans un projet:
Les modèles associés sont simplement stockés ensemble dans le même fichier. Contenu de
view/order/checkout/templates.html
montré réduit ici:Nous utilisons des sous-dossiers lorsque les vues deviennent complexes avec de nombreuses parties:
Nous développons également avec WebStorm, un éditeur extrêmement puissant et flexible pour le développement de Meteor. Nous trouvons cela extrêmement utile pour rechercher et organiser notre code et travailler de manière productive.
Heureux de partager des détails sur demande.
la source
Utilisez la CLI d'échafaudage iron-cli. Rend les choses très faciles.
https://github.com/iron-meteor/iron-cli
une fois installé. utilisez
iron create my-app
pour créer un nouveau projet. Cela créera la structure suivante pour vous. Vous pouvez également l'utiliser sur des projets existants. utiliseriron migrate
dans le répertoire du projet.la source
Je suis le format passe-partout mattdeom, qui comprend déjà le routeur et le modèle de fer (Collection2). Voir ci-dessous :
la source
Il existe de nombreuses approches différentes pour structurer votre application. Par exemple, si vous avez un routeur et différents modèles de page, et que chaque modèle de page contient de nombreuses parties de page et ainsi de suite, je le structurerais en fonction de la sémantique du niveau supérieur> inférieur.
Par exemple:
Bien sûr, vous pouvez placer vos modèles de nouvelles dans le dossier commun, comme vous pouvez utiliser votre modèle de nouvelles sur différentes pages.
Je pense que c'est la meilleure structure avec laquelle vous êtes à l'aise.
J'ai écrit une petite application ici: http://gold.meteor.com Et c'est si petit, je n'utilise qu'un seul fichier html et un seul fichier template.js .. :)
J'espère que ça aide un peu
la source
Il existe une nouvelle classe sur Evented Mind appelée Configurer des projets Meteor qui aborde ce problème, mais parle également de la configuration de projet et de la configuration de votre environnement de développement.
Extrait de la vidéo sur la structure de l' application dans la classe: Meteor n'a pas une opinion très claire sur la façon dont votre application doit être structurée, mais voici quelques règles:
1) Ordre de chargement - Meteor va d'abord à l'emplacement le plus profond du répertoire de fichiers et traite les fichiers par ordre alphabétique
2) le client et le serveur sont des dossiers spéciaux que Meteor reconnaît
Notre structure ressemble à ceci:
Le todos_controller étend RouteController, quelque chose qui vient avec Iron Router.
L'
em
outil mentionné ci-dessus fait également l'objet d'une mise à jour importante en ce moment et devrait être bien meilleur et disponible sur: https://github.com/EventedMind/emla source
Je recherche également les meilleures pratiques pour améliorer et faire évoluer mes applications grâce à une architecture bien conçue. Toutes les pratiques mentionnées ci-dessus fonctionnent pour les applications de petite à moyenne taille, mais échoueront lorsque vous travaillez dans une plus grande équipe. J'ai essayé plusieurs façons:
1) J'ai suivi cette stratégie: https://github.com/aldeed/meteor-autoform pour redimensionner et réutiliser les modèles. L'auteur a une très bonne idée de la conception des composants et du terrain. Je l'implémente actuellement car la communauté a développé 36 packages qui couvrent presque tous les cas et je peux utiliser TypeScript pour être sûr de type pendant la phase de développement.
Voici un bon article de blog sur la façon de le faire: http://blog.east5th.co/2015/01/13/custom-block-helpers-and-meteor-composability/ ainsi que ici: http: // meteorpedia .com / read / Blaze_Notes
2) Celui-ci a l'air si prometteur mais n'a pas été mis à jour récemment. Il s'agit d'un package écrit en script coffee appelé. Blaze Components ( https://github.com/peerlibrary/meteor-blaze-components ) pour Meteor est un système permettant de développer facilement des éléments d'interface utilisateur complexes qui doivent être réutilisés autour de votre application Meteor. Vous pouvez les utiliser dans CoffeeScript, JavaScript vanilla et ES6. La meilleure chose est que les composants sont OOP. Voici un de leurs exemples:
3) J'aime les types et les transpilateurs qui me disent où et quand quelque chose va mal. J'utilise TypeScript pour travailler avec Meteor et j'ai trouvé le référentiel suivant: https://github.com/dataflows/meteor-typescript-utils, il semble que le créateur ait essayé d'accomplir une approche MVC.
Malheureusement, ce projet n'est pas maintenu ou développé activement.
4) et je pense que cela a déjà été mentionné, vous pouvez mettre à l'échelle à l'aide de packages. Cela nécessite une bonne façon de penser abstraite. Cela semble fonctionner pour Telescope: https://github.com/TelescopeJS/Telescope
5) meteor-template-extension - fournit diverses façons de copier les aides de modèle, les gestionnaires d'événements et les crochets entre les modèles, permettant la réutilisation du code; un inconvénient est que toute copie doit être prise en charge par un développeur, souvent encore et encore, ce qui devient problématique à mesure que la base de code se développe; de plus, sans une communauté d'API clairement définie, il est impossible de créer et de partager des composants
6) Composants de flux - Les composants de flux sont plus proches de React dans la conception de l'API tandis que les composants Blaze conservent des concepts familiers tels que les contextes de données et les aides de modèle; Les composants de flux, quant à eux, utilisent toujours des gestionnaires d'événements basés sur des modèles tandis que les composants Blaze en font des méthodes de classe afin qu'il soit plus facile de les étendre ou de les remplacer par héritage; en général, Blaze Components semble être plus orienté POO; Les composants de flux ne sont pas encore officiellement publiés ( crédits textuels pour # 5 et # 6 https://github.com/peerlibrary/meteor-blaze-components#javascript-and-es6-support )
Les numéros 2 et 3 doivent également être utilisés, mais vous gagnerez en vitesse de développement avec le temps. Le numéro quatre vous permet de créer et de tester des composants pour rendre votre code plus stable. Le numéro trois présente l'avantage de la sécurité de type complet de Typescript, ce qui est un énorme avantage lorsque vous développez dans une équipe avec une documentation médiocre. Cependant, je porte actuellement le numéro deux sur TypeScript car je me sens très à l'aise pour travailler avec et je n'ai pas à modifier le package du compilateur pour le faire fonctionner avec Meteor lorsque je n'utilise pas Gulp.
Il est encore difficile de trouver la bonne façon de travailler avec Meteor. Vous devez le découvrir par vous-même, sinon vous vous retrouvez avec une structure de dossiers bien organisée, mais vous ne savez pas où tout se trouve. Bon codage.
la source