it-swarm.com.de

Was ist die beste Vorgehensweise zum Bereitstellen von HTML in node.js mit express.js?

Momentan versorge ich alle meine HTML-Dateien in meiner Datei app.js/server.js wie folgt:

app.get('/', function(req, res) {
    res.render('index.html');
});
app.get('/about', function(req, res) {
    res.render('about.html');
});
app.get('/projects', function(req, res) {
    res.render('projects.html');
});

Ich stelle mir vor, wenn ich mehr als 15 HTML-Seiten habe, ist dies wahrscheinlich nicht der beste Weg, sie aufzurufen. Gibt es eine bessere Möglichkeit, sie von einer anderen Datei oder einem anderen Speicherort aus bereitzustellen und mit export oder so etwas nur eine Funktion oder so etwas in app.js aufzurufen? Es mag sein, wofür das Routing ist, aber vielleicht verstehe ich es nicht so gut.

(Es wurde mehr Code hinzugefügt, der sich in derselben Datei befindet.)

app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/public');

// used below code to render html files
app.engine('html', require('ejs').renderFile);

app.set('view engine', 'ejs');
app.use(express.favicon("public/img/favicon.ico"));
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
28
user2336703

Sie können die Middleware static verwenden:

app.use("/", express.static(__dirname));

Ein Server-Beispiel:

var express = require('express');
var app = express();
app.use('/', express.static(__dirname + '/public'));
app.listen(3000, function() { console.log('listening')});

Dies ist die Dateistruktur:

.
├── public
│   ├── a.html
│   ├── b.html
│   └── c.html
└── server.js

Dokumentation:

75

Eine Idee wäre, als letzte Route eine Sammelroute wie die folgende zu verwenden:

app.get('/:page', function(req, res) {
  res.sendfile(path.join(__dirname, 'public', 'pages', path.basename(req.params.page) + '.html'));
});

Dazu müssten Sie Ihre .html-Dateien in public/pages/about.html usw. ablegen.

Möglicherweise möchten Sie die Reihenfolge des Routers für statische Dateien so ändern, dass auch statische Dateien Vorrang vor Routen haben, es sei denn, Sie möchten, dass diese Route bestimmte Elemente im öffentlichen Ordner erfasst, z.

app

app.set('view engine', 'ejs');
app.use(express.favicon("public/img/favicon.ico"));
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(path.join(__dirname, 'public')));
app.use(app.router);
6
Jacob Gillespie