美文网首页
小程序 - 包大小分析

小程序 - 包大小分析

作者: chauI | 来源:发表于2018-09-14 18:58 被阅读9次
  • 编译环境
"@f-loat/mpvue-loader": "^1.0.0",
"mpvue-entry": "^1.4.0",
"webpack-mpvue-asset-plugin": "^0.0.2"
// 当前版本较旧,更新依赖后会改变目录结构
  • 编译代码为 dev 分支上的 cfe4b07340

  • 目前分包总大小 1774kb,资源文件可能占用超过 1300kb

  • 目前小程序单包限制为 2MB

单个页面编译前后分析

以「发布团购」页面 pages/leader/publishPurchase 为例:

页面引入了两个组件:
components/publish/imageItemcomponents/publish/publishProduct

两个组件编译后文件的大小分别是 677 bytes 和 3kb,编译前代码量分别为 45 行以及 87 行。
以下是后者编译生成的文件内容:

<template name="publishProduct$6039cddd"><view class="_div data-v-61b57ef2 product-container" bindlongpress="handleProxy" data-eventid="{{'3'}}" data-comkey="{{$k}}"><view style="line-height: 100rpx; text-align: center; font-size: 10pt; color: #353535; width: 60rpx" class="_div data-v-61b57ef2">{{index + 1}}</view> <view class="_div data-v-61b57ef2 productContainer"><view style="display: flex; flex: 1; align-items: center;" class="_div data-v-61b57ef2"><view style="font-size: 10pt; color: #353535; text-algin: end; line-height: 100%" class="_div data-v-61b57ef2">{{item.product_name}}</view> <view style="font-size: 8pt; color: #353535; margin-left: 5pt; line-height: 100%" class="_div data-v-61b57ef2">(库存{{item.available_stock}})</view></view> <view style="display: flex; flex: 1; align-items: center;" class="_div data-v-61b57ef2"><view style="display: flex; flex: 1" class="_div data-v-61b57ef2"><view style="color: #353535; font-size: 8pt" class="_div data-v-61b57ef2">规格:</view> <view style="color: #353535; font-size: 8pt; margin-left: 2pt;" class="_div data-v-61b57ef2">{{item.spec_box}}{{item.spec_uom}}/{{item.sale_uom}}</view></view> <view style="display: flex; flex: 1" class="_div data-v-61b57ef2"><view style="color: #353535; font-size: 8pt" class="_div data-v-61b57ef2">单价:</view> <view style="color: #353535; font-size: 8pt; margin-left: 2pt;" class="_div data-v-61b57ef2">{{item.procurement_price}}元/{{item.sale_uom}}</view></view> <view style="display: flex; flex: 1" class="_div data-v-61b57ef2"><view style="color: #353535; font-size: 8pt" class="_div data-v-61b57ef2">售价:</view> <view style="color: #353535; font-size: 8pt; margin-left: 2pt;" class="_div data-v-61b57ef2">{{item.sale_price}}元/{{item.sale_uom}}</view></view></view></view> <view class="_div data-v-61b57ef2 iconContainer"><view style="flex: 1;width:100%; display: flex; flex-direction: column; justify-content: center; margin: 2pt 0" wx:if="{{method.productGoods.length > 1}}" class="_div data-v-61b57ef2"><view style="display: flex, flex: 1; justify-content: center" bindtap="handleProxy" wx:if="{{method.productIndex !== 0}}" data-eventid="{{'0'}}" data-comkey="{{$k}}" class="_div data-v-61b57ef2"><image style="height: 20rpx; width: 40rpx;" src="/static/assets/product_up.png" alt="上升" class="_img data-v-61b57ef2"></image></view> <view style="display: flex,flex: 1; justify-content: center" bindtap="handleProxy" wx:if="{{method.productIndex !== method.productGoods.length - 1}}" data-eventid="{{'1'}}" data-comkey="{{$k}}" class="_div data-v-61b57ef2"><image style="height: 20rpx; width: 40rpx;" src="/static/assets/product_down.png" alt="下降" class="_img data-v-61b57ef2"></image></view></view> <view style="flex: 1; display: flex; align-items: center" bindtap="handleProxy" data-eventid="{{'2'}}" data-comkey="{{$k}}" class="_div data-v-61b57ef2"><image style="height: 30rpx; width: 30rpx" src="/static/assets/delete_icon.png" alt="删除" class="_img data-v-61b57ef2"></image></view></view></view></template>

publishPurchase 页面单文件的内容被编译成多个文件:

pages/leader/publishPurchase/js/main.js (22.6 kB)                       // 页面的逻辑代码部分
pages/leader/publishPurchase/css/main.wxss (3.27 kB)                    // wxss
pages/leader/publishPurchase/components/leader$78ae12a1.wxml (9.82 kB)  // wxml 

pages/leader/publishPurchase.json   (72 bytes)                          // router.js 中的配置内容
pages/leader/publishPurchase.js     (130 bytes)                         // 页面的入口,import main.js
pages/leader/publishPurchase.wxss   (59 bytes)                          // import main.wxss 
pages/leader/publishPurchase.wxml   (139 bytes)                         // import leader$78ae12a1.wxml 

总共 35kb 左右。整个页面不包括组件,编译前代码量是 752 行。

上面的文件都是用生成正式包的命令生成 (npm run build),相对于测试时使用的 npm run dev,区别在于 正式包的文件会去掉空格、去掉注释等压缩操作,publishPurchase/js/main.js 文件大小从 53kb 压缩到 22.6kb。

小程序分包大小

微信开发者工具显示的分包大小为:

i微信开发者工具 - 详情

mpvue 编译内容

下表是 npm run build 之后的内容,也就是生成的原生小程序代码的内容。
不精准统计,.png 总大小为 1320kb 左右。单个最大为 199kb。

编译生成的所有文件 生成的小程序目录结构

相关文章

  • 小程序 - 包大小分析

    编译环境 编译代码为 dev 分支上的 cfe4b07340 目前分包总大小 1774kb,资源文件可能占用超过 ...

  • 微信小程序新动向

    小程序开放新能力: 1. 第三方平台支持小程序 2. 小程序新增数据分析接口 3. 小程序代码包大小限制扩大到2M

  • 2019-06小程序升级简要

    微信小程序分包加载 包的限时 整个小程序所有分包大小不超过 8M 单个分包/主包大小不能超过 2M 分包规则(普通...

  • 微信小程序:分包报错

    微信提供了分包加载目前小程序分包大小有以下限制: 整个小程序所有分包大小不超过 8M 单个分包/主包大小不能超过 ...

  • taro项目减少小程序主包体积

    发现问题 目前小程序分包大小有以下限制: 整个小程序所有分包大小不超过 20M 单个分包/主包大小不能超过 2M ...

  • Taro 小程序分包

    微信小程序限制了代码包不能超过 2MB,限制大小是对小程序启动速度的考虑,但是2MB 大小严重限制了小程序功能的扩...

  • 小程序开发知识总结

    常识性问题 小程序规定最终上传的包大小 –> 1M 小程序push方式跳转最多能跳转几个页面 -> 5个 小...

  • 小程序调试超过包大小限制

    近期开发工具,更新了4m限制本地调试时候的限制和热更新。右上角,详情-本地设置打开。即可以分包之后仍过大时,不用b...

  • 小程序分包(Taro分包案例)

    为什么要使用小程序的“分包加载”方案 微信小程序限制了代码包不能超过 2MB,限制大小是对小程序启动速度的考虑,但...

  • 小程序分包

    1.简介 我们在开发小程序的时候,经常回遇到一个情况就是,当小程序比较完整、功能比较完全的时候,会造成小程序包大小...

网友评论

      本文标题:小程序 - 包大小分析

      本文链接:https://www.haomeiwen.com/subject/esgngftx.html