这次的优化我公司项目主包只减小了32kb,但是减小的不仅仅是主包,所有分包均在没有改动任何业务代码的情况下完成了压缩空间的优化。

主包分包压缩空间的优化都要视项目而定,32kb只是我公司的小程序项目。

还有一点需要提前说明,此优化我公司项目因为主包够用了就还没有正式使用,不保证完全没有问题,所以要辛苦测试了。

插件

uni-optimize 是我看了uni源码之后发现的所有可安全优化的地方,包括压缩空间和提升打包速度2个方面

uni-optimize中的fix-ensure-import-plugin插件

可以直接把代码拷下来使用,也可以npm下载

优化原理

我的标题描述的可能不太好,直接上代码吧

import ff from './ff.vue'

这种类似代码相信大家写的都能倒着背了吧。uni转换后的代码如下

var ff = function ff() {
__webpack_require__.e(/*! require.ensure | pages/index/ff */ "pages/index/ff").then((function () {
return resolve(__webpack_require__(/*! ./ff */ "3fd1"));
}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};

这是为了可阅读没有走压缩的代码,这一段代码在小程序中实没有使用的,所以我用ast把代码删除了

插件安全性

我通过了以下几点来确认是可以删除的。

1 先在导入方法里也就是上面代码的ff方法中打断点,看断点是否生效,如果生效了那就没必要写这个文章了。。。

2 为了了解小程序中vue组件之间的交互专门去把uni的运行时代码读了一遍,发现确实是没有使用的,

uni运行时: https://www.cnblogs.com/wzcsqaws/p/15731957.html

简单点来说,微信每一个页面或者组件都有json文件,里面存放了相互的关系,我们平时写的import组件的代码,

其实只是在打包的时候帮助uni来生成小程序的json文件,打包完后微信并没有去使用它所以可以删除来节省代码空间。

可能出现的问题

本人的ast不是很厉害,可能没有兼容到不同的import写法,但是最多也就是没有删除干净

uni微信小程序优化,打包后的import vue路径是可删除的的更多相关文章

  1. uni微信小程序优化,几行代码就能省100kb的主包空间?

    不是标题党,我们公司的项目确确实实是省下了100kb的主包空间,而且还是在没有牺牲任何的性能和业务的前提下实现的. 但是100kb是根据项目大小,所以你用这个插件可能省下超过100kb或者更少. 直接 ...

  2. uni微信小程序优化,多个分包在用的公共代码该放在哪?

    公共的代码包括公用的vue组件和js代码,从维护性的角度来说应该放到主包才对, 但是主包有大小限制,如果把2个分包都在用的代码放到主包里面那2M很快就满了. 所以该放在哪?我的方案是从维护的角度放在主 ...

  3. 微信小程序拒绝授权后重新拉起授权窗口

    问题: 在首次进入小程序时,我们常常会收到一些获取权限的申请,比如「获取地理位置权限」.需要微信登录时请求「获得你的公开信息(昵称.头像等)」.对于这些权限申请,开发者当然希望获得所有权限,而用户拒绝 ...

  4. 关于微信小程序拒绝授权后,重新授权并获取用户信息

    最近公司做了一些有关微信小程序的项目,涉及到授权获取用户基本信息,但是在拒绝授权之后就不会再出现授权窗口: 看网上也有很多人遇到了同样的问题,所以记录下来我的处理方法,供大家和自己学习和记录: 当调用 ...

  5. 微信小程序上传后发布或者体验版测试无数据解决办法

    在做微信小程序开发的过程中,发现小程序在本地调用接口的数据都显示,但是上传之后,发现手机体验没有数据.以下为解决办法: 1.先清除缓存试试. 2.打开微信小程序工具右上角的详情——项目设置,将“不校验 ...

  6. 微信小程序优化

    setData setData 是小程序开发中使用最频繁的接口,也是最容易引发性能问题的接口.在介绍常见的错误用法前,先简单介绍一下 setData 背后的工作原理. 工作原理 小程序的视图层目前使用 ...

  7. 关于微信小程序发布新版本后的提示用户更新的方法详解

    当小程序发布新的版本后 ,用户如果之前访问过该小程序,通过已打开的小程序进入(未手动删除),则会检测新版本,提醒用户更新新的版本 话不多说,上代码 App({ onLaunch: function ( ...

  8. 微信小程序拒绝授权后提示信息以及重新授权

    wx.authorize({ scope: 'scope.writePhotosAlbum', success() { // 授权成功 wx.saveImageToPhotosAlbum({ file ...

  9. 微信小程序——扫码后提示“打开失败缺少ID”

    解决步骤: 进入通讯录tab->点击右上角添加朋友->搜索框输入:recover,拉到最底下选择小程序进行修复操作 参考:https://developers.weixin.qq.com/ ...

随机推荐

  1. Balancing Act(poj1655)

    Balancing Act Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12703   Accepted: 5403 De ...

  2. Brute-force Algorithm(hdu3221)

    Brute-force Algorithm Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  3. Codeforces 777C:Alyona and Spreadsheet(预处理)

    During the lesson small girl Alyona works with one famous spreadsheet computer program and learns ho ...

  4. EMA

    目录 源 设置 结果 源 Exponential moving average (EMA) 是一个非常有用的trick, 起到加速训练的作用. 近来发现, 该技巧还可以用于提高网络鲁棒性(约1% ~ ...

  5. pandas tutorial

    目录 Series 利用dict来创建series 利用标量创建series 取 Dataframe 利用dict创建dataframe 选择 添加列 列移除 行的选择, 添加, 移除 Panel B ...

  6. 编写Java程序,实现一个简单的echo程序(网络编程TCP实践练习)

    首先启动服务端,客户端通过TCP的三次握手与服务端建立连接: 然后,客户端发送一段字符串,服务端收到字符串后,原封不动的发回给客户端. ECHO 程序是网络编程通信交互的一个经典案例,称为回应程序,即 ...

  7. 新来的实习生测post接口老漏测,搞清楚原理再执行真的很重要

    ​一.GET方法和POST方法传递数据的异同  一.GET方法和POST方法传递数据的异同 http请求方法get和post是最常被用到的两个方法,get常用于向服务器请求数据,post常用于提交数据 ...

  8. 适配器模式(pthon)

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- # adapter_pattern.py # 适配器模式 class Adaptee: def reque ...

  9. Windows 重装系统,配置 WSL,美化终端,部署 WebDAV 服务器,并备份系统分区

    最新博客文章链接 最近发现我 Windows11 上的 WSL 打不开了,一直提示我虚拟化功能没有打开,但我看了下配置,发现虚拟化功能其实是开着的.然后试了各种方法,重装了好几次系统,我一个软件一个软 ...

  10. day 10 删除空白字符

    (1).有以下程序(大写变小写) (2).有以下程序,在[1]填写程序,使得程序正确运行. 分析:(*p)(int,int)是一个函数指针(一个指针[*p]指向的对象是一个函数),函数的形参是(int ...