一起养成写作习惯!这是我参与「日新方案 4 月更文应战」的第4天,点击查看活动详情。
前面已经完成了项目的根本依靠和代码规范的建立,现在咱们需求建立一下构建环境,并完成对低版别谷歌浏览器的兼容。
- Vite项目实践总结(一):项目初始化
- Vite项目实践总结(二):根底依靠
- Vite项目实践总结(三):代码规范
打包指令
修正package.json中的打包指令来区别开发环境和出产环境
{
"script": {
//...
"build:dev": "vue-tsc --noEmit && vite build --mode dev",
"build:pro": "vue-tsc --noEmit && vite build --mode pro"
}
}
在项目中就能够经过import.meta.env
获取到对应的环境
问题1、打包后,放置在assets文件夹中的图片引证途径出错,未能正确指向
/* 源代码 */
.xxxx {
background: url('@/assets/bg.jpg');
}
打包后发现对应的css中途径未能正确指向
- 测验1:可能是途径别号问题-》运用绝对途径->未处理
- 测验2:将图片放到public文件夹,直接指向,仍是不能正确指向
但是从第二次测验中发现问题所在,由于vite默许的资源目录便是public文件夹,所以在将图片放到public下后直接/bg.jpg
即可,但是打包后的途径却变成了./bg.jpg
. 能够知道是咱们vite装备的问题,其时装备了base(开发或出产环境服务的公共根底途径),但是设置为了base: './'
所以出错了,然后将此装备删除,将之前的代码和图片途径恢复成最开端的情况,打包ok.
问题二、打包后的不能兼容Chrome48版别
处理方法:下载vite插件yarn add @vitejs/plugin-legacy -D
;经过该插件来进行兼容性处理
//vite.config.ts
import legacy from '@vitejs/plugin-legacy';
export default defineConfig({
plugins: [
//...
legacy({
targets: ['> 1%',' Chrome >= 48'], //需求兼容的目标列表,能够设置多个
})
]
})
ok
问题四、Element-Plus浏览器兼容性问题
但是咱们需求兼容到谷歌48版别
一开端没有发现该问题(运用el-input、el-aside等组件没有发现异常)。直到运用了表格、下拉框、级联等组件时,打包发布后发现控制台报错ResizeObserver is undefined
,经过查看官网才得知,ResizeObserver
是有兼容性要求的Resize Observer,能够得知Resize Observer在谷歌中最低需求64版别。
所以咱们需求经过polyfill来帮助咱们支持更低版别的要求。
什么是polyfill
MDN上的描绘:Polyfill
是一块代码(通常是 Web 上的 JavaScript),用来为旧浏览器提供它没有原生支持的较新的功用。
处理
- 安装resize-observer-polyfill
npm install resize-observer-polyfill --save-dev
- 在main.ts中引入
import ResizeObserver from 'resize-observer-polyfill';
window.ResizeObserver = ResizeObserver;
之前试过直接在main.ts中import 'resize-observer-polyfill';
,发现仍是没有处理问题,仍是报undefine
, 所以才将它挂载到window下,还好,生效了。