uni-app编译成小程序打包后.ss(css文件)过大的问题
uni-app编译成小程序打包后.ss(css文件)过大的问题
操作步骤:
- 首先
pnpm i
安装依赖 pnpm dev:mp-alipay
buildtest:mp-alipay
预期结果:
希望另外页面不在引入公用css文件只引用一次
可不可以参照https://www.mpxjs.cn/guide/basic/css.html#%E5%85%AC%E5%85%B1%E6%A0%B7%E5%BC%8F%E5%A4%8D%E7%94%A8 这种方式复用css?
实际结果:
…
bug描述:
在app.vue里面定义公共scss文件, 然后别的页面有引用app.vue的scss变量 就会导致 页面全部引入 ,导致打包后出来的代码体积很大
代码见附件
图片
6 回复
遇到同样的问题,
组件的.wxss 文件, 把所有的公用样式都包含进去了
老哥你是怎么解决的
同问,这编译操作不是跟"小程序"背道而驰吗
吐了,公共样式app.vue里面引的,编译出来每个wxss的大小几百k
在 uni-app 中,编译成小程序时,生成的 .wxss
文件(对应小程序的样式文件)可能会变得过大,这会影响小程序的加载速度和性能。以下是一些优化 .wxss
文件大小的建议:
1. 减少冗余样式
- 检查并删除未使用的样式:使用工具(如
PurgeCSS
)来检测和删除未使用的 CSS 规则。 - 避免重复样式:确保没有重复的样式定义,合并相同的样式规则。
2. 使用 CSS 预处理器
- Sass/Less:使用 CSS 预处理器(如 Sass 或 Less)来编写模块化的样式,减少重复代码。
- 变量和混合:利用变量和混合(Mixins)来减少重复的样式代码。
3. 压缩 CSS 文件
- 使用压缩工具:在打包时使用 CSS 压缩工具(如
cssnano
)来压缩.wxss
文件,去除空格、注释等不必要的字符。 - uni-app 配置:在
vue.config.js
中配置css
的extract
和minimize
选项,确保 CSS 文件被压缩。
4. 按需加载样式
- 动态加载样式:根据页面或组件的需要,动态加载样式文件,而不是将所有样式打包到一个文件中。
- 分包加载:将样式文件按需分包加载,减少主包的体积。
5. 使用小程序原生样式
- 内联样式:对于简单的样式,可以直接使用小程序的
style
属性内联样式,减少.wxss
文件的体积。 - 小程序原生组件:尽量使用小程序的原生组件,减少自定义样式的使用。
6. 优化图片资源
- 压缩图片:确保图片资源经过压缩,减少图片文件的大小。
- 使用 Base64:对于小图标,可以使用 Base64 编码嵌入到 CSS 中,减少 HTTP 请求。
7. 使用小程序的分包机制
- 分包加载:将不同页面的样式文件分包加载,减少主包的体积。
- 独立分包:对于不常用的页面,可以使用独立分包,减少主包的加载时间。
8. 使用 uni-app 的优化配置
optimization
配置:在vue.config.js
中配置optimization
选项,优化打包结果。splitChunks
配置:使用splitChunks
将公共样式提取到单独的文件中,减少重复。
9. 使用小程序的自定义组件
- 自定义组件:将样式封装到自定义组件中,减少全局样式的使用。
10. 使用小程序的原生样式优化工具
- 小程序开发者工具:使用小程序开发者工具中的“代码分析”功能,检测并优化样式文件。
示例配置(vue.config.js
)
module.exports = {
css: {
extract: true, // 提取 CSS 到单独的文件
sourceMap: false, // 关闭 source map
loaderOptions: {
css: {
// 配置 css-loader
},
postcss: {
// 配置 postcss-loader
plugins: [
require('cssnano')({
preset: 'default', // 使用默认的压缩配置
}),
],
},
},
},
optimization: {
splitChunks: {
cacheGroups: {
styles: {
name: 'styles',
test: /\.(css|wxss)$/,
chunks: 'all',
enforce: true,
},
},
},
},
};