Express:是否可以简化res.sendFile中的路径?

时间:2016-04-11 23:38:34

标签: node.js express static-files

这是我的目录结构:
/用户/蒂蒂/ myproject的/应用/服务器/
.... app.js
... /公共
........ / CSS
........ / JS
........ /视图
............的index.html
............ about.html

我的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)。
是否可以简化?

3 个答案:

答案 0 :(得分: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'));
});

答案 1 :(得分:0)

您可以创建一个变量并将该路径存储在该变量中。

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

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

注意:理想情况下,您应使用router代替app;

答案 2 :(得分: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,则需要指定绝对路径