1.背景介绍

接手了一个7,8手的项目,没有模块化,项目结构没有分层,所有的东西都是cv,变量命名几乎无法阅读,真真的是司马迁厕所读史记---史上加屎。没办法,作为一个专业人员,我只能在这上面添砖加瓦了。最近领导不是嫌弃首屏加载太慢,于是活这不又来了吗(ps.原来优化过一次,但是嘛,摸鱼人干活永远只干一半)。

2.论我的两次优化

1.个别用户手机白屏,主包大小优化问题

        这个问题是运营反馈的,你永远也不知道你的用户到底还在用着安卓几(ps.这是个h5套壳的安卓项目,都用taro了直接转rn不好嘛,黑人问号?)。有bug嘛,那肯定是要改的嘛(谁叫他发钱呢)。问题是这样的,用户其实已经进入app了,并且内容已经显示出来了,但是个别页面点击跳转后,app白屏,必须得杀进程后再重新进入,但再次点击还是会白屏(无限循环,就这几个用户,改个屁啊,影响我刷论坛,干)。

接下来就是定位了,其实这种混合项目或多或少都会因为兼容问题出bug,开始是叫安卓改的,希望把webview改成腾讯内核的,但是安卓说不改,改不了(嫡系就是牛逼!!!)。接下来就只能我这个最底层的来改了。跳转有问题,要么跳转链接错了,要么参数没拿到,因为是部分用户有这问题(妈的,换手机啊),所以我直接从第二个可能性入手了。借遍所有测试机,全无问题(晃点我是吧?),既然用户有问题,那肯定是有问题了,不改点东西,今天都不好意思拿老板钱,开启大对比发,对比没问题的跳转链接和有问题的跳转链接,终于发现了罪魁祸首————URLSearchParams,在路由跳转时这几个页面为了省事直接用这个函数,将这个修改成最原始的写法xxx=xxx就没问题了,推荐一个兼容性网站https://caniuse.com。发散下思维,这个函数都不支持,会不会es6也不支持,为了解决隐患,就去dist目录下搜索了const,还不少,最后发现都是modules里的(不应该啊),改吧。直接贴代码

webpackChain (chain) {chain.merge({module: {rule: {es5Loader: {include: [path.resolve(__dirname, "../node_modules"),],test: /\.*[tj]s$/,use: [{loader: "babel-loader",}]}}}});

编译ok,测试ok,发版。运营反馈已经没问题了(完美,这周工作量完成,出去抽烟)。小x啊,为什么首次加载这么久?(打包后app.js 2m+,app.css都1m+能不久嘛,但是我不说~~)。接下来就是一些常规的操作,先用webpack-bundle-analyzer分析打包后的结构,发现一个是moment组件打包后还是会带local进去,其实项目不需要使用,所以先去掉moment的local:

chain.plugin('nolocal').use(new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/));

第二个就是开启taro自带的terser,这样app.js就能下到差不多300kb。然后就是将图片压缩,压缩后主包下到了1.3m左右,最后在打包的时候把引入的vsconsole去掉,app.js下到1.1(完美,工作完成)。

2.第二次优化

        为什又要再优化,因为被投诉了。这次只能从别的地方入手,还是先用webpack-bundle-analyzer分析,发现已经没发再从代码入手了(其实可以的,抽取公共模块commonChunkpulgin,修改项目结构,抽公共组件,减少耦合,但是这些得留到下次投诉了)。最后咋整的,把首屏加载的公共部分抽离,二开启gzip(直接起飞啊兄弟吗),直接上代码

webpackChain (chain) {chain.merge({plugin: {install: {plugin: require('compression-webpack-plugin'),args: [{test: /\.(js|css)/,filename: '[path].gz[query]',algorithm: 'gzip',threshold: 10240,minRatio: 0.8}]}},.....})
}

有一点需要注意的是,taro3.x的直接用5.0.1的插件吧,最新的会报错。

上对比图

开心,这周工作量完成(摸鱼人永不为奴)。

关于Taro H5 打包与优化相关推荐

  1. 代码体积减少80%!Taro H5转换与优化升级

    前言 作为一个多端开发框架,Taro 从项目发起时就已经支持编译到 H5 端.随着 Taro 多端能力的不断成熟,我们对 Taro H5 端应用的要求也不断提升.我们已经不再满足于"能跑&q ...

  2. 移动H5前端性能优化指南[转]

    移动H5前端性能优化指南 米随随2015.01.23 移动H5前端性能优化指南 概述 1. PC优化手段在Mobile侧同样适用 2. 在Mobile侧我们提出三秒种渲染完成首屏指标 3. 基于第二点 ...

  3. webstrom中打包的详细_webpack打包体积优化

    webpack webpack打包体积优化 webpack官方定义 webpack 是一个模块打包器.webpack 的主要目标是将 JavaScript 文件打包在一起,打包后的文件用于在浏览器中使 ...

  4. 白鹭引擎王泽:重度H5游戏性能优化技巧

    9月15日,无惧17级台风"山竹",320名开发者齐聚广州贝塔空间共同探讨"怎样做一款赚钱的小游戏".针对众多开发者关心的重度H5游戏性能优化技巧,我们整理了现 ...

  5. Vue项目的打包\部署\优化

    Vue项目的打包\部署\优化 如果有帮助到你 麻烦点个赞或者 收藏 +关注 哟 以后会经常发布一些干货文章 我只是一个前端小菜鸟,大佬勿喷! 一.nginx 开启 gzip 理论上,nginx 开启 ...

  6. 白鹭引擎王泽:重度H5游戏性能优化技巧标题的文章

    我们的引擎架构师做某一沙龙活动的演讲速记,纯纯的干货,分享给大家. 王泽:各位开发者下午好!我叫王泽,是白鹭引擎的首席架构师. 今天给大家分享的题目是<重度H5游戏性能优化技巧>.之所以决 ...

  7. 【Egret优化分享】白鹭引擎王泽:重度H5游戏性能优化技巧

    本文转自:https://mp.weixin.qq.com/s/GIzXA51D7_hMqajCRuJE2g 9月15日,无惧17级台风"山竹",320名开发者齐聚广州贝塔空间共同 ...

  8. H5打包成app源码

    H5打包成app源码 H5如何打包成app,这个不难,只要在源码里修改一下地址就可以了. 修改MainActivity文件的url更换网址 //加载的网页 private String url =&q ...

  9. cocos creator入门教程(十七)—— creator_h5打包发布优化技巧_android环境搭建与打包发布

    android环境搭建 h5/android 打包发布 h5打包发布 1:引擎模块裁剪,减少引擎体积; 项目----项目设置----模块设置:对于游戏中没有使用到的组件,都不需要勾选.来减少引擎文件的 ...

最新文章

  1. java i o不会的地方_Java I/O 好复杂,傻傻分不清楚,别担心,我们有线索了。。。...
  2. catboost是什么?相对于xgboost以及lightgbm有什么优势?如何使用randomSearchCV和Catboost进行组合获取最优参数组合?
  3. 小米手环无法模拟门卡_MIUI12轻体验:关于模拟门禁卡,你想知道的都在这里
  4. 解决xp登陆域很慢的方法
  5. 并行执行 Job - 每天5分钟玩转 Docker 容器技术(134)
  6. 启明星辰集团:文化筑底,战略引领信息安全之路
  7. 研究人员:Intel 的 VISA 漏洞可访问计算机中所有数据
  8. C#小技巧,持续更新中....
  9. java实现ssdp协议_SSDP协议最简单的Reactor / Netty实现是什么?
  10. python xlwt_python – 使用xlwt写入现有工作簿
  11. 日本京瓷株式会社会长-稻盛和夫寄语汇总
  12. Axure8元件库.rplib(Iaxure)
  13. 软件架构模式 mark Richards - 读后总结 1 - 分层架构
  14. 如果你还不懂区块链那就out了(三)--区块链3.0的优秀解决方案:Hyperledger fabric
  15. 图书管理系统之带验证码登录界面
  16. usb gadget printer驱动分析
  17. bootstrapvalidat cdn_bootstrapValidator插件下载、官网地址、免费CDN加速地址等
  18. Hbase设计数据热点问题
  19. Master横扫围棋界 AI智能风暴来袭
  20. php去除字符串空格

热门文章

  1. 【python】 定义一个Person类,它包含数据成员age, name和gender。从Person中派生一个类Employee,在新类中添加一个数据成员,存储个人的number.等等
  2. 迅为龙芯2K1000开发板编译Linux内核
  3. 【AIS学习】11:AIS消息结构
  4. 很棒的一篇职业规划文章(1)
  5. 计算机二级python备考资料_2019年全国计算机等级考试二级Python备考资料和题库下载(...
  6. 91.(cesium之家)cesium火箭发射模拟
  7. Android的动画:ScaleAnimation,AlphaAnimation,RotateAnimation,TranslateAnimation,Code,DrawableAnimation
  8. 2021最新小说泛目录
  9. Clojure 学习入门(6)—— 函数定义
  10. php epp 协议,EPP协议简介