简体   繁体   English

尝试通过 Express JS 在移动设备和 Web 之间呈现不同的视图

[英]Trying to render different view between mobile and web from Express JS

I'm trying to render different views for each type of device.我正在尝试为每种类型的设备呈现不同的视图。 If is true, mobile will be rendered, mobile.ejs file, if isn't mobile, 'pages/index.js' .如果为 true,则将呈现 mobile, mobile.ejs文件,如果不是 mobile,则为'pages/index.js'

Currently, my file index.js is responsible for configuration from Express.目前,我的文件index.js负责 Express 的配置。

Express:表达:

const express = require('express')
const path = require('path')
const req = require('request')
const bodyParser = require('body-parser')
const PORT = process.env.PORT || 5000
const browser = require('browser-detect') 
const router = express.Router()

if(browser) {
  router.get('/', req => {
    const result = browser(req.headers['user-agent']);

    resultadoMobile = (result.mobile)

      if (resultadoMobile) {
        resultPath = "pages/mobile";
        return resultPath;
      }
      else {
        resultPath = "pages/index";
        return resultPath;
      }
  })

}

express() 

  .use(express.static(path.join(__dirname, 'public')))
  .set('views', path.join(__dirname, 'views'))
  .set('view engine', 'ejs')
  .use (bodyParser.urlencoded({ extended: true }))
  .get('/', (req, res) => res.render(resultPath))
  .listen(PORT, () => console.log(`Servidor iniciado em  ${ PORT }`))

So, to summarize:所以,总结一下:

I need to use browser-detect to detect if is mobile, if is true, render 'pages /mobile.ejs' , if not 'pages/index.ejs' .我需要使用浏览器检测来检测是否是移动的,如果是真的,则呈现'pages /mobile.ejs' ,如果不是'pages/index.ejs'

The answer from the server is:服务器的回答是:

ReferenceError: **resultPath** is not defined
    at express.use.set.set.use.get (\path\**\\index.js:33:38)
    at Layer.handle [as handle_request] (\path\**\\node_modules\express\lib\router\layer.js:95:5)
    at next (\path\**\\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (\path\**\\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (\path\**\\node_modules\express\lib\router\layer.js:95:5)
    at \path\**\\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (\path\**\\node_modules\express\lib\router\index.js:335:12)
    at next (\path\**\\node_modules\express\lib\router\index.js:275:10)
    at urlencodedParser (\path\**\\node_modules\body-parser\lib\types\urlencoded.js:91:7)
    at Layer.handle [as handle_request] (\path\**\\node_modules\express\lib\router\layer.js:95:5)

resultPath variable doesn't exist and there may be no need for one. resultPath变量不存在,可能不需要。

It likely should be:应该是:

.get('/', (req, res) => {
  const isMobile = browser(req.headers['user-agent']).mobile;
  res.render(isMobile ? "pages/mobile" : "pages/index");
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM