node js express app serve static files
node js express app serve static files
我想提供我的静态文件"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和脚本
检查快速设备。它完成了我认为您正在尝试做的事情(制作移动版本和桌面版本)。
相关文章:
- babel with sub js files
- 如何在React Static Boilerplate中创建webpack导入别名
- 节点static不能为当前文件夹之上的文件夹提供服务
- slack files.upload-如何从javascript/jQuery将文件作为有效负载发送
- jslint and cshtml files
- 拖放事件.dataTransfer.files为空
- 为angular-connect.static和karma安装node.js
- 当ondrop被激发时,event.dataTransfer.files为空
- 什么将等同于文件.IE的GetElementById().files
- Sails.js req.files为空,req.body.image未定义
- 如何创建一个浏览按钮,通过该按钮我可以选择系统的任何路径,即C:Program Files.并将其放入文本框中
- 为什么 document.getElementById('files') 返回空值
- Netbeans 中的 jQuery 代码完成 for *.js Files
- jQuery waypoints static html/ js issue
- Phoenix - 找不到 GET /static/js/some.js 的路由
- express.static breaks nodejitsu application
- .files 在 JavaScript 中实际上做了什么?
- ExpressJS - req.files 未定义或为空
- 使用 gulp 和 main-bower-files 对输出进行排序(gulp 顺序不起作用)
- node js express app serve static files