可以在Express中呈现移动视图吗?

时间:2014-12-12 17:58:32

标签: node.js express progressive-enhancement

从渐进增强的角度来看,我只是想通过不同的方式来增强网络应用,以便移动用户获得服务器呈现的视图,而不是桌面用户。

我正在考虑的一件事是呈现移动视图。基本节点代码是......

router.get("/components", function(req, res) {
  var mobile = isMobile(req.headers["user-agent"]);

  res.render("components" + (mobile ? "-mobile" : "");
});

通过这种方式,我可以呈现更加移动友好的视图,使用更少的JavaScript,并在桌面上呈现更丰富,更丰富的SPA。

想知道,是否以及为什么这可能或可能不是一个坏主意和任何替代方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

根据任意条件(设备,语言等)为同一网址呈现不同的内容是一个很大的禁忌。

您可以做的是设置中间件,验证用户是否来自移动设备并进行相应的重定向。

<强> isMobile.js

module.export = function(req, res, next) {
  if (isMobile(req.headers["user-agent"])) {
    res.redirect('//m.' + req.hostname + req.path);
  } else {
    next()
  }
}

<强> route.js

require('./isMobile');

router.get("/components", isMobile, function(req, res) {
  res.render("components");
});

或者,您可以使用中间件,因此它适用于您的所有路线。

<强> app.js

require('./isMobile');

app.use(isMobile)
// Load routes here