跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 有没有大佬,关于 vue 父子路由一个很奇怪的问题
未分類
18 4 月 2021

有没有大佬,关于 vue 父子路由一个很奇怪的问题

有没有大佬,关于 vue 父子路由一个很奇怪的问题

資深大佬 : allisone 10

情况是这样的,一个后台管理系统,左侧是菜单项可点击的一级和二级菜单,右侧则是一个点击菜单项会展现内容,现在我点击其中某个菜单,右边则会正常出现内容为用户列表,页面路径是 http://localhost:8080/admin/user,可是当我刷新该页面,页面就显示 Cannot GET /admin/user 。。。 有没得大佬熟悉的。。。

大佬有話說 (15)

  • 資深大佬 : duan602728596

    单页应用,需要把所有的路由请求都返回 index

  • 主 資深大佬 : allisone

    @duan602728596 老哥我不懂啊。。。。能说详细点不,我这是首次发帖

  • 資深大佬 : wgbx

    History 和 Hash 问题,让 index 来处理

  • 資深大佬 : hackyuan

    https://router.vuejs.org/zh/guide/essentials/history-mode.html#%E5%90%8E%E7%AB%AF%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90

  • 資深大佬 : zzk1989

    不懂 nginx 的话就去掉路由的 mode 吧,用默认的 hash 模式
    地址会变成 http://localhost:8080/#/admin/user
    “` js
    new Router({
    // mode: “history”,
    “`

  • 主 資深大佬 : allisone

    @zzk1989 目前还只是本地 dev 模式下运行的。没用 nginx 的,这个更改为 hash 的确可以解决这个问题。。。但是 history 就不行,,就是很奇怪

  • 資深大佬 : duan602728596

    http 请求和响应,正常来说的话,比如请求的路由是 /index.html 、/a.css ,会在目录下面寻找相应的文件;或者 /a/b/c,服务器解析后返回相应的信息。

    单页应用切换路由,不会再去请求,所以本地切换是正常的。你请求”/”,返回 index.html 。但是刷新后,重新请求”/admin/user”,你的服务没有对这个路由进行处理,所以返回 404 。

    所以你需要把请求的路由,都返回 index.html 的内容。这样无论你请求的是 /a 、/a/b/c/d,都会返回 index.html 的文档内容,然后 react 或 vue 根据当前的路由渲染内容。

  • 資深大佬 : vivipure

    本地开发时 配置 devServer https://webpack.js.org/configuration/dev-server/#devserverhistoryapifallback
    部署时就配置 nginx

  • 主 資深大佬 : allisone

    @duan602728596 感谢老哥解答,你说的我好像听懂了,但是实在是不知道问题出在哪儿了,,这个 /admin/user 算是 /admin 请求的子路由。请问如何把请求的路由都返回 index.html

  • 資深大佬 : onlyhy

    用 hash 模式,如果用 history 模式: https://router.vuejs.org/zh/guide/essentials/history-mode.html

  • 資深大佬 : cw2k13as

    重定向问题???,搞不定就换 Hash 模式吧,官方文档写的明明白白,仔细看吧

  • 資深大佬 : sgiyy

    后台应用,history 模式的必要性不大啊,体验都一样,建议直接 hash 模式,不然你还需要服务器配置下,非要坚持的话,参考前面几位的意见。

  • 主 資深大佬 : allisone

    @sgiyy
    @cw2k13as
    @onlyhy
    感谢三位老哥的建议,问题已经解决了,虽然我自己也没弄清楚为啥是这么解决的。

  • 資深大佬 : Arrowing

    用 hash 是因为 hash 值更改本质上页面没变动,通过异步加载内容来更新网页。
    history 也可以做到,但是对于服务器来说,不同的地址对应不同 html 文件,如果是单页面应用就找到文件了,所以要把所有访问指向那个入口 html 文件,如果服务器是 nginx,可以用 try_files 。

  • 資深大佬 : Arrowing

    *如果是单页面应用就找不到文件了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具