Express:是否可以简化res.sendFile中的路径?
Express: Is it possible to simplify the path in res.sendFile?
这是我的目录结构:
/Users/titi/myproject/app/server/
....app.js
..../public
......./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).
可以简化吗?
您可以在 sendFile()
选项中指定 root
路径:
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'));
});
您可以创建一个变量并将该路径存储在其中。
const tmpldir = '/Users/Titi/myproject/app/server/public;
app.get('/', function (req, res) {
res.sendFile(`${tmpldir}/index.html`);
});
注意:理想情况下,您应该使用 router
而不是 app
;
设置视图文件夹和视图引擎
安装 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
你需要指定绝对路径
这是我的目录结构:
/Users/titi/myproject/app/server/
....app.js
..../public
......./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).
可以简化吗?
您可以在 sendFile()
选项中指定 root
路径:
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'));
});
您可以创建一个变量并将该路径存储在其中。
const tmpldir = '/Users/Titi/myproject/app/server/public;
app.get('/', function (req, res) {
res.sendFile(`${tmpldir}/index.html`);
});
注意:理想情况下,您应该使用 router
而不是 app
;
设置视图文件夹和视图引擎
安装 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
你需要指定绝对路径