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

AI入门系列:AI新手必看:人工智能发展历程与现状分析

AI入门系列:AI新手必看:人工智能发展历程与现状分析

写在前面:为什么AI发展历史很重要? 记得刚开始学习AI的时候,我总觉得历史这种东西很枯燥,不如直接学习最新的技术来得实在。但后来我发现,了解AI的发展历程,就像了解一个人的成长经历一样,能帮助我们更好地理解现在的AI是如何走到今天的,也能帮助我们预测未来可能的发展方向。 有一次,我和一位从事AI研究多年的教授聊天,他告诉我:"现在的学生总想直接学习深度学习,但如果不了解符号主义AI的兴衰,就无法理解为什么深度学习会成功,也无法预见它可能面临的挑战。"这句话让我深受启发。 所以,在这篇文章中,我想和大家一起回顾一下AI的发展历程,不是为了考试背诵那些枯燥的年代和事件,而是为了让我们能够站在历史的高度,更好地理解现在的AI技术,以及它在我们生活中的应用。 人工智能的诞生:一个充满想象力的开始 说起AI的诞生,我们不得不提到1956年的达特茅斯会议。这次会议被公认为人工智能学科的诞生标志。 想象一下那个场景:一群来自不同领域的顶尖科学家,包括约翰·麦卡锡、马文·明斯基、克劳德·香农等,聚集在一起,讨论着一个看似疯狂的问题:"机器能思考吗?"他们相信,只要给机器输入足够多的规则

最新龙虾AI(OpenClaw v2026.3.8)全平台部署教程|零报错、高安全,新手也能10分钟上手

最近OpenClaw龙虾AI爆火,作为开源可私有化部署的AI智能体,它区别于普通聊天AI,能“动手”完成跨应用自动化任务——整理微信消息、定时提醒、浏览器自动化等,实用性拉满。但不少开发者反馈,网上教程多为旧版本,且忽略了工信部最新安全预警,部署时频繁出现权限报错、闪退、盗版捆绑等问题。 本文基于2026年3月10日官方最新稳定版(v2026.3.8),结合Windows、macOS、Linux、手机端(安卓/鸿蒙)四大平台,详细拆解“新手一键部署”“进阶自定义部署”“Ollama本地模型对接”全流程,同步规避工信部预警提到的安全风险,全程复制命令即可操作,新手也能零失败完成部署。 一、部署前必看:核心认知+环境准备(避坑第一步) 1.1 龙虾AI核心定位(必懂) OpenClaw龙虾AI是开源免费的本地AI执行网关,核心优势是“数据本地存储、全平台兼容、自动化执行”,无需上传数据到第三方平台,

告别SQL恐惧症:我用飞算JavaAI的SQL Chat,把数据库变成了“聊天室”

告别SQL恐惧症:我用飞算JavaAI的SQL Chat,把数据库变成了“聊天室”

摘要 对于许多开发者而言,与数据库打交道意味着繁琐的语法记忆、复杂的联表查询以及令人头疼的性能优化。你是否曾希望,能用说人话的方式直接操作数据库?飞算JavaAI专业版的SQL Chat功能,正是这样一个革命性的工具。本文将分享我如何将它变为一个永不疲倦的“数据库专家同事”,用自然语言轻松搞定一切数据需求。 一、 痛点切入:我们与SQL的“爱恨纠葛” 还记得那次惨痛的经历吗?新接手一个庞大项目,急需从几十张表中查询一份用户行为报表。你对着模糊的需求文档,在Navicat或DBeaver中艰难地敲打着JOIN、WHERE和GROUP BY,一遍遍执行、调试,生怕一个疏忽就拉垮了线上数据库。这不仅是技能的考验,更是对耐心和细心程度的终极折磨。 尤其是面对以下场景,无力感尤甚: * 复杂查询:涉及多表关联、嵌套子查询、窗口函数,SQL语句长得像一篇论文。 * 性能优化:一条SQL跑起来慢如蜗牛,却不知从何下手添加索引或改写。 * 老项目溯源:面对命名随意的表和字段,理解业务逻辑如同破译密码。 我们需要的不是一个更漂亮的SQL客户端,而是一个能理解我们意图的“智能数据库搭档”

AI 编程助手价格与体验对比:Claude Code vs 国产替代(通义灵码 / 文心快码 / MarsCode / 腾讯系)

目录 * 1. 为什么要做这篇对比:开发效率正在被“定价”重塑 * 2. Claude Code 要不要付费?费用结构如何理解 * 3. 国产替代有哪些:定位差异与适用人群 * 4. 对比表格:价格、能力、生态、适配场景一张看懂 * 5. 实战:同一组任务对比补全 / 重构 / 测试 / 审查 * 6. 选型建议:按场景快速决策 * 7. 总结:把“工作流收益”放进预算里 1. 为什么要做这篇对比:开发效率正在被“定价”重塑 AI 编程助手已经从“写几行代码的尝鲜工具”,变成了能够影响交付节奏、代码质量与团队协作方式的生产力组件。Claude Code 代表了国际一线模型能力与工程体验;国产阵营(通义灵码、文心快码、