2013-03-23 2 views

risposta

7

Vorrei consigliare di non usare che invece mettere la roba in cartelle come consigliato sul unofficial meteor faq

Anche se si utilizza if (Meteor.isServer) {...} questo blocco verrà comunque inviato al client, se non si utilizza la struttura delle cartelle di cui sopra cioè mettendolo in /server. Ma ignorerà tutto il codice al suo interno.

Sul lato server si inserisce il codice che si desidera eseguire sul server, le funzioni di pubblicazione e i dati che sarebbero più sensibili a & a cui l'utente non dovrebbe avere accesso.

+0

Come condividere le variabili globali comuni nel codice server e nel codice client? Devo ancora usare 'MEteor.isServer {}' all'interno della directory del server? – KJW

+0

È possibile inserire codice comune nella cartella principale dei progetti senza un Meteor.isServer e senza un Meteor.isClient, questo codice comune verrebbe eseguito sia sul client che sul server – Akshat

1

Penso che venga inviato al client, a meno che non sia nella cartella del server. In risposta a uno dei commenti sulla condivisione delle variabili globali, ho utilizzato questo modello. Creare la stessa variabile globale rispettivamente nelle cartelle client e server e una volta all'esterno di tali cartelle per qualsiasi codice condiviso. Inizializza la variabile globale in ogni luogo testando per vedere se esiste già.

MyVar = typeof MyVar === 'undefined' ? {} : MyVar;

Poi, appena messo metodi in cui ne avete bisogno. Ad esempio, avrò un oggetto User con un metodo che verifica se l'utente è autorizzato. Dichiarerò il metodo una volta sull'utente globale del server e una volta sull'utente globale del client. I metodi sono diversi perché la versione del server controlla le proprietà personalizzate sull'oggetto utente che non sono disponibili sul client. Quindi, in un metodo Meteor.methods, che viene eseguito sia sul client che sul server, è possibile richiamare il metodo di autorizzazione e chiamerà metodi diversi a seconda che sia in esecuzione sul client o sul server.

1

mi chiedevo la stessa domanda oggi e inciampato su questo pacchetto:

https://github.com/mquandalle/meteor-minifiers

Sembra Meteor non rimuove i blocchi Meteor.isServer per impostazione predefinita. Vedere la discussione:

https://groups.google.com/forum/#!topic/meteor-talk/iHat47f6iGE

io non l'ho usato fin d'ora, ma sembra promettente.

Se non si desidera utilizzare un pacchetto aggiuntivo, si consiglia di utilizzare le cartelle client e server. Solo i file nella cartella client vengono inviati al client.

Problemi correlati