2017-01-25 3 views

Antwort

-2

Meteor mag die Unschärfe der Linien zwischen Client und Server. Es gibt Dinge, die Sie tun können, um Code zu abstrahieren - zum Beispiel Javascript-Dateien (unter allen Dateien) innerhalb des Verzeichnisses , um den Zugriff darauf zu beschränken. Dies bedeutet, dass Clientbenutzer diesen Code nicht sehen können.

/client ist offensichtlich das Gegenteil. Sie können eine Datei mit isClient und isServer überprüfen.

Nun, was bedeutet das für Ihren Code?

Je nachdem, wo sich Ihr Code befindet, gibt es verschiedene Zugriffsebenen. Innerhalb des Skripts gibt es jedoch grundsätzlich keinen Unterschied. checked ist auf dem Server/Client in diesem Skript bekannt, weil Meteor läuft, die unscharfe Linie zwischen Client und Server macht dies möglich.

Meteor verwendet etwas namens "Datenbank überall", was bedeutet, dass es egal ist, wo der Code aufgerufen wird, weil er ausgeführt wird.

0

checked ist ein Attrubit definiert auf einem Tasks Objekt, wie in dieser App definiert.

In Meteor ist die definitive Aufzeichnung dieses Objekts auf dem Server gespeichert (in MongoDB), jedoch gibt es einen clientseitigen Cache, der auch hier manipuliert wird, bekannt als MiniMongo. Das Meteor-Framework arbeitet im Hintergrund (über das DDP-Protokoll) sehr viel, um die Server- und Client-seitigen Objekte synchron zu halten.

In diesem Fall wird die folgende geschieht, wenn ein Benutzer auf eine Checkbox klickt in der Tasks.update Methode (die 'click .toggle-checked' Ereigniscode Brennen):

  1. Erstes Update Client-Seite MiniMongo Cache - dies ist bekannt als Optimistic UI und ermöglicht der Client-Benutzeroberfläche schnell zu reagieren (ohne auf den Server zu warten)
  2. Senden Sie eine Nachricht an den Server (Meteor Method), dass der Client das Objekt Tasks aktualisieren möchte, indem Sie die Variable clicked auf einen neuen Wert setzen.
  3. Nachricht Update erhalten vom Server anfordern, die überprüft, dies eine gültige Betrieb ist, und entweder verarbeitet sie (die Aktualisierung MongoDB Version des Tasks Objekt, oder sich weigert, das Update entsprechend zu verarbeiten.
  4. Server ein DDP Update senden wird des resultierenden Status des Tasks Objekt für alle Kunden, die auf eine Veröffentlichung abonniert haben, die es enthält.
  5. Clients, die zuvor abonniert haben, werden diese DDP Update erhalten, und ihre MiniMongo Version mit der Server-Version des Tasks Objekt ersetzen, Stellen Sie sicher, dass alle Clients mit dem Server synchronisiert sind

Jetzt im Idealfall, wenn der Server die Clients Änderungen akzeptiert, wird die neue Version von Tasks erhalten (in Schritt 5) durch die initiierende Client das Objekt übereinstimmen es (in Schritt 1) ​​optimistischer aktualisiert.

Durch die Implementierung aller dieser Schritte synchronisiert das Meteor-Framework jedoch auch andere Clients und behandelt den Fall, wenn der Server die Aktualisierung ablehnt oder möglicherweise zusätzliche Felder entsprechend der Anwendung ändert.

Glücklicherweise wird dies alles durch das Meteor-Framework gehandhabt, und alles, was Sie tun müssen, ist Tasks.update anrufen für all diese Magie zu passieren!

Verwandte Themen