搜索体验
把等待拆成可以感知的阶段
插件按 3 个一组、频道按 6 个一组拆批,优先让首批结果先回来,再继续补全后续来源。
PanPanSo 技术展示
这页不再只回答“PanPanSo 是什么”,而是集中说明我把它从可用状态继续往上打磨时,做过哪些优化、 补过哪些体验细节,以及为什么要这样设计。 重点会放在首屏调度、结果归并、状态补全、工程结构和隐藏彩蛋,让技术展示页既能说明系统能力,也能体现实现取舍。
01 · 这次补了什么
目标不是单纯介绍架构,而是让人能看出这个项目在性能感知、状态完整性、工程结构和趣味表达上都做过细化处理。
搜索体验
插件按 3 个一组、频道按 6 个一组拆批,优先让首批结果先回来,再继续补全后续来源。
状态完整
搜索中、补搜中、空态、异常态和复制反馈都补齐,避免页面只在理想场景下成立。
工程结构
前端只面对同一种接口和结果结构,后续继续接来源时不需要重写整套展示逻辑。
彩蛋系统
彩蛋通过关键词触发背景、跳转和主题切换,不干扰主流程,也能随时恢复默认状态。
这一页想强调的不是“功能越来越多”,而是“搜索体验越来越完整”。 也就是让用户更早看到结果、让边界场景更稳、让结构更便于继续迭代,同时保留少量克制的记忆点。
02 · 核心优化
这些优化既影响首屏感知,也决定后续接来源、调策略和继续维护时会不会越来越乱。
调度
快源先回、慢源后补,避免为了等齐所有来源把首屏体验一起拖慢。
分层
Telegram 来源按热池和冷池拆开处理,先保证首批命中率,再在结果不足时继续补搜。
统一
不同来源最后都会被归并到统一平台结构里,前端渲染层只需要处理一套结果模型。
兜底
缓存减少重复搜索,超时避免慢源拖挂体验,请求取消则避免连续搜索时旧结果污染新结果。
插件来源
3
统一接口接入的站点数
热池频道
31
优先参与首屏返回
冷池频道
20
结果不足时继续补搜
隐藏入口
9
关键词彩蛋 + 日期口令
路由
结果页会把关键词同步到 q 参数,路由变化时还能自动重新搜索,方便直接分享特定查询。
交互
支持快捷键聚焦、历史记录回填和趋势词兜底,移动端还额外处理了输入焦点和按钮触控区域。
排序
结果会综合 4K、原盘、标签密度和关键词命中位置加权,让更像目标资源的条目优先靠前。
03 · 体验细节
页面不只是把结果渲染出来,我还把搜索前、搜索中、搜索后的细节都补齐了,避免体验只在理想场景下成立。
默认聚焦输入框,支持 / 聚焦、ESC 清空和趋势词兜底;解锁后还会切成模块入口。
状态栏会实时显示站点和频道进度,首批结果一旦回来就立即展示,不等慢源全部完成。
支持按平台筛选、复制链接、尝试拉起 App,并把关键词同步到 URL,方便回访和分享。
关键词长度限制、请求取消、超时分类和结果不足时的冷池补搜都做了兜底。
输入框聚焦、按钮触控区域和安全区位置做了兼容,尽量避免 iOS 上的误触和缩放问题。
主题切换、状态提示和背景效果都尽量做轻,让页面有记忆点,但不盖过主流程内容。
04 · 彩蛋系统
它们不是那种跳出来打断你的大彩蛋,而是更像“如果你刚好多按了一下,我就顺手给你一点回应”。
怎么触发
试几个词,页面会有点小反应
- 搜“黑客” -> 背景开始下代码雨
- 搜“蜘蛛侠” -> 红色氛围直接拉满
- 搜“怪奇物语” -> 你会知道什么叫逆世界
- 搜“神探夏洛克” -> 页面突然变得有点英伦
- 搜“圣诞” -> 这次不是背景,是直接进节目
- 搜“game”或“游戏” -> 好,知道你是来摸鱼的别慌
顺手再告诉你几个小门
- 输入 0601 -> 会解锁一个额外入口
- 输入“恢复”或“reset” -> 一键回到正常模式
- 彩蛋触发之后 -> 还能切成剧院模式单独看
- 如果你开着控制台 -> 还会看到我留的一句话我不想把这个页面做成“到处都是机关”的那种炫技现场,所以大多数彩蛋都只是轻轻冒个头。 真想回到正常模式也很简单,输一句“恢复”就行;如果你反而想认真看彩蛋,还可以切去剧院模式慢慢看。
05 · 项目复盘
通过分批调度和首屏优先策略,让用户更早进入“已经有结果”的感知状态。
加载、补搜、空态、错误、复制反馈和移动端输入体验都做了完整处理。
彩蛋、剧院模式和隐藏入口保持克制存在,让项目除了能用之外还有自己的个性。