In allen Beispielen (Bestenliste, Wortspiel usw.) gibt es eine einzige HTML-Vorlagendatei. Gibt es ein großes Open-Source-Meteor-Projekt mit vielen verschiedenen HTML-Vorlagendateien, die wir als Best-Practice-Beispiel verwenden können? Es scheint nicht praktisch, alles, was eine große App benötigt, in einer Vorlagendatei zusammenzufassen.
165
Antworten:
Alles zusammen! Aus den Dokumenten:
quelle
Wie in der inoffiziellen Meteor-FAQ erklärt es meiner Meinung nach ziemlich genau, wie man eine große App strukturiert:
Erfahren Sie mehr: Inoffizielle Meteor-FAQ
quelle
mobile-config.js
?Ich stimme yagooar zu, aber statt:
Verwenden:
main. * Dateien werden zuletzt geladen. Auf diese Weise stellen Sie sicher, dass Sie keine Probleme mit der Ladereihenfolge haben. Weitere Informationen finden Sie in der Meteor-Dokumentation unter http://docs.meteor.com/#structuringyourapp .
quelle
Meteor wurde so konzipiert, dass Sie Ihre App so strukturieren können, wie Sie möchten. Wenn Ihnen Ihre Struktur nicht gefällt, können Sie eine Datei einfach in ein neues Verzeichnis verschieben oder sogar eine Datei in mehrere Teile aufteilen, und für Meteor ist das so ziemlich alles. Beachten Sie einfach die spezielle Behandlung von Client-, Server- und öffentlichen Verzeichnissen, wie auf der Hauptdokumentationsseite angegeben: http://docs.meteor.com/ .
Nur alles in einer HTML-Füllung zusammenzufassen, wird sicherlich keine bewährte Methode sein.
Hier ist ein Beispiel für eine mögliche Struktur: In einer meiner Apps, einem Diskussionsforum, organisiere ich nach Modul oder "Seitentyp" (Startseite, Forum, Thema, Kommentar) und setze jeweils CSS-, HTML- und JS-Dateien Seitentyp zusammen in einem Verzeichnis. Ich habe auch ein "Basismodul", das allgemeinen CSS- und JS-Code enthält, und die Master-Vorlage, die je nach Router {{renderPage}} verwendet, um eines der anderen Module zu rendern.
Sie können auch nach Funktionen organisieren
Ich hoffe jedoch, dass einige spezifischere Best-Practice-Strukturen und Namenskonventionen entstehen.
quelle
Für alle, die zu diesem Thema googeln:
Das
em
Kommandozeilen-Tool (von EventedMind, den Leuten hinter dem Iron Router) ist sehr hilfreich beim Riggen einer neuen Meteor-App. Es wird eine schöne Datei- / Ordnerstruktur erstellt. Wenn Sie bereits an einer App arbeiten und diese neu organisieren möchten, richten Sie einfach ein neues Projekt mit einem
und Sie können es als Inspiration verwenden.Siehe: https://github.com/EventedMind/em
Und hier: /programming/17509551/what-is-the-best-way-to-organize-templates-in-meteor-js
quelle
Ich denke, die Dateistruktur aus dem Discover Meteor Book ist wirklich gut und ein solider Anfang.
quelle
Erstellen Sie Pakete
Natürlich passt nicht alles in diesen Ansatz, aber in großen Apps gibt es viele Funktionen, die isoliert werden können. Alles, was trennbar und wiederverwendbar ist, passt in Pakete, der Rest geht in die übliche Verzeichnisstruktur, wie in anderen Antworten erwähnt. Auch wenn Sie keine Pakete erstellen, um den Overhead zu vermeiden, ist eine modulare Strukturierung des Codes eine gute Idee (siehe diese Vorschläge) ).
Meteor ermöglicht eine detaillierte Kontrolle darüber, wie Sie Ihre Dateien laden (Ladereihenfolge, wo: Client / Server / beides) und was das Paket exportiert.
Ich finde es besonders praktisch, die Logik auf einfache Weise zwischen den zugehörigen Dateien zu teilen. Angenommen, Sie möchten eine Util-Funktion erstellen und in verschiedenen Dateien verwenden. Sie machen es einfach "global" (ohne das
var
) und Meteor wird es in den Namespace des Pakets einschließen, damit es den globalen Namespace nicht verschmutztHier ist das offizielle Dokument
quelle
Nach einer Weile ohne Meteorjs-Codierung bin ich froh, etwas Zeit zu haben, um ein ziemlich komplexes Online-Spiel zu entwickeln. Die App-Struktur war eines meiner ersten Anliegen, und es sieht so aus, als hätten sich mehrere sehr gute Programmierer für die reine Paketmethode zur Strukturierung einer App ausgesprochen, mit der Sie funktional unterschiedliche Pakete lose koppeln können. Der Ansatz bietet weitere Vorteile, und zwei sehr gute Artikel, die den Ansatz erläutern, finden Sie hier:
http://www.matb33.me/2013/09/05/meteor-project-structure.html http://www.manuel-schoebel.com/blog/meteorjs-package-only-app-structure-with-mediator -Muster
quelle
Wir haben ein großes Projekt (wahrscheinlich eines der größten Meteor-Projekte, die jemals gebaut wurden, da es 1,5 Jahre lang in Vollzeit entwickelt wurde). Wir verwenden in jeder Ansicht den gleichen Satz von Dateinamen. Es ist sehr konsistent und hilft uns, schnell zu genau dem zu navigieren, wonach wir suchen:
Sieht in einem Projekt so aus:
Verwandte Vorlagen werden nur zusammen in derselben Datei gespeichert. Inhalt der
view/order/checkout/templates.html
gezeigten hier zusammengebrochen:Wir verwenden Unterordner, wenn Ansichten mit vielen Teilen komplex werden:
Wir entwickeln auch mit WebStorm, einem äußerst leistungsstarken und flexiblen Editor für die Meteor-Entwicklung. Wir finden es sehr hilfreich, wenn wir unseren Code suchen, organisieren und produktiv arbeiten.
Gerne teilen wir Ihnen Details auf Anfrage mit.
quelle
Verwenden Sie ein Eisen-Cli-Gerüst CLI. Macht die Dinge sehr einfach.
https://github.com/iron-meteor/iron-cli
einmal installiert. Verwenden Sie
iron create my-app
diese Option, um ein neues Projekt zu erstellen. Es wird die folgende Struktur für Sie erstellt. Sie können dies auch für vorhandene Projekte verwenden. Verwendungiron migrate
im Projektverzeichnis.quelle
Ich folge dem Mattdeom Boilerplate-Format, das bereits den Iron Router & Model (Collection2) enthält. Siehe unten :
quelle
Es gibt viele verschiedene Ansätze zur Strukturierung Ihrer App. Wenn Sie zum Beispiel einen Router und verschiedene Seitenvorlagen haben und in jeder Seitenvorlage viele Seitenteile usw. vorhanden sind, würde ich dies abhängig von der Semantik von höherer> niedrigerer Ebene strukturieren.
Beispielsweise:
Natürlich können Sie Ihre Nachrichtenvorlagen in den gemeinsamen Ordner legen, da Sie Ihre Nachrichtenvorlage auf verschiedenen Seiten verwenden können.
Ich denke, es ist das Beste, wenn Sie Ihre App so strukturieren, wie Sie es möchten.
Ich habe hier eine kleine App geschrieben: http://gold.meteor.com Und sie ist so klein, dass ich nur eine HTML-Datei und nur eine template.js-Datei verwende. :)
Ich hoffe es hilft ein bisschen
quelle
In Evented Mind gibt es eine neue Klasse namens Einrichten von Meteorprojekten , die sich mit diesem Thema befasst , aber auch über die Projektkonfiguration und das Einrichten Ihrer Entwicklungsumgebung spricht.
Aus dem Video zur Anwendungsstruktur in der Klasse: Meteor hat keine sehr starke Meinung darüber, wie Ihre Anwendung strukturiert sein sollte, aber hier sind einige Regeln:
1) Ladereihenfolge - Meteor wechselt zuerst zur tiefsten Stelle im Dateiverzeichnis und verarbeitet die Dateien in alphabetischer Reihenfolge
2) Client und Server sind spezielle Ordner, die Meteor erkennt
Unsere Struktur sieht folgendermaßen aus:
Der todos_controller erweitert den RouteController, der mit Iron Router geliefert wird.
Das
em
oben erwähnte Tool wird derzeit ebenfalls umfassend aktualisiert und sollte viel besser und verfügbar sein unter: https://github.com/EventedMind/emquelle
Ich suche auch nach Best Practices, um meine Apps durch eine gut durchdachte Architektur zu verbessern und zu skalieren. Alle oben genannten Vorgehensweisen funktionieren für kleine bis mittlere Apps, schlagen jedoch fehl, wenn Sie in einem größeren Team arbeiten. Ich habe verschiedene Möglichkeiten ausprobiert:
1) Ich habe diese Strategie verfolgt: https://github.com/aldeed/meteor-autoform , um Vorlagen zu skalieren und wiederzuverwenden. Der Autor hat eine sehr gute Idee zum Komponenten- und Felddesign. Ich implementiere es derzeit, weil die Community 36 Pakete entwickelt hat, die fast jeden Fall abdecken, und ich TypeScript verwenden kann , um während der Entwicklungsphase typsicher zu sein.
Hier ist ein guter Blog-Beitrag dazu: http://blog.east5th.co/2015/01/13/custom-block-helpers-and-meteor-composability/ sowie hier: http: // meteorpedia .com / read / Blaze_Notes
2) Dieser sieht so vielversprechend aus, wurde aber in letzter Zeit nicht aktualisiert. Es ist ein in Kaffeeskript geschriebenes Paket namens. Blaze-Komponenten ( https://github.com/peerlibrary/meteor-blaze-components ) für Meteor sind ein System zur einfachen Entwicklung komplexer Benutzeroberflächenelemente, die rund um Ihre Meteor-App wiederverwendet werden müssen. Sie können sie in CoffeeScript, Vanilla JavaScript und ES6 verwenden. Das Beste ist, Komponenten sind OOP. Hier ist eines ihrer Beispiele:
3) Ich mag Typen und Transpiler, die mir sagen, wo und wann etwas schief gehen wird. Ich verwende TypeScript für die Arbeit mit Meteor und habe das folgende Repository gefunden: https://github.com/dataflows/meteor-typescript-utils Es scheint, als hätte der Ersteller versucht, einen MVC-Ansatz zu erreichen.
Leider wird dieses Projekt nicht gepflegt oder aktiv weiterentwickelt.
4) und ich denke das wurde schon erwähnt, man kann mit paketen skalieren. Das erfordert eine gute abstrakte Denkweise. Es scheint für Telescope zu funktionieren: https://github.com/TelescopeJS/Telescope
5) Meteor-Template-Erweiterung - bietet verschiedene Möglichkeiten zum Kopieren von Vorlagen-Helfern, Ereignishandlern und Hooks zwischen Vorlagen, um die Wiederverwendung von Code zu ermöglichen. Ein Nachteil ist, dass das Kopieren häufig von einem Entwickler durchgeführt werden muss, was immer wieder problematisch wird, wenn die Codebasis wächst. Darüber hinaus können ohne eine klar definierte API-Community keine Komponenten erstellt und gemeinsam genutzt werden
6) Flusskomponenten - Flusskomponenten sind im API-Design näher an Reagieren, während Blaze-Komponenten vertraute Konzepte wie Datenkontexte und Vorlagenhelfer beibehalten. Flow-Komponenten hingegen verwenden weiterhin vorlagenbasierte Ereignishandler, während Blaze-Komponenten sie zu Klassenmethoden machen, damit sie durch Vererbung einfacher erweitert oder überschrieben werden können. Im Allgemeinen scheint Blaze Components eher OOP-orientiert zu sein. Flow-Komponenten sind noch nicht offiziell freigegeben ( Text-Credits für # 5 und # 6 https://github.com/peerlibrary/meteor-blaze-components#javascript-and-es6-support )
Nummer 2 und 3 müssen ebenfalls gewöhnungsbedürftig sein, aber mit der Zeit gewinnen Sie an Entwicklungsgeschwindigkeit. Mit Nummer vier können Sie Komponenten erstellen und testen, um Ihren Code stabiler zu machen. Nummer drei bietet den Vorteil der vollständigen Typensicherheit von Typescript. Dies ist ein großes Plus, wenn Sie in einem Team mit schlechter Dokumentation entwickeln. Derzeit portiere ich jedoch Nummer zwei auf TypeScript, da ich mich sehr wohl fühle, damit zu arbeiten, und ich das Compiler-Paket nicht zwitschern muss, damit es mit Meteor funktioniert, wenn ich Gulp nicht verwende.
Es ist immer noch schwierig, den richtigen Weg zu finden, um mit Meteor zu arbeiten. Sie müssen es selbst herausfinden, sonst erhalten Sie eine übersichtliche Ordnerstruktur, aber Sie haben keine Ahnung, wo sich alles befindet. Viel Spaß beim Codieren.
quelle