【问题标题】:Node.js/Express: Pass routes/ let other routes than root handle by the Single page applicationNode.js/Express:通过路由/让除根以外的其他路由由单页应用程序处理
【发布时间】:2020-01-31 12:07:14
【问题描述】:

我设置了一个 node.js /Express 服务器,它从根 url 路径 (localhost:3333) 在公共文件夹中为我的单页应用程序(在 Vue.js 中)提供服务。

现在,在我的 SPA 中的 index.html 中,我可以轻松地在我的应用程序中导航到其他页面(这些页面都由 vue.js History API 处理,(不是哈希值))。

但是,如果我在浏览器中直接输入一些路由,该路由应该指向我的 SPA 中的某个子页面(例如 localhost:3333/about.html),则该路由正试图从我的 node.js 程序中提供当然不认识那条路线...

我怎样才能让我的 SPA 直接处理这条路线,而不是通过我的 node.js 程序?我找到了某种解决方案,通过重定向所有内容而不是根 url 让它为我的 dist SPA 文件夹中的 index.html 页面提供服务:

app.all('/*', function(req, res) {
    res.sendfile('index.html', {root: publicDir});
});

首先,我不太明白我的 SPA 是如何处理这个问题的……我知道我提供了我的 index.html 页面,但它会自动通过我的 Vue 应用程序将自己重定向到 /about 子页面,或者如何这行得通?

其次,如何将路由处理传递给您的 SPA 而不是 node.js 是推荐/甚至标准的方式吗?还是有其他更好的方法?

【问题讨论】:

    标签: javascript node.js express vue.js routing


    【解决方案1】:

    就像您在解释中已经说过的那样,您有一个 SPA,并且路由正在由前端的 Vue 处理。为每条路线重新调整您的 index.html 并让 Vue 在前端完成它的工作是要走的路。

    其次,如何将路由处理传递给您的 SPA 而不是通过 node.js 是推荐/甚至标准的方式吗?还是有其他更好的方法?

    其他选项是拥有一个服务器站点应用程序,这意味着根据所有请求构建页面。 Next.js 在 React 中的作用。

    或者拥有静态页面,就像 Gatsby 在 React 中所做的那样。

    【讨论】:

      猜你喜欢
      • 2021-01-10
      • 2013-10-26
      • 2017-04-06
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 2014-04-27
      相关资源
      最近更新 更多