四个方法解决uniapp开发微信小程序时主包太大和vendor.js过大无法打包的问题

这篇具有很好参考价值的文章主要介绍了四个方法解决uniapp开发微信小程序时主包太大和vendor.js过大无法打包的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在uniapp开发小程序这一块,相信很多开发者都遇到过代码体积太大无法打包的问题,还有vendor.js过大无法打包。这时候就要优化小程序包大小。下面分享一下我在实际项目中使用的方法,并解决了相应的问题,这里是我的解决思路。小伙伴们也可以根据自身情况,参考一下。希望能给大家一些帮助吧。

方法一:线上图片

小程序体积大是因为static目录的图片资源过大的话,我们可以将static的图片上传图片服务器上去,小程序使用链接的形式来下载使用图片。

静态图片使用线上地址,不要放到项目中,除了navBar的icon,因为那个只能使用本地资源,相对来说这个不大。

1、上传图片资源到图片服务器上去

将切好的图片上传到图片服务器上面,
比如 https://www.xxxxxxxx.com.cn/wx/static/images/1.png

2、处理JS和vue中的图片引用
2.1、定义JS全局变量

在main.js页面定义js全局变量

Vue.prototype.staticDir = 'https://www.xxxxxxxx.com.cn/wx/static/'; 
Vue.prototype.getStaticFilePath = function (url) {
    return Vue.prototype.staticDir + url;  
}
2.2、替换vue中的图片地址

以前我们引用的图片地址是下面这样的:

<view class="demo">
    <image src="/static/images/1.png"></image>
</view>

现在我们修改src成这样即可:

<view class="demo">
    <image :src="getStaticFilePath('/images/1.png')"></image>
</view>
3、处理css中的图片引用

uniapp根目录下有一个特殊的文件uni.scss,在代码中无需 import 这个文件即可在scss代码中使用这里的样式变量。uni-app的编译器在webpack配置中特殊处理了这个uni.scss,使得每个scss文件都被注入这个uni.scss,达到全局可用的效果。我们将scss的static目录变量放到这里,即可全局使用了。

3.1、定义scss全局变量

在uni.scss的最后添加:

// 背景图片路径
$custom-bg-img-url:'https://www.xxxxxxxx.com.cn/wx/static/';
3.2、css文件改名成scss文件

将原来的css文件改名成scss文件,并像下面这样修改vue中的引用。加上了lang=“scss”

<style scoped lang="scss">

</style>
3.3、替换css中的图片地址

以前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过大。

1、检查manifest.json,在这个文件下的源码视图中,在mp-weixin节点有个optimization,

optimization下的subpackages节点时用来控制微信分包的,需要将此节点设为true

"optimization" : {
    "subpackages" : true
}

小程序vendor.js过大,小程序,uni-app,uni-app,微信小程序,vendor.js,主包大,无法打包,包太大,分包加载

2、配置好重行运行,会发现分包的js文件将不会再打包到主包的vendor.js中了

方法四:代码压缩

1、在HBuilder上面点击运行——>运行到小程序模拟器——>运行时是否压缩代码

小程序vendor.js过大,小程序,uni-app,uni-app,微信小程序,vendor.js,主包大,无法打包,包太大,分包加载

2、在HBuilder上面点击发行——>小程序——>发行——>小程序-微信(仅适用于uni-app)(W)

小程序vendor.js过大,小程序,uni-app,uni-app,微信小程序,vendor.js,主包大,无法打包,包太大,分包加载

3、输入小程序名称和appid点击发行即可。然后控制台会开始编译,等编译好了会自动打开微信开发者工具。

小程序vendor.js过大,小程序,uni-app,uni-app,微信小程序,vendor.js,主包大,无法打包,包太大,分包加载

  • 如果手动发行,则点击发行按钮后,会在项目的目录 unpackage/dist/build/mp-weixin 生成微信小程序项目代码。在微信小程序开发者工具中,导入生成的微信小程序项目,测试项目代码运行正常后,点击“上传”按钮,之后按照 “提交审核” => “发布” 小程序标准流程,逐步操作即可。

  • 如果在发行界面勾选了“自动上传微信平台”,则无需再打开微信工具手动操作,将直接上传到微信服务器提交审核。

4、现在缩小了很多,以前3.2M,现在只有1.8M,现在不管是用来上传代码还是调试都完全没有问题了。

小程序vendor.js过大,小程序,uni-app,uni-app,微信小程序,vendor.js,主包大,无法打包,包太大,分包加载

5、“运行” 和 “发行” 的区别:

运行:模式有 SourceMap 可以方便的进行断点调试;编译出的代码存放于根目录下的 /dist/dev/目录。
发行:模式会将代码进行压缩,体积更小更适合发布为正式版应用;编译出的代码存放于根目录下的 /dist/build/ 目录。文章来源地址https://www.toymoban.com/news/detail-821718.html

到了这里,关于四个方法解决uniapp开发微信小程序时主包太大和vendor.js过大无法打包的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp 开发微信小程序 样式穿透问题解决

    微信文档:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#%E7%BB%84%E4%BB%B6%E6%A0%B7%E5%BC%8F%E9%9A%94%E7%A6%BB 问题:父组件中修改子组件 /deep/ H5中生效,但是在微信小程序不生效。 解决:在script中添加styleIsolation: ‘shared’,即可解决 如图:

    2024年02月12日
    浏览(35)
  • uniapp开发微信小程序requiredPrivateInfos选择地址无效,已解决

    1:在manifest.json文件中打开源码视图配置如下:

    2024年02月12日
    浏览(42)
  • uniapp开发微信小程序,webview内嵌h5,h5打开pdf地址,解决方案

    根据公司要求,让我写一个h5,后续会嵌入到合作公司的微信小程序的webview中,如果是自己公司微信小程序,可以采取先下载下来pdf,然后通过wx.openDocument,进行单纯的预览操作,这个可以根据这个老哥的文章去操作。但是因为是合作方公司,故只能自己想办法,起初想到的

    2024年02月07日
    浏览(34)
  • uniapp开发微信小程序登录获取openid并解决code无效问题:invalid code

    场景: 实现微信支付的时候需要获取到openid,openid需要在登录的时候用登录返回的code获取 1.登录获取 code ,用code获取 openid 解决方法: 报错code无效:invalid code: 1.先在微信小程序管理平台找到APPID,这里的 https://mp.weixin.qq.com/wxamp/devprofile ; 2.检查项目的project.config.json的APP

    2024年02月11日
    浏览(45)
  • uniapp开发微信小程序:提交审核不通过,提示AppSecret存在泄漏的安全风险。解决思路。

    如题:微信小程序审核不通过,提示AppSecret存在泄漏的安全风险 审核失败原因: 你好,当前提审小程序包中可能包含明文的AppSecret,存在泄漏的安全风险。一旦被恶意用户通过技术手段获取你的AppSecret,对方可以通过调用API获取你的小程序敏感数据,如接口调用凭证、用户

    2024年02月22日
    浏览(32)
  • uniapp打包微信小程序主包过大问题

    微信小程序包体积限制:主包资源大小不能超过20M(主包 + 分包),单个分包大小不能超过2M 问题: 在用uniapp打包微信小程序时提示文件超过了2M不让上传,主包中的 vendor.js 太大1.7M有的甚至更大, 解决: 在HbuildX中运行时勾选上运行压缩 在微信开发者工具中上传时勾选上上

    2024年04月13日
    浏览(40)
  • uniapp使用uview主包体积过大(面向微信小程序)

    本人的是使用Hbuilder x进行的开发uniapp转微信小程序项目 使用前:    使用后: 整个爱住~(。≧3≦)ノ⌒☆!!!  友情提示 这个压缩可能会导致你代码热更新变慢,所以你开发的时候 不上传代码的时候 把这个勾东西关掉

    2024年02月11日
    浏览(42)
  • uniapp开发微信小程序解决上线:审核问题“包含明文的AppSecret,存在泄漏的安全风险“以及上线之后接口请求失败

    解决: 原因是我在登录通过uni.login获取到code然后用code获取openid时用到了AppSecret,因为之前后端没空写接口我就在前端自己获取的openid, 解决方案:小程序秘钥放前端审核不通过说不安全,那我就让后端写个接口返回给我,然后仔细检查下代码中是否用到了AppSecret,去掉AppS

    2024年02月11日
    浏览(35)
  • uniapp编译微信小程序主包过大无法上传进行分包优化步骤

    uniapp编译微信小程序主包过大无法上传进行分包优化步骤: 首先是在uniapp项目中的 manifest.json 文件中找到 源码视图 ,进去之后在微信小程序相关 mp-weixin 之下进行开启分包优化的相关配置: 开始新建项目目录,新建一个跟pages同等级的文件夹,然后把想要分包的文件 先复制

    2024年02月11日
    浏览(32)
  • 小程序:uniapp解决主包体积过大的问题

    已经分包但还是体积过大 运行时勾选“运行时是否压缩代码”进行压缩 在 manifest.json 配置(开启分包优化) 在 app.json 配置(设置组件按需注入)

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包