关于Vue页面css样式错乱—初次加载页面排版正常但偶尔刷新页面却出现样式错乱的问题
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
一、问题复现
- 自己在写一个Vue项目时发现一切功能都正常,控制台也没有报错
- 第一次打开页面时,css样式成功渲染,但是再次刷新页面时偶尔会出现样式错乱的问题
- 我打开
console
—network
—查看css
那一栏,突然发现有时引入的css文件会报404
错
二、寻找原因
我根据控制台的css文件404找不到的错误往源头找,发现原来是Vue项目的public
文件夹下的index.html
文件出现了问题——相对路径引用错误
原先的错误写法:
<link rel="stylesheet" href="./reset.css">
解决方式:
<link rel="stylesheet" href="<%= BASE_URL %>reset.css">
三、分析思路
- 使用相对路径会出现问题,主要是因为相对路径的解析方式依赖于当前页面的 URL 路径
- 在单页面应用中,
Vue Router
会改变 URL,但不重新加载页面,这可能导致相对路径的解析错误
3.1 相对路径./
的解析方式
相对路径 ./reset.css
是基于当前页面的 URL 来解析的,例如:
如果当前页面的URL是 http://example.com/home
浏览器会尝试加载:http://example.com/home/reset.css
如果当前页面的URL是:http://example.com/about
浏览器会尝试加载:http://example.com/about/reset.css
这会导致资源路径错误,进而引发 404 错误
3.2 使用 <%= BASE_URL %>
的优点
Vue CLI
提供的<%= BASE_URL %>
占位符会被替换为正确的公共路径,这确保了资源路径在不同环境下都能正确解析
3.3 额外建议
- 为了避免类似的问题,建议在 Vue 项目中始终使用基于根路径的相对路径或绝对路径,并在
vue.config.js
中正确配置publicPath
- 这样可以确保所有静态资源在任何环境和路由下都能正确加载
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献2条内容
所有评论(0)