Ich habe die express-generator Npm verwendet, um ein Muster für eine MEAN Stack App zu erstellen, und es funktionierte perfekt, aber ich habe den Zweck einiger Dateien nicht verstanden.MEAN Stack App Struktur
Zum Beispiel:
Die package.json den folgenden Code enthalten:
"script":{"start": "node ./bin/www"}
Die App ein Ordner bin
genannt enthalten, die eine Datei www
genannt enthalten, die den folgenden Code enthalten:
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('myapp:server');
var http = require('http');
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
var server = http.createServer(app);
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string' ?
'Pipe ' + port :
'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string' ?
'pipe ' + addr :
'port ' + addr.port;
debug('Listening on ' + bind);
}
Jetzt bin ich nicht sicher w Hüte dies den Zweck, weil ich all diesen Code oben entnommen und Datei folgende Zeilen in meinem app.js wo mein Server ist:
var port = process.env.PORT || 8080;
app.listen(port);
console.log("Listening on port " + port)
Durch die Zusammenarbeit mit nur zwei Zeilen all diesen Code ersetzen zu konnte ich Führen Sie den Server aus und zeigen Sie mithilfe von Routen eine Ansicht an. Das ist, wie ich alle meine Node/Express-Apps für eine Weile entwickelt habe und sie haben gut funktioniert.
Kann jemand erklären, was der Punkt dieses Codes war, weil ich nicht sicher bin, was es tut? Und warum sollte es nötig sein, wenn wir es einfach durch 2 Zeilen ersetzen können? Es scheint nur sehr verwirrend und unnötig.
Vielen Dank. das hilft sehr. Kannst du erklären, was es mit 'normalized port' bedeutet? – Skywalker
@LorenzovonMatterhorn Die Normalisierung eines Ports bedeutet, dass die Anwendung überprüft, ob der Portwert sowohl ein * realer * numerischer Wert als auch ** ist, und dieser Wert größer als Null ist. Dies ist eine zusätzliche Validierungsebene, um sicherzustellen, dass Ihre Anwendung den angegebenen Port überwachen kann. –
Vielen Dank.Ich werde definitiv diese Technik von nun an verwenden, da es wie ein Best Practice aussieht. Obwohl die einzige Sache, die ich nicht mag, ist, wie die App anfängt. Ich muss 'npm start' verwenden, während ich die' nodemon app.js' Technik wirklich geniesse. – Skywalker