主题:关于这两个参数,往往是因为服务器中设置了子路径来访问项目才会修改,否则尽量不要去设置这两个参数啦小可爱们
1:publicPath 这个的作用是寻找css和js文件的,假设服务器用 www.baidu.com/aa/ 才能找到首页,那么这个publicPath 就设置成aa,这样服务器就用www.baidu.com/aa/static/js || css 找到对应的js和css文件。
2: base 参数(假设vue-ruoter跳转是history模式),这个的作用是在服务器使用子路径的时候能正常跳转,但最容易404就是在项目中使用了window.location.href = “/login” 的时候,但进入项目中后的的其他跳转却不会有问题,因为在项目中的跳转如果都用vue-router的跳转api,跳转就会带上base参数,而base参数会影响所有的history.pushState()调用,然后就不会出现404,但是!使用window.location.href 跳转的话就不会带上base参数,就会导致nginx出现404,而为什么项目中去登录页面往往都使用window.location.href而不是vue-ruoter的api的,因为window.location.href会刷新页面,把当前tab页内存清掉。
2-1:处理方法
2-1-1:去/login也使用vue-ruoter的api
2-1-2: 使用 window.location.href = “/aa/login” 去跳转到登录页。
扩展:为什么使用history模式在本地开发的时候不会出现刷新404的问题,而放到服务器上就会有,因为本地开发的时候,node事实上帮我们做了类似nginx的处理方案,就是所有刷新后url上发出的请求都返回首页然后才不会404,然后vue这个框架就会根据url的路径再渲染不同的页面,nginx处理方法也是同样的逻辑。关于history模式404请移步到 https://router.vuejs.org/zh/guide/essentials/history-mode.html#html5-%E6%A8%A1%E5%BC%8F