var express = require("express");
var app = express();
var path = require("path");
app.use(express.static(__dirname + '/view'));
app.get('/dashboard',function(req,res){
res.sendFile((path.join(__dirname + '/dashboard.html'));
});
app.get('/index1',function(req,res){
res.sendFile((path.join(__dirname+'/index.html'));
});
app.get('/',function(req,res){
res.redirect('/login');
});
app.get('/login',function(req,res){
res.redirect((path.join(__dirname + '/login'));
});
app.listen(3000);
console.log("Running at Port 3000");
我的问题是为什么我每次都需要检查用户请求的内容?
此外,如果我的目录中有 100 个 html 文件,我是否需要通过 get 方法检查每个文件,然后通过 res.sendFile
返回页面?
最佳答案
@OrangeDog 和@Clemens Himmer 所说的都是真的。但是,为目录中的所有文件提供服务的最简单方法已经在您的脚本中:
app.use(express.static(__dirname + '/view'));
如果名称与 URL 相匹配,这将服务于您的 view
目录中的所有内容,例如http://yoursite.com/index.html将解析为 __dirname + '/view/index.html' 处的文件。
但是,在您的示例路由中,您似乎正在更改 URL 路径以不再匹配文件位置(例如,您要解析为“/login.html”的 /login
) .您绝对可以编写中间件来处理它并根据模式解析文件,但此时使用具有 URL 重写功能的专用 Web 服务器(如之前建议的 nginx)要简单得多。
关于Node.js 提供 HTML 页面和静态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37299108/