判断不同设备后重定向到不同url的nodejs实现

我们在开发时可能会遇到这种问题。你用的手机端需要跳转到 m,xxx.com ,PC端跳转到taobao.com
这样一个功能我们可以通过nodejs和user-agent属在这里插入代码片性判断来实现。在项目跟文件创建一个server.js,具体代码如下:

const express = require('express');
const next = require('next');

const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();
const server = express();

app.prepare().then(() => {
  server.get('/', async (req, res) => {
    const deviceAgent = req.headers['user-agent'].toLowerCase();
    //如果匹配到移动端标识符,则为移动端
    const agentID = deviceAgent.match(/(iphone|ipod|ipad|android)/);
    if (agentID) {
      res.redirect(301, 'http://www.m.url.com');
    } else {
      res.redirect(301, 'http://www.url.com');
    }
  });

  server.get('*', (req, res) => {
    return handle(req, res);
  });

  server.listen(3000, err => {
    if (err) throw err;
    console.log('> Ready on http://localhost:3000');
  });
});

由于加入了node.js,所以更改package,json里的启动命令如下:
在这里插入图片描述
切记,如果你使用电脑的调试工具打开手机调试,请先打开手机调试工具,然后在输入localhost:3000.因为一旦认定你使用移动设备,3000端口将会默认跳转到m.url,com,你在切换到PC调试,仍然会跳转到m.url.com,因为路由跳转可能存在缓存 。所以如果要再次测试最好开启无痕操作。
欢迎有经验的同学分享一下taobao,jd的h5页面的路由跳转的逻辑,为什么pc调试和手机调试来回切换,他们都可以正确跳转到不同的url。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值