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

终极指南:5步实现Whisper GPU加速10倍性能提升

终极指南:5步实现Whisper GPU加速10倍性能提升 【免费下载链接】whisperopenai/whisper: 是一个用于实现语音识别和语音合成的 JavaScript 库。适合在需要进行语音识别和语音合成的网页中使用。特点是提供了一种简单、易用的 API,支持多种语音识别和语音合成引擎,并且能够自定义语音识别和语音合成的行为。 项目地址: https://gitcode.com/GitHub_Trending/whisp/whisper 还在为语音识别的漫长等待而烦恼吗?当你面对1小时的会议录音时,传统CPU处理需要15分钟才能完成转录,而通过Whisper的CUDA GPU加速技术,这一时间可以缩短到仅90秒!本文将为你揭示如何通过5个简单步骤,让你的语音识别效率实现10倍跃升。 第一步:环境准备与快速配置 系统要求检查 在开始GPU加速之旅前,首先确认你的系统满足基本要求: * NVIDIA GPU:Compute Capability ≥ 3.5 * CUDA Toolkit:11.3及以上版本 * PyTorch:1.10+版本支持

【GitHub Copilot】Figma MCP还原设计稿生成前端代码

【GitHub Copilot】Figma MCP还原设计稿生成前端代码

这里写自定义目录标题 * Step1:让AI给你配置MCP * Step2:替换成自己的Figma密钥 * Step3:如何使用 Cursor+Figma MCP的教程已经很多了,由于我所在的公司采购的是GitHub Copilot,我研究了一下直接在vscode里利用GitHub Copilot接入Figma MCP进行设计稿还原代码,大获成功,这里分享我的步骤,希望能帮到你。 Step1:让AI给你配置MCP 在vscode中打开你的项目(我的例子是一个微信小程序),呼出github copilot对话框,模式选择Agent,模型建议Claude 3.7 Sonnet,提问: https://github.com/GLips/Figma-Context-MCP 如何配置能让你在vscode里使用这个mcp 之后跟着提示狂点下一步即可完成配置,如果有什么需要装的vscode插件它会自动帮你装,甚至自动生成了配置说明文档。 由于不能保证AI每次生成的答案都一致,这里附上我的运行结果作为参考,可以看到它在项目文件夹最外层建了一个.vscode文件夹,在sett

Qwen3-VL + LLama-Factory进行针对Grounding任务LoRA微调

Qwen3-VL + LLama-Factory进行针对Grounding任务LoRA微调

0.官方GitHub网站: GitHub - QwenLM/Qwen3-VL:Qwen3-VL 是由阿里云 Qwen 团队开发的多模态大语言模型系列。https://github.com/QwenLM/Qwen3-VL 空间感知能力大幅提升:2D grounding 从绝对坐标变为相对坐标,支持判断物体方位、视角变化、遮挡关系,能实现 3D grounding,为复杂场景下的空间推理和具身场景打下基础。 OCR 支持更多语言及复杂场景:支持的中英外的语言从 10 种扩展到 32 种,覆盖更多国家和地区;在复杂光线、模糊、倾斜等实拍挑战性场景下表现更稳定;对生僻字、古籍字、专业术语的识别准确率也显著提升;超长文档理解和精细结构还原能力进一步提升。 一是采用 MRoPE-Interleave,原始MRoPE将特征维度按照时间(t)、高度(h)和宽度(w)的顺序分块划分,

【AIGC】如何获取ChatGPT外部GPTs应用的提示词Prompt指令和知识库文件

【AIGC】如何获取ChatGPT外部GPTs应用的提示词Prompt指令和知识库文件

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]本文专栏: AIGC |GPTs应用实例 文章目录 * 💯前言 * 💯获取GPTs的提示词Prompt指令 * 💯获取GPTs的知识库文件 * 💯小结 * 关于GPTs指令如何在ChatGPT上使用,请看这篇文章: 【AIGC】如何在ChatGPT中制作个性化GPTs应用详解     https://blog.ZEEKLOG.net/2201_75539691?type=blog * 关于如何使用国内AI工具复现类似GPTs效果,请看这篇文章: 【AIGC】国内AI工具复现GPTs效果详解     https://blog.ZEEKLOG.net/2201_75539691?type=blog 💯前言 随着 ChatGPT 和其他 AI 应用的不断发展,越来越多的外部 GPTs 被集成进来,以增强其功能和适应多样化的用户需求。这些外部 GPTs 并不仅仅是通用的 聊天助手,而是专为特定场景、