gpt4 book ai didi

javascript - Node js Express 应用程序提供静态文件

转载 作者:行者123 更新时间:2023-12-02 16:47:04 25 4
gpt4 key购买 nike

我想提供静态文件“web.html”和“mobile.html”,但仅当用户从网络/移动设备连接时才发送它们。

我认为这是执行此操作的代码:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(express.static(__dirname + '/public', {index: false}));

app.get('/', function (req, res) {
console.log("user connected");

if (req.headers['user-agent'].match('mobile')) {

res.sendFile(__dirname + '/public/mobile.html');

} else {

res.sendFile(__dirname + '/public/web.html');
}
});

但是这段代码不起作用。据我了解,express.static 仅在请求“/”时提供index.html。有没有办法在请求“/”时提供特定文件?

谢谢!

最佳答案

你的基本逻辑是正确的;问题出在您的移动检测上。在许多移动浏览器中(我刚刚在 iPhone 上尝试过),UA 字符串具有“Mobile”(大写“M”),并且您匹配小写。我将其更改为:

if (req.headers['user-agent'].match(/\bmob/i)) {

/\bmob/i 是我通常用于移动检测的;我发现它真的很坚固。更好的选择可能是 @user3229720 的答案,它使您不必担心 UA 解析的困惑细节,但我认为您可能想更详细地了解这里发生了什么。

关于javascript - Node js Express 应用程序提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27025169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com