uinapp小程序自定义底部tabbar闪动白屏去除

大家好,我小白,最近有朋友群里说这个小程序自定义底部tab初次点击会白屏问我能不能解决,实际上这个问题困扰大家好几年了,一直无所谓毕竟也没啥影响哈哈。。。网上检索方案无非就是两种。

①使用原生tabbar

②tabbar为主页,其他的页面作为组件存在(页面非常复杂,管理起来麻烦,性能差)

这都不是咱们的想要的结果。。。。

首先说下底部自定义tabbar为什么会闪屏晃动白屏?

因为自定义底部tabbar作为组件存在,每个页面初次点击都会重新加载渲染一遍组件,特别是有些比我还菜的小白,没做缓存优化,每个tabbar页面都还需从接口从新请求一遍tabbar数据,算上网络请求时间闪屏更严重了。

1️⃣那咱们解决的第一步就是,缓存优化。

uni.setStorageSync()和vuex都可以,只要首页加载过了,其他页面直接复用数据能极大程度减少闪屏晃动的时间,vuex基于内存效果更好,使vuex把自定义tabbar数据放在计算属性,基本上小程序和app几乎看不到闪屏了。h5有轻微闪动,不仔细听察觉不到。这样基本无感知了。。。

如果要实时更新最新图标样式,做好版本号管理即可。

那有没有办法彻底去除一丝丝轻微闪动?

有!有的老板!在后面细说!

2️⃣提升每个页面内tabbar组件渲染优先级

看着好像页面同时渲染的,实际上还是有细微差距的,尽管可能毫秒级别,咱们能提升一点是一点,template内元素或者组件同权重前提下,是从上至下渲染。
所以最好把tabbar组件放在模板内 顶部

全局变量定义前(最先执行)

全局变量定义后 初始值

export default 外部最后一行(早于生命周期)

data 执行(初始化数据)

onLoad 触发(页面加载,可修改数据)

onShow 触发(页面显示)

【computed】

计算属性首次求值(模板依赖的计算属性就绪,自定义tab组件的依赖数据也在此阶段完成求值)

↓ 【此时开始渲染流程】

↓ - 解析template模板(严格从上至下解析,自定义tab组件放在模板顶部会被优先解析)

↓ - 创建虚拟DOM(按模板解析顺序生成对应的虚拟节点树)

↓ - 挂载真实DOM到页面(虚拟DOM转化为真实DOM并插入页面文档流)

↓ - 视觉上能看到页面元素/内容(真实DOM渲染到视图层,用户可感知)

↓ 【渲染完成后】

mounted 触发(DOM已挂载完成,可操作DOM)

3️⃣自定义底部tab页面的路径要添加到原生底部tab内。

我们只是把原生的底部tab隐藏了而已,做了个自定义图标和样式底部tab,并且实现实时在线更新图标和样式罢了。实际上页面跳转也使用原生的页面跳转方式。

我发现有的应用,直接在普通非tabbar页面加个自定义定底部tab,每次点击都都触发从左往右的换页动画😂🤣😓这不瞎搞嘛。。。。

邪修大法,道友可以试试看。

①首先每个底部tab页内加载逻辑,让其初次进入不渲染页面内容,不执行接口逻辑,只渲染tab组件。vuex做好每个tab页是否为初次点击的状态标记。确保每个页面非初次进入,才执行接口请求和页面渲染。额外加一个简单判断而已,对性能无影响。(这步可选,适合追求完美的人体验更好,也可以省略)

②用户初次打开应用,App.vue中给他来个全屏加载动画,禁止他操作

③ App.vue中遍历点击所有tab页面

 async preloadAllTabs() { uni.showLoading({ title: '正在加载...', mask: true }); try { const tabPaths = [ '/pages/index/index', '/pages/goods_cate/goods_cate', '/pages/order_addcart/order_addcart', '/pages/user/index' ]; // 邪修替客户快速点击所有底部tab页面 for (const path of tabPaths) { await new Promise(resolve => { uni.switchTab({ url: path, success: () => { setTimeout(resolve, 50); }, fail: (err) => { console.warn(`预加载${path}失败:`, err); resolve(); } }); }); } // 返回首页 await new Promise(resolve => { uni.switchTab({ url: '/pages/index/index', success: resolve, fail: resolve }); }); } catch (err) { console.error('tab预加载异常:', err); } finally { uni.hideLoading(); console.log('点完收工!'); //后续可选,使用vuex标记tab页是否初次加载 } },

至此邪功大成,已彻底去除自定义tab闪屏烦恼

追求完美的可以放在首页内触发,再自定义个更好看的加载动画。也就是最多耽误客户300ms时间提前帮客户点完所有页面,基本无感知的。

Read more

如何将代码轻松上传到 Gitee?Git 使用全攻略!

如何将代码轻松上传到 Gitee?Git 使用全攻略!

在开发过程中,代码托管平台是每个开发者的必备工具。无论你是刚接触版本控制的新手,还是已经拥有多项目管理经验的程序员,掌握如何将代码上传到 Gitee 或 GitHub 都是必不可少的技能。 今天,我将带你一步步了解 如何将项目上传到 Gitee,并且在过程中顺便深入解析 Git、Gitee 和 GitHub 的关系,让你在使用这些工具时不再迷茫。 一、准备工作:Git 基础知识 首先,我们需要知道 Git 是什么,它是如何与 Gitee 和 GitHub 配合使用的。 1.1 什么是 Git? Git 是一款开源的分布式版本控制工具,旨在帮助程序员管理代码历史、团队协作以及代码合并。无论你是一个人开发项目,还是和团队一起协作,Git 都能帮助你: * 跟踪代码的更改 * 回退到任何历史版本 * 合并团队成员的修改 1.2

By Ne0inhk
开源C2框架AdaptixC2安装与使用教程

开源C2框架AdaptixC2安装与使用教程

⚠️ 重要声明 法律与道德准则 1. 授权测试原则:本文所述技术仅可在拥有明确书面授权且完全控制的网络环境中使用。 2. 严禁违法行为:未经授权对任何计算机系统进行扫描、渗透或控制均属违法行为。 3. 推荐使用场景:建议仅在隔离的实验室环境中用于安全研究与教学目的。 4. 责任界定:任何技术滥用行为所产生的全部法律及道德后果,均由使用者自行承担。 软件安全规范 * 源码安全原则:为保障透明与安全,本文不提供任何预编译二进制文件。所有程序必须从项目官方源码仓库自行编译。 * 官方获取渠道:请仅从项目GitHub官方仓库获取源码。 * 第三方风险警示:任何非官方渠道提供的"免编译版"、“一键安装包”、"破解版"均可能被植入恶意代码,请勿下载使用。 文章目录 * ⚠️ 重要声明 * 法律与道德准则 * 软件安全规范 * 一、安装与配置 * 1、下载项目源代码 * 2、安装与编译 * 方法一:使用官方脚本进行安装 * 方法二:手动安装 * 1.安装依赖

By Ne0inhk

GitHub 44K 星!Skills:开源「智能体技能库」+ 手搓创建技能

2026年,AI的战场已从“回答问题”转向“完成任务”。 你是否想过: ✅ 能否让AI自动分析GitHub仓库并提交PR? ✅ 能否让AI读完一篇论文后,自动生成PPT并邮件发送给团队? ✅ 能否让AI在发现线上Bug后,自动回滚版本并通知运维? 这些不再是幻想—— 一个名为 Skills 的开源项目,正在让AI智能体(Agent)真正拥有“做事”的能力 。 此仓库包含Anthropic为Claude实现的技能。 截至2026年1月,该项目已在GitHub收获 44,000+ Stars ,被Hugging Face、LangChain、LlamaIndex等主流框架深度集成,被誉为 “AI智能体的操作系统级技能库” 。 今天,我们就来揭开它的神秘面纱。  什么是Skills? Skills (全名: )是一个 开放、模块化、可组合的智能体技能仓库 。 它的核心理念很简单: “不要让AI从零开始学做事,而是给它一套标准化的‘技能工具箱’。” 就像人类通过学习“开车”“做饭”“写代码”来完成复杂任务,

By Ne0inhk

git2.53.0安装步骤

⭐ 一、安装(核心选项直接抄) 安装界面选择建议核心原因组件选择✅ 保留默认勾选,取消 Check daily for updates自动更新没必要,核心功能够用默认编辑器✅ 选 Use Visual Studio Code as Git's default editor避免 Vim 学习成本,和开发工具统一初始分支名✅ 选 Override,分支名填 main适配 GitHub/Gitee 主流规范PATH 配置✅ 选 Git from the command line and also from 3rd-party software多终端可用(Git Bash/CMD/VSCode)SSH 客户端✅

By Ne0inhk