Attualmente sto sviluppando un'applicazione client-server in node.js, Express, moustache e MySQL. Tuttavia, credo che questa domanda dovrebbe essere per lo più indipendente dalla lingua e dal framework.
Questa è la prima volta che eseguo un'applicazione MVC reale e ho difficoltà a decidere esattamente cosa significhi ciascun componente. (Ho fatto delle applicazioni web che potrebbero essere chiamate MVC prima, ma non mi riferirei con fiducia a loro come tali)
Ho un server.js
che lega insieme l'intera applicazione. Fa l'inizializzazione di tutti gli altri componenti (compresa la connessione al database e quelli che penso siano i "modelli" e le "viste"), riceve le richieste HTTP e decide quali "viste" usare.
Significa che il mio file server.js
è il controller? O sto mescolando il codice che non appartiene a questo? Quali componenti dovrei interrompere il file server.js
in?
Alcuni esempi di codice nel file server.js:
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'sqlrevenge',
database : 'blog'
});
//...
app.get("/login", function (req, res) { //Function handles a GET request for login forms
if (process.env.NODE_ENV == 'DEVELOPMENT') {
mu.clearCache();
}
session.session_from_request(connection, req, function (err, session) {
if (err) {
console.log('index.js session error', err);
session = null;
}
login_view.html(res, user_model, post_model, session, mu); //I named my view functions "html" for the case I might want to add other output types (such as a JSON API), or should I opt for completely separate views then?
});
});
Ho un altro file che appartiene al nome session.js
. Riceve un oggetto cookies
, legge i dati memorizzati per decidere se si tratta di una sessione utente valida o meno. Include anche una funzione denominata login
che modifica il valore dei cookie.
- In primo luogo, pensavo che sarebbe stato parte del controller, dal momento che si occupava dell'input dell'utente e dei dati forniti ai modelli.
- Poi, ho pensato che forse era un modello dal momento che trattava i dati dell'applicazione / database e i dati che fornisce sono usati dalle viste.
- Ora, mi chiedo anche se possa essere considerato un
View
, dal momento che emette i dati (i cookie fanno parte delle intestazioni HTTP, che vengono emesse)