解決vite打包后白屏之router-view不生效問(wèn)題
問(wèn)題發(fā)現(xiàn)
項(xiàng)目打包后白屏,最開始是在打包后的dist文件中的index.html中路徑爆黃
控制臺(tái)報(bào)錯(cuò)找不到資源
簡(jiǎn)單搜索后發(fā)現(xiàn)在vite.config.ts中配置base: "./"即可解決報(bào)錯(cuò)問(wèn)題
import {defineConfig, loadEnv} from 'vite' import vue from '@vitejs/plugin-vue' // @ts-ignore import path from 'path' export default defineConfig(({ mode }) => { return { base: "./", plugins: [ vue() ], resolve:{ alias:{ // @ts-ignore '@': path.resolve(__dirname, './src') } } } })
控制臺(tái)沒報(bào)錯(cuò)了,但是依舊是白屏
開了個(gè)新項(xiàng)目,打包后能夠正常使用,初步判定是路由的問(wèn)題,然后在本項(xiàng)目的App.vue中加了123,發(fā)現(xiàn)打包后可以顯示123,但是還是不顯示其他的頁(yè)面
<script setup lang="ts"> </script> <template> <div> 123 <router-view/> </div> </template> <style scoped> </style>
解決方案
最后搜索了router-view為什么不顯示,找到一篇文章說(shuō)vite打包的項(xiàng)目需要在服務(wù)端環(huán)境才可以正常訪問(wèn),不能直接客戶端瀏覽器訪問(wèn)
如果是vscode,可以下載live server模擬服務(wù)端環(huán)境,如果是webstorm,則可以右上角直接點(diǎn)開就是模擬服務(wù)端環(huán)境
但是結(jié)果還是白屏,后續(xù)發(fā)現(xiàn)是只有路由模式是history的情況下,router-view才會(huì)失效,改為hash模式就可以生效了。
import {createRouter, createWebHashHistory} from "vue-router"; import pay from "@/page/pay.vue"; const routes = [ { path: '/', component: pay,redirect:"/pay" }, { path: '/pay', component: pay } ] const router = createRouter({ history: createWebHashHistory(), // @ts-ignore routes, }) export default router;
值得注意的是,如果不模擬服務(wù)端環(huán)境,直接在文件訪問(wèn),還是會(huì)報(bào)錯(cuò)
補(bǔ)充
hash和history區(qū)別
簡(jiǎn)單來(lái)說(shuō)就是hash模式就是路徑中帶#的,history模式就是路徑中不帶#號(hào)
Hash模式
Hash 模式是通過(guò)監(jiān)聽 URL 中的 hash 值( #
及其后面的部分)來(lái)實(shí)現(xiàn)路由切換和組件渲染的。
優(yōu)點(diǎn):
- 兼容性好,支持所有瀏覽器,包括不支持 HTML5 History API 的老舊瀏覽器。
- 服務(wù)端無(wú)需做特殊配置。
缺點(diǎn):
- URL 中有
#
號(hào),不太美觀。 - 部分老舊的瀏覽器可能會(huì)有效率問(wèn)題。
Hash模式路由實(shí)現(xiàn)原理
在 hash 模式下,路由的實(shí)現(xiàn)主要依賴于 URL 的 hash 部分(即#
后面的部分)。
History模式
History 模式利用 HTML5 History API 中的 pushState 和 replaceState 方法來(lái)實(shí)現(xiàn) URL 的導(dǎo)航,無(wú)需 #
號(hào)。
優(yōu)點(diǎn):
- 更加美觀,看起來(lái)像標(biāo)準(zhǔn)的網(wǎng)站鏈接。
- 符合 HTML5 標(biāo)準(zhǔn),支持瀏覽器的前進(jìn)/后退按鈕。
缺點(diǎn):
- 部分老舊的瀏覽器不支持 HTML5 History API,需要使用墊片庫(kù)(Polyfill)來(lái)支持。
- 需要在服務(wù)端做特殊配置,確保所有的 URL 都能找到應(yīng)用入口文件(例如 index.html),否則會(huì)出現(xiàn) 404 錯(cuò)誤。
History模式路由實(shí)現(xiàn)原理
在history模式下,路由的實(shí)現(xiàn)主要依賴于HTML5的History API。
結(jié)語(yǔ)
如果是實(shí)在想要history模式的,可以在本地打包完需要測(cè)試的,改為hash模式后,用live server插件或者直接webstorm打開即可成功測(cè)試,準(zhǔn)備部署后再修改為history模式
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 解決vite build打包后頁(yè)面不能正常訪問(wèn)的情況
- vue3+ts+vite打包后靜態(tài)資源404無(wú)法加載js和css問(wèn)題解決辦法
- vite打包只生成了一個(gè)css和js文件問(wèn)題的解決方法
- vite打包出現(xiàn)?"default"?is?not?exported?by?"node_modules/...問(wèn)題解決辦法
- 關(guān)于vite+vue3打包部署問(wèn)題
- vite打包優(yōu)化分片打包依賴包詳解
- Vue3在history模式下如何通過(guò)vite打包部署白屏
- VUE3?Vite打包后動(dòng)態(tài)圖片資源不顯示問(wèn)題解決方法
- vite分目錄打包及去掉默認(rèn)的.gz?文件的操作方法
- VUE3項(xiàng)目VITE打包優(yōu)化的實(shí)現(xiàn)
- Vite中Rollup打包的實(shí)現(xiàn)
相關(guān)文章
vue.js滾動(dòng)條插件vue-scroll的基本用法
在移動(dòng)端或PC,頁(yè)面的部分內(nèi)容常常需要我們讓其在頁(yè)面滾動(dòng),這篇文章主要給大家介紹了關(guān)于vue.js滾動(dòng)條插件vue-scroll的基本用法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12解決element ui select下拉框不回顯數(shù)據(jù)問(wèn)題的解決
這篇文章主要介紹了解決element ui select下拉框不回顯數(shù)據(jù)問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02100行代碼理解和分析vue2.0響應(yīng)式架構(gòu)
通過(guò)100行代碼幫助大家理解和分析vue2.0響應(yīng)式架構(gòu)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Vue.js遞歸組件實(shí)現(xiàn)組織架構(gòu)樹和選人功能案例分析
這篇文章主要介紹了Vue.js遞歸組件實(shí)現(xiàn)組織架構(gòu)樹和選人功能,本文通過(guò)案例代碼講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07vue2.0實(shí)現(xiàn)列表數(shù)據(jù)增加和刪除
這篇文章主要為大家詳細(xì)介紹了vue2.0實(shí)現(xiàn)列表數(shù)據(jù)增加和刪除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06vue項(xiàng)目index.html中使用環(huán)境變量的代碼示例
在Vue3中使用環(huán)境變量的方式與Vue2基本相同,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目index.html中使用環(huán)境變量的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02vue修改數(shù)據(jù)的時(shí)候,表單值回顯不正確問(wèn)題及解決
這篇文章主要介紹了vue修改數(shù)據(jù)的時(shí)候,表單值回顯不正確的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11Vue3項(xiàng)目實(shí)現(xiàn)前端導(dǎo)出Excel的示例代碼
這篇文章主要介紹了Vue3項(xiàng)目實(shí)現(xiàn)前端導(dǎo)出Excel的示例,在vue3的項(xiàng)目中導(dǎo)出Excel表格的功能,可以借助xlsx庫(kù)來(lái)實(shí)現(xiàn),下面是詳細(xì)的操作步驟,需要的朋友可以參考下2025-01-01vue項(xiàng)目啟動(dòng)命令個(gè)人學(xué)習(xí)記錄
最近想要學(xué)習(xí)vue,正好看到資料,如何通過(guò)命令創(chuàng)建vue項(xiàng)目的方法,就留個(gè)筆記,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目啟動(dòng)命令的相關(guān)資料,需要的朋友可以參考下2023-02-02