Vue-router——遇到的坑(一)history模式刷新/设置嵌套路由报错(webpack配置)

前端路由都不是真是存在,只需要为前端跳转做一个显示。

  • hash模式
    url中会有#存在,看起来不太舒服且不好做SEO,但是由于路由器向服务器发请求的时候会忽略#后面的值,所以在浏览器刷新的时候都是很正常的不会再次发请求。
    -history模式
    url就是我们看的正常的路由样子,就是因为看起来很像真的,所以浏览器向服务器请求(也就是刷新)的时候会发现服务器根本没有这个路径资源,所以返回404。

需要在webpack配置项中的devServer加上

// history模式下的url会请求到服务器端,但是服务器端并没有这一个资源文件,就会返回404,所以需要配置这一项
        historyApiFallback: {
            rewrites: [{
                from: /.*/g,
                to: '/index.html' //与output的publicPath有关(HTMLplugin生成的html默认为index.html)
            }]
        },

在router配置中设置children也会出现404的情况,原因就是设置为history模式后,原本的静态资源获取不到了。

// 原先hash模式下打包后的路径引入
<script type="text/javascript" src="bundle.feed9913.js"></script></body>

可以看到是直接引入的bundle.js,所以如果有children,那整个地址就会变成http://localhost:8080/chidren/bundle.js,
但是其实我们需要引入的是http://localhost:8080/bundle.js,所以需要设置在bundle.js加一个/代表从根路径引入。

需要在webpack配置项中加上

output: {
	// 表示在引入静态资源时,从根路径开始引入
	publicPath: '/'
},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值