在做Hybrid app的热更新时,我改了页面按钮的CSS样式,但新样式完全没生效。之前用vue-hotreload-api能更新JS,但CSS怎么都不行。
我尝试过清除缓存、检查网络请求发现新CSS确实被拉取了,但页面还是显示旧样式。比如这个按钮样式:
.button {
border-radius: 8px;
background: #4CAF50;
}
新版本改成了border-radius:16px,颜色#2196F3,但页面还是显示老圆角和绿色。重启app也没用,是不是需要额外处理样式注入?
Vue的hot reload api主要处理组件实例和js逻辑,对全局CSS支持不完整。你需要手动接管样式注入。
优化一下方案:在热更新拿到新CSS内容后,不要直接appendChild,而是先找到老的style标签干掉它。
比如你用link标签加载css,可以给它加个特殊id:
这样能确保旧样式被清除,避免层叠干扰。注意别用link rel=stylesheet,因为浏览器缓存太难控制,直接用style标签内联最稳。
另外检查下你的构建配置,确保extract-css-from-js是关的,不然css会被抽成单独文件,热更新时路径变了也容易出问题。