Node.js 提供 HTML 页面和静态内容

标签 node.js express

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/

相关文章:

arrays - 具有特定键的 Mongoose 更新数组中的对象

javascript - Process.chdir() 对 require 没有影响

node.js - Nodejs会自动删除非全局变量吗?

node.js - 使用 Express.JS 运行 FIgwheel

node.js - 连续登录后 Passport context.req.user 未定义(express/graphql)

linux - 执行 npm install -g 时会发生什么

node.js - 解决此问题时,Promise 解析为 null

javascript - 将 csvtojson 转换器的值传递给其范围之外的变量

node.js - 为什么 Axios 在 Express 中返回 "bound consoleCall"?

javascript - node.js express-session 是无状态的还是有状态的?