2013-08-09 8 views
6

Ho creato l'applicazione Meteor di prova e ho trovato che il codice generale (lato server) è disponibile per cercare con gli strumenti di sviluppo su un client. Test App (browser):Il codice back-end di Meteor è sempre disponibile sul lato client?

(function(){ if (Meteor.isClient) { 
     Template.hello.greeting = function() { 
     return "Welcome to test_app."; 
     }; 

     Template.helo.events({ 
     'click input' : function() { 
      // template data, if any, is available in 'this' 
      if (typeof console !== 'undefined') 
      console.log("You pressed the button"); 
     } 
     }); 
    } 

    if (Meteor.isServer) { 
     Meteor.startup(function() { 
     // code to run on server at startup 
     }); 
    } 

    }).call(this); 

È questo disegno? Il codice lato server può rimanere sul server?

risposta

13

Se si desidera mantenere il codice lato server sul server, è necessario ristrutturare l'app.

Fai queste directory nella directory principale della vostra applicazione:

  • /server - memorizza tutto per l'esecuzione sul server solo
  • /cliente - memorizza tutto per eseguire sul client solo
  • /public/- memorizza tutto ciò che dovrebbe essere accessibile in http://yoursite/ (cioè immagini, caratteri). Se si inserisce un'immagine a.jpg in /public sarà disponibile presso http://yoursite/a.jpg

Una volta che si utilizza questa struttura non si ha più utilizzare i if(Meteor.isServer) {..} o if(Meteor.isClient) {..} condizioni come sarebbero correre nel posto giusto.

Quando metti i file nella directory principale della vostra applicazione di meteoriti, si sarebbero eseguiti sia sul client e server quindi questo è il motivo per cui il file è inalterato & tutto nel if(Meteor.isServer) avrebbe eseguito solo sul server.

E 'di design e molto utile per condividere il codice tra il server e il client, anche se sarebbe visibile sia al & client server

+0

Akshat, grazie. Ha senso. –

+5

Vorrei aggiungere che anche se si utilizza if (Meteor.isServer) {}, il codice del server verrà comunque inviato al client se NON è nella cartella del server. – ripit

+1

È un peccato che non ci sia un'opzione diretta per usare l'opzione di layout della cartella da "mete create", ma puoi usare uno degli esempi come scheletro "meteora creare - esempio" - Potrebbe anche usare qualcosa del tipo: https: // github.com/matteodem/meteor-boilerplate – backdesk

Problemi correlati