2016-04-11 2 views
2

Это моя структура каталогов:
/Users/Тити/MyProject/приложение/сервер/
.... app.js
..../общественный
......../Css
......../JS
......../вид
............ index.html
....... ..... about.htmlЭкспресс: возможно ли упростить путь в res.sendFile?


И мой app.js файл:

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!'); 
}); 

Он отлично работает.
Но я хотел бы знать, есть ли способ не писать весь путь (/Users/Titi/myproject/app/server/public/view/about.html).
Можно ли упростить?

+0

В [ 'path' ] (https://nodejs.org/api/path.html), вероятно, будет вам полезен. – saadq

ответ

2

Вы можете указать root путь в sendFile() варианты:

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

Или вы можете использовать встроенный в path сделать абсолютный путь для вас:

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

«Путь» это очень полезно, если приложение должно работать в разных средах – Ohmen

0

Вы можете создать переменную и сохранить в ней этот путь.

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

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

Примечание: В идеале вы должны использовать router вместо app;

0

Установить папку и вид двигателя установить шаблон EJs npm install ejs но вам нужно изменить 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'); 
}); 

, если вы все еще хотите использовать sendFile вам необходимо указать абсолютный путь

Смежные вопросы