【问题标题】:How to send the home page after hiting a specific route [Express/Nodejs]命中特定路由后如何发送主页[Express/Nodejs]
【发布时间】:2017-10-03 14:36:58
【问题描述】:

在用户点击这条路线后,我试图重定向到主页:/ref=123,但我想保留baseUrl,这是我目前所拥有的:

我需要在我的server.js 文件中:const referred = require('./routes/referred')

app.use('/ref=:id', (req, res, next) => {
    res.locals = req.params.id
}, referred)

因此,当用户点击上述路线时,我正在我的referred.js 文件中进行一些验证。实际上,我需要发送某种响应来说明提供的id 是否存在,但无论如何都要显示主页,这是一个简单的登录/注册表单。

referred.get('/', (req, res, next) => {
    //doing validations with res.locals
    next() //<- calling the next middleware
})

在调用next() 之后,我将该中间件放在下方以重定向到主页。

不确定这是否可能:app.use(express.static(_dirname + '/dist')) 似乎不是因为我得到了 404

我知道我可以使用req.redirect() 函数,但这实际上会向服务器发出一个新请求并刷新页面以删除我想要保持在那里的baseUrl

【问题讨论】:

  • 不确定这到底在问什么。您是在问如何重定向或如何跨请求或完全不同的东西保存信息?
  • 我在问当用户点击路由时如何重定向到主页:/ref=:id,但同时在搜索栏上保留该基本 url,例如,保留这个:@ 987654335@ 以及无论id 是否存在都可以发送响应

标签: javascript node.js express


【解决方案1】:

您如何呈现/发送您的页面?

您可以使用res.sendFile('path/to/page.html') 发送回任何 html 文件,同时保留请求 URL。

如果你想在主页显示动态消息,你应该使用像ejs这样的查看引擎。如果您已经在使用引擎,则可以执行类似

的操作

res.render('path/to/page', { status: 'This id does not exist!'})

【讨论】:

  • 这是一个单页应用程序,我只有一个页面,并且我在前端使用 Vue,我提供该单页的方式是:app.use(express.static(_dirname + '/dist'))。我尝试使用sendFile(),但它不会发送我的任何资产,例如 css/js 文件,只会发送html。我真的不想使用ejs,因为单个页面的重量太大。
  • 你的 css/js 路径是相对的吗?例如。浏览器尝试加载 /ref:=id/script.js 而不是 /script.js。尝试通过开发者控制台查找浏览器发出的请求
  • 是的,我的资产是相对于我的 /dist 文件夹的,这正是它发生的情况,我可以发送 index.html 文件,但是当涉及到资产时,我得到的是 @ 987654330@ 这些文件:css/js。没看懂,把请求挂到浏览器上?
  • 您可以从 html 标头中发布您的脚本/链接行吗?看起来像&lt;link href="..."&gt;&lt;script src="..."&gt; 的那些我对href/src 的外观感兴趣,你的问题可能在那里
  • 我将 CSS 放在 head 标签之间的顶部,将我的脚本放在底部 body 标签之前的底部。 &lt;link rel="stylesheet" href="style.css"&gt; & &lt;script src="./bundle.js"&gt;&lt;/script&gt;
猜你喜欢
  • 2017-06-01
  • 2013-06-18
  • 2021-03-13
  • 2011-10-19
  • 2019-08-24
  • 2014-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多