node js express app serve static files

node js express app serve static files

本文关键字:static files serve app js express node      更新时间:2023-09-26

我想提供我的静态文件"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 只会在请求"/"时提供索引.html。 有没有办法在请求"/"时提供特定文件?

谢谢!

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

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

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

<script src="/scripts/script.js"></script>

在索引文件或 HTML 文件中使用上述行。

var app=express();
app.use(express.static(__dirname + '/assets'));

在应用程序中使用它.js或节点 js 应用程序的起点。在根级别创建资产文件夹。在资产文件夹中有子文件夹:图像,CSS和脚本

检查快速设备。它完成了我认为您正在尝试做的事情(制作移动版本和桌面版本)。