CSS应按路由或功能拆分并动态加载用mini-css-extract-plugin配合import()实现懒加载组件级样式用scoped或CSS-in-JS隔离禁用同步import全局CSS通过preload、SSR注入或关键CSS内联解决闪屏统一用postcss-import替代原生import并配置alias确保路径稳定最终以Network面板验证首屏实际加载的CSS体积。怎么把CSS按路由或功能拆成小文件又不炸包大项目里所有样式塞进一个 app.css改个按钮边框可能触发全局重绘CI 构建慢、热更新卡顿、协作时不敢动公共类名——这不是 CSS 写得不好是没拆对。关键不是“能不能拆”而是“拆完怎么让浏览器只加载当前需要的”。纯靠 import 或手动 link 会阻塞渲染且 webpack 不会自动做 code-splitting。用 webpack 的 mini-css-extract-plugin 配合动态 import()只有异步加载 JS 模块时它才顺带把关联的 CSS 提取出来Vue/React 中把组件级样式写在 style scoped 或 styled-components 里打包时自动 hash 隔离避免类名冲突禁止在 main.js 里 import ./assets/styles/global.css —— 这会让全部 CSS 进主包懒加载失效CSS 懒加载后页面闪一下白屏或样式错位怎么办常见现象是路由跳转后新页面先渲染无样式的 DOM半秒后才补上颜色和间距。这不是网络慢是 CSS 加载时机不对。根本原因是JS 异步加载完成 → 执行组件挂载 → 渲染 DOM → 浏览器发现缺失 CSS → 发起请求 → 下载解析 → 重绘。中间缺了“等样式就绪再渲染”的钩子。立即学习“前端免费学习笔记深入”服务端渲染SSR场景下必须用 vue-server-renderer 或 vue/server-renderer 的 renderStyles 方法把当前路由所需 CSS 字符串注入 HTML 的 style 标签中客户端路由CSR无法 SSR 时改用 preload 提前声明资源link relpreload href/css/user-profile.css asstyle配合 onload 动态插入 link别依赖 document.styleSheets.length 判断加载完成——它返回的是已解析的 sheet 数但可能还没应用到 DOMpostcss-import 和 import 在大型项目里谁更可控import 是 CSS 原生语法但浏览器执行时是同步阻塞的postcss-import 是构建时处理能做路径解析、去重、变量透传更适合工程化。 Mokker AI AI产品图添加背景