2016-04-11 15 views
2

Das ist meine Verzeichnisstruktur:
/Users/titi/myproject/app/server/
.... app.js
..../public
......../css
......../js
......../view
............ index.html
....... ..... about.htmlExpress: Ist es möglich, den Pfad in res.sendFile zu vereinfachen?


Und meine app.js Datei:

var express = require('express'); 
var app = express(); 

app.use(express.static('public')); 

app.get('/', function (req, res) { 
    res.sendFile('/Users/Titi/myproject/app/server/public/view/index.html'); 
}); 

app.get('/about', function (req, res) { 
    res.sendFile('/Users/Titi/myproject/app/server/public/view/about.html'); 
}); 

app.listen(2000, function() { 
    console.log('Example app listening on port 2000!'); 
}); 

Es funktioniert perfekt.
Aber ich würde gerne wissen, ob es eine Möglichkeit gibt, nicht den ganzen Pfad zu schreiben (/Users/Titi/myproject/app/server/public/view/about.html).
Ist es möglich zu vereinfachen?

+0

Der [ 'path' angeben müssen verwenden möchten sich ändern ] (https://nodejs.org/api/path.html) wird Ihnen wahrscheinlich nützlich sein. – saadq

Antwort

2

könnten Sie geben einen root Pfad in den sendFile() Optionen:

var viewOpts = { root: '/Users/Titi/myproject/app/server/public/view' }; 
app.get('/', function (req, res) { 
    res.sendFile('index.html', viewOpts); 
}); 

Oder Sie die eingebaute in path verwenden könnte den absoluten Pfad für Sie zu machen:

var path = require('path'); 

// Assuming this script is inside the `server` portion of the path 

app.get('/', function (req, res) { 
    res.sendFile(path.resolve('public/view/index.html')); 
}); 
+0

Der Pfad ist sehr hilfreich, wenn die Anwendung in verschiedenen Umgebungen ausgeführt werden soll – Ohmen

0

Sie können Erstelle eine Variable und speichere diesen Pfad.

const tmpldir = '/Users/Titi/myproject/app/server/public; 

app.get('/', function (req, res) { 
    res.sendFile(`${tmpldir}/index.html`); 
}); 

Hinweis: Idealerweise sollten Sie router werden anstelle von app;

0

der Ansicht Ordner und Ansicht Motorset installieren ejs Vorlage npm install ejs aber Sie müssen sendFile

app.set('views', '/Users/Titi/myproject/app/server/public/view'); 
app.set('view engine', 'html'); 
app.engine('.html', require('ejs').renderFile); 

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

wenn Sie noch sendFile Sie den absoluten Pfad

Verwandte Themen