在uniapp开发小程序这一块,相信很多开发者都遇到过代码体积太大无法打包的问题,这时候就要优化小程序包大小。下面分享一下我的解决思路。希望能给大家一些帮助吧。
小程序体积大是因为static目录的图片资源过大的话,我们可以将static的图片上传图片服务器上去,小程序使用链接的形式来下载使用图片。
静态图片使用线上地址,不要放到项目中,除了navBar的icon,因为那个只能使用本地资源,相对来说这个不大。
将切好的图片上传到图片服务器上面,
比如 .png
在main.js页面定义js全局变量
Vue.prototype.staticDir = '/';
StaticFilePath = function (url) {return Vue.prototype.staticDir + url;
}
以前我们引用的图片地址是下面这样的:
<view class="demo"><image src="/static/images/1.png"></image>
</view>
现在我们修改src成这样即可:
<view class="demo"><image :src="getStaticFilePath('/images/1.png')"></image>
</view>
uniapp根目录下有一个特殊的文件uni.scss,在代码中无需 import 这个文件即可在scss代码中使用这里的样式变量。uni-app的编译器在webpack配置中特殊处理了这个uni.scss,使得每个scss文件都被注入这个uni.scss,达到全局可用的效果。我们将scss的static目录变量放到这里,即可全局使用了。
在uni.scss的最后添加:
// 背景图片路径
$custom-bg-img-url:'/';
将原来的css文件改名成scss文件,并像下面这样修改vue中的引用。加上了lang=“scss”
<style scoped lang="scss"></style>
以前css中的背景图地址是下面这样的:
.bgimg {width: 40rpx;height: 40rpx;background-image: url(/static/imags/1.png);background-size: cover;
}
现在我们修改url成这样即可:
.bgimg {width: 40rpx;height: 40rpx;background-image: url($custom-bg-img-url+'/images/1.png');background-size: cover;
}
除了TabBa的页面,其他的页面进行分包处理,保证主包的大小,因为在编译后那些静态js和组件也会放入主包中,分包方式官网有详细解释。
目前小程序分包大小有以下限制:
整个小程序所有分包大小不超过 20M
单个分包/主包大小不能超过 2M
对小程序进行分包,可以优化小程序首次启动的下载时间,以及在多团队共同开发时可以更好的解耦协作。
具体使用方法请参考:
官网介绍
使用分包
独立分包
分包预下载
分包异步化
使用分包之后会发现遇到了一个奇怪的问题,子包的组件和js文件会被打包到主包的vendor.js文件中,这就导致了vendor.js过大。
optimization下的subpackages节点时用来控制微信分包的,需要将此节点设为true
"optimization" : {"subpackages" : true
}
如果手动发行,则点击发行按钮后,会在项目的目录 unpackage/dist/build/mp-weixin 生成微信小程序项目代码。在微信小程序开发者工具中,导入生成的微信小程序项目,测试项目代码运行正常后,点击“上传”按钮,之后按照 “提交审核” => “发布” 小程序标准流程,逐步操作即可。
如果在发行界面勾选了“自动上传微信平台”,则无需再打开微信工具手动操作,将直接上传到微信服务器提交审核。
运行:模式有 SourceMap 可以方便的进行断点调试;编译出的代码存放于根目录下的 /dist/dev/目录。
发行:模式会将代码进行压缩,体积更小更适合发布为正式版应用;编译出的代码存放于根目录下的 /dist/build/ 目录。
本文发布于:2024-01-31 12:58:07,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170667709028691.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |