vue项目上传服务器空白,vue项目打包之后页面空白解决办法

之前项目遇到个情况,npm run build打包之后上传到服务器后,index.html打开一片空白,资源都加载了,但是就是不显示。

然后百度找了原因,修改了两处地方

一、修改 assetsPublicPath

在config/index.js里面,有个 assetsPublicPath 属性,源码是‘/’,修改成‘./’,加个点

assetsPublicPath: '/',

二、路由模式将histroy改成hash模式,起初 mode:'history'

const router = new Router({

base: '/',

mode: 'hash',

routes: ROUTES

})

那么vue-router的hash模式和histroy模式有什么区别呢?

1、hash模式url带#,histroy模式url不带#

2、hash模式解决了通过http请求来切换页面,改变路径可以直接改变页面,无需进行网络请求,这叫前端路由,在hash模式下改变的是#中的信息,

history模式,可以前进和后退,但是不能刷新页面,刷新之后就会报错。如果后端没有对路由地址进行相应的处理,那么就会报404的错。

3、hash浏览器支持率比较好,支持低版本的浏览器,但history的方法只支持部分浏览器。

vue中获取url参数

1、路由获取

this.delivery_asn = this.$route.query.delivery_asn;

2、非路由获取

(1)在js文件中写方法

export function getUrlKey(name,url){undefined

return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(url) || [, ""])[1].replace(/\+/g, '%20')) || null

}

(2)在项目文件中引入

import { getUrlKey } from '@/utils';

(3)在项目文件中使用

this.delivery_asn = getUrlKey("delivery_asn ",window.location.href)

如果url中参数base64编码

let path = window.location.href.split("?") //分割url

let href = path[0]+"?"+path[1]

let query = Base64.decode(path[1]) //解码

href = path[0]+"?"+ query //解码后重组

this.delivery_asn = getUrlKey("delivery_asn ",href)

posted @ 2022-03-01 14:10  土小狗  阅读(667)  评论(0编辑  收藏  举报