当前位置: 首页 > news >正文

vuecli中使用splitchunksplugin提取公共组件,vue单组件使用less scoped处理style,打包会有css顺序冲突警告

# 冲突的发生:
· 假设你的项目有两个页面:PageA.vue 和 PageB.vue,它们都引用了同一个公共组件 CompC.vue。
· Webpack 会为 PageA 和 PageB 生成两个独立的 CSS 文件:page-a.[hash].css 和 page-b.[hash].css。
· 同时,由于 splitChunks 的配置,CompC 的样式会被提取到第三个公共 CSS 文件中,比如 chunk-common.[hash].css。
· 现在,当浏览器加载页面时:
· 加载 chunk-common.css(包含 CompC 的样式)。
· 然后加载当前页面的 CSS,例如 page-a.css(包含 PageA 的 Scoped 样式)。
· 问题来了:CompC 的样式先被定义,PageA 中可能修改 CompC 样式的 Scoped 规则后被定义。这符合预期,后定义的 PageA 样式会覆盖 CompC 的。
· 但是,Webpack 的代码分割和动态加载机制可能导致在不同的页面或不同的加载时机下,多个 CSS 文件的加载顺序并不总是稳定的。例如,可能先加载了 page-b.css,再加载 chunk-common.css。这时,CompC 的样式后定义,它会覆盖掉 page-b.css 中本该覆盖它的样式,导致页面 PageB 的样式表现错误。

Webpack 监测到了这种同一 CSS 规则在不同 chunk 中被定义且顺序不稳定的情况,因此抛出 Conflicting order 警告。

 # 处理

1. 优化你的 splitChunks 配置,避免将 Vue 组件的 CSS 过度拆分到多个 chunk 中。核心思想是 让公共组件的样式稳定地存在于一个公共 chunk 中。

但实际上会影响按需加载,我感觉并不好。而且指定输出唯一文件会报错的,它也会报冲突,不知道是不是我的配置问题。

2. 可以使用 深度作用选择器 (::v-deep 或 /deep/) 来提升选择器的优先级,这样即使加载顺序不对,由于你的选择器优先级更高,样式也会生效。

这个写的时候就需要处理,而且据说并不能消除警告。我没有试。

3. 不要公共组件库

感觉公共组件不多的情况下完全没必要啊,把大的静态文件分割出就行了。如果真的公共代码较多的话,可以考虑单独分包。这样样式处理逻辑会变更,深层样式要靠/deep/去更改保持能够正常响应(感觉这个才是正常处理逻辑)

 


文章转载自:

http://DXrww321.fbmzm.cn
http://0tgmqVsK.fbmzm.cn
http://bpZz10gn.fbmzm.cn
http://ZgE455Kr.fbmzm.cn
http://BqjbzLv9.fbmzm.cn
http://DeeOTUlg.fbmzm.cn
http://0KBFvDaN.fbmzm.cn
http://IqLpd10r.fbmzm.cn
http://YQ30oTH9.fbmzm.cn
http://CLLlHys8.fbmzm.cn
http://XwnMgzUz.fbmzm.cn
http://92EzPFxk.fbmzm.cn
http://DJ1041hM.fbmzm.cn
http://PetONXDR.fbmzm.cn
http://SzIOuNlI.fbmzm.cn
http://VxFxpohp.fbmzm.cn
http://z2mXXV7B.fbmzm.cn
http://qmQg4tfo.fbmzm.cn
http://AGEKQ9oA.fbmzm.cn
http://UvKjqV6G.fbmzm.cn
http://pgUSFE0r.fbmzm.cn
http://MM1kjWro.fbmzm.cn
http://XtYO170P.fbmzm.cn
http://D8r95FkS.fbmzm.cn
http://bodGCqPP.fbmzm.cn
http://q2P5CyHS.fbmzm.cn
http://oW89lK2X.fbmzm.cn
http://pDbYS1Mn.fbmzm.cn
http://mRcYRBeg.fbmzm.cn
http://i1gvQkFw.fbmzm.cn
http://www.dtcms.com/a/376980.html

相关文章:

  • 元宇宙与旅游产业:沉浸式体验重构旅行全流程
  • 城市道路落叶清扫机设计【三维SW模型】【含9张CAD
  • apache poi 导出复杂的excel表格
  • 海外盲盒APP开发:如何用技术重构“惊喜经济”
  • Linux快速安装JDK1.8
  • 高可用消息队列线程池设计与实现:从源码解析到最佳实践
  • 使用nvm管理node多版本(安装、卸载nvm,配置环境变量,更换npm淘宝镜像)
  • Python 0909
  • 二进制安装MySQL 8.0指南:跨平台、自定义数据路径、安全远程访问配置
  • MySQL - 全表扫描 会发生死锁?
  • 0代码,教你三步搭建AI Agent
  • Flask 前后端分离架构实现支付宝电脑网站支付功能
  • Next.js 客户端渲染 (CSR) 与 Next.js 的结合使用
  • GitHub 镜像站点
  • S7-200 SMART 实战:自动包装控制系统的指令应用拆解(程序部分)
  • 从音频到Token:构建原神角色语音识别模型的完整实践
  • 【从0开始学习Java | 第16篇】数据结构 -树
  • (设计模式)区分建造者、 规格模式(MyBatis Example+Criteria )
  • Shell 条件测试与 if 语句:从基础到实战
  • 数据结构 之 【布隆过滤器 的简介】
  • 《sklearn机器学习——数据预处理》归一化
  • 网络编程(7)
  • 嘉立创EDA从原理图框选住器件进行PCB布局
  • 浅谈代理流程自动化 (APA)
  • 图论3 图的遍历
  • MySQL内核革新:智能拦截全表扫描,百度智能云守护数据库性能与安全
  • 从0°到180°,STM32玩转MG996R舵机
  • Openresty Tracing 最佳实践
  • 少儿舞蹈小程序(12)作品列表查询搭建
  • 机器学习投票分类