2011-02-22 12 views
7

Sarò onesto nel dire che non ho capito bene un concetto mentre scavo in NodeJS. E questo concetto riguarda il modo in cui NodeJS ci consente di condividere il codice tra server e client. Cosa significa veramente? Significa che posso scrivere una funzione che forse chiamo sul lato client e viene invocata come metodo remoto o significa che il codice viene copiato sul lato client e viene eseguito?Cosa significa condividere il codice tra server e client in Javascript?

Qualcuno può darmi un esempio intuitivo con cui posso girare la testa?

risposta

5

Significa semplicemente che il codice utilizzato sul lato server può anche essere incluso come <script> s nell'HTML, ove applicabile. La vera sfida è trovare opportunità dove è è applicabile.

Un esempio è un motore di convalida dell'input. Sappiamo tutti che solo la validazione eseguita sul server è affidabile, ma la convalida sul lato client è ancora auspicabile per l'esperienza dell'utente. Se un motore di convalida è progettato in modo abbastanza generico, lo stesso codice può essere utilizzato su entrambi i lati client e server, evitando un sacco di sforzi duplicati.

Altri esempi includono librerie di templating HTML, modelli di dati e varie librerie di utilità come underscore.js.

0

Ciò è corretto. Se il tuo server e client utilizzano lo stesso linguaggio di programmazione, in questo caso JavaScript, potresti scrivere un'implementazione di una funzione/classe/ecc. e usarlo sia sul client che sul server. Questo è diverso dalla maggior parte degli altri scenari in cui hai Python/Java/etc. sul server e JavaScript sul client.

2

Significa che il codice viene copiato sul lato client ed eseguito localmente nel browser.

Per fare un esempio, dite di avere un file js che rappresenta una persona sul vostro server nel percorso /app/model/person.js. Il contenuto del file sono:

function Person(id, firstName, lastName) { 
    this.id = id; 
    this.firstName = firstName; 
    this.lastName = lastName; 
} 

In Node.JS, è possibile utilizzare questo oggetto Person in qualche file come:

// someFile.js 
include("/app/model/person"); 

function onLoad() { 
    var john = new Person(1, "John", "Malkovich"); 
}; 

Lo stesso codice può essere utilizzato sul lato client caricandolo dallo stesso fonte:

<script src="/app/model/person.js"></script> 
<script> 
    var john = new Person(1, "John", "Malkovich"); 
</script> 
Problemi correlati