Wie kann man es6 Klassen in verschiedenen Dateien richtig verwenden, indem man sie in Meteor importiert?

7

Ich habe kürzlich Meteor entdeckt und ich kämpfe mit ES6-Klassen und importiere in einem neuen Meteor-Projekt. Ich möchte eine komplexe Struktur von Klassen haben, die von Meteor events / methods / helpers aufgerufen werden. Ich habe Babel.js zum Projekt hinzugefügt, indem ich den Befehl $ meteor add grigio:babel geschrieben habe und es funktioniert ordnungsgemäß.

Beispiel für das, was ich erreichen möchte:

in server / models / article.js:

%Vor%

in Server / Methoden / articles.js:

%Vor%

Wenn Sie genau das haben, wird ReferenceError: Article is not defined in einer Methodendatei erhöht, was angemessen ist. Also habe ich drei Möglichkeiten: schreibe alle Klassen in eine Datei, füge alle Klassen an ein globales Objekt an oder verwende ein gutes Modulsystem wie Browserify. Offensichtlich ist die dritte Option besser.

Aber wie benutze ich das? Babel konvertiert export , import standardmäßig in Browserify und Meteor löst einen require is not defined Fehler bei der Seitenaktualisierung aus. Nach dem googlen des Problems habe ich keine klare Lösung gefunden, wie man Browserify zu Meteor hinzufügen kann. Sollte ich Meteor eine npm-Paketunterstützung hinzufügen, ein npm-Paket von browserify hinzufügen und es Meteor auf jeder Seite hinzufügen, auf der ich alles importiere / exportiere? Oder sollte ich einen ganz anderen Ansatz verwenden? Wie wird diese Aufgabe normalerweise in Meteor gehandhabt? Danke!

    
cbrwizard 31.03.2015, 11:08
quelle

3 Antworten

13

Ich habe früher darüber gelesen und dieses Problem auf github gefunden, das helfen könnte.

>

Ordnen Sie die Klasse im Grunde nur einer Variablen zu, die sowohl dem Client als auch dem Server offen steht (lib / both / etc hängt von Ihrer Dateistruktur ab). Wie so:

%Vor%

Scheint im Moment die beste Lösung zu sein.

    
Tom Bates 31.03.2015 13:23
quelle
4

So sammle ich Objekte in verschiedenen Namespaces, zum Beispiel:

%Vor% %Vor%

Um zu vermeiden, Collections.Article überall verwenden zu müssen, kann ich Folgendes in der Datei verwenden, auf die ich zugreifen muss: Article in:

%Vor%     
Tim Fletcher 04.08.2015 13:40
quelle
1

Ich benutze Meteor 1.4.1.1 und der Fehler bleibt bestehen, wenn Sie Ihren Ansatz reproduzieren. Es gibt jedoch einige neue Möglichkeiten, es6-Klassen jetzt zu verwenden:

1. Exportieren Sie Ihre Klasse als Konstante (z. B. zur Verwendung als Singleton-Objekt):

%Vor%

Sie können dieses über

importieren %Vor%

2. Exportieren Sie Ihre Klasse direkt als Standard des Moduls

%Vor%

und importieren Sie es dann (wie oben) wie folgt

%Vor%

++++++++++++++++++++++++++++++++++

Bezüglich der Frage von OP und des Fehlers können Sie etwas wie dieses versuchen:

Article.js

%Vor%

Importieren und verwenden Sie das Singleton

%Vor%     
Jankapunkt 21.09.2016 07:16
quelle