当前位置: 首页 > article >正文

第 28 课:任务页排序偏好与默认工作视图

第 28 课任务页排序偏好与默认工作视图这一课我们继续沿着任务管理页主线往下走把它再往真实后台系统推进一步让用户不只是临时切换排序还能把当前排序保存成“默认工作视图”。这件事看起来只是多了一个“记住排序”的功能但它背后其实牵涉一个很关键的前端设计问题当前页面状态应该怎么和 URL 协同个人使用偏好又应该放在哪里当两者同时存在时谁的优先级更高这一课一句话在做什么这一课我们完成了 6 件事给任务页增加“默认排序偏好”本地持久化。让用户可以把“当前排序”保存成默认工作视图。让用户可以一键恢复系统默认排序。让任务页在 URL 没有显式sort参数时自动恢复用户自己的默认排序。继续保持“真实当前视图”同步到 URL。补上单元测试、查询同步测试、E2E 和文档。这一课最重要的设计结论这一课最重要的不是按钮本身而是下面这条优先级规则显式 URL sort localStorage 默认工作视图 系统默认排序为什么这样设计1. URL 里的 sort 是“当前场景状态”如果用户现在访问的是/tasks?sortdueDateDesc那就说明这次访问已经明确指定了当前视图应该怎么排。这种状态的特点是可以刷新恢复可以分享给别人可以被浏览器前进后退保留所以它的优先级应该最高。2. localStorage 里的默认排序是“个人习惯”如果用户平时习惯先看截止日期从远到近那这是一种个人使用偏好。这种状态的特点是更像“我的默认打开方式”不一定要分享给别人更适合保存在本机所以它应该放进localStorage而不是直接当成全局业务状态。3. 系统默认排序只是兜底规则如果URL 没给sort用户也没保存过默认工作视图这时候才回退到系统默认排序也就是default这一课在useTasksPage里做了什么文件src/composables/useTasksPage.ts这一课的核心仍然放在任务页组合式函数里因为当前排序是页面状态默认排序偏好也是页面级用户偏好它们都不适合散落到多个组件里各自管理新增了默认排序持久化能力这一课新增了本地存储 keyTASK_TABLE_DEFAULT_SORT_STORAGE_KEY同时补了几类辅助函数排序合法性判断排序标准化函数默认排序读取函数默认排序写回函数排序值转中文文案函数这说明我们已经开始在项目里重复练一种很重要的工程模式读取本地偏好 - 做合法性清理 - 写回标准化结果 - 暴露给页面使用把“当前排序”和“默认排序偏好”拆成了两份状态这是这一课最关键的一点。现在任务页里有两份排序相关状态sortOptiondefaultSortOption它们不是一回事。sortOption表示当前这一次页面访问实际使用的排序方式defaultSortOption表示用户希望以后直接打开任务页时优先使用的默认排序这两份状态拆开以后逻辑会清晰很多你可以临时切换当前排序也可以决定要不要把它保存成默认工作视图还可以恢复系统默认而不会把“当前场景状态”和“个人长期偏好”混成一份状态。新增了几个更有业务语义的计算状态例如currentSortOptionLabeldefaultSortOptionLabelisCurrentSortSavedAsDefaulthasCustomizedDefaultSort这些状态的意义不是“为了少写几行模板”而是让界面层更容易表达业务语义让消息提示更清楚让按钮显隐和禁用规则更直接新增了两个真正有业务意图的动作函数例如saveCurrentSortAsDefaultView()resetDefaultSortPreference()这两个函数很值得你注意。因为它们不再是简单的“修改某个 ref”而是在表达明确的业务动作把当前排序保存成默认工作视图恢复系统默认排序这就是组合式函数越来越像“页面领域层”的表现。这一课在 URL 同步层做了什么文件src/composables/useTaskFilterQuerySync.ts这一课最关键的升级是sort 的默认回退值不再被硬编码成 default。现在它会变成先读 URL 里的sort如果 URL 没有合法sort就回退到defaultSortOption这一步非常重要因为它真正把URL 当前场景状态localStorage 默认工作视图接到一起了。为什么 URL 里最终还是要写回 sort这里很多初学者会疑惑既然默认排序来自 localStorage为什么还要把它重新同步到 URL答案是因为一旦它已经成为“当前真实页面视图”那它就不再只是一个隐形偏好而是当前页面真正生效的状态所以它应该被同步进 URL这样才具备刷新恢复链接分享浏览器历史记录一致性这也是这一课最值得建立的心智模型之一localStorage 可以决定初始值但当前真实页面状态仍然应该由 URL 明确表达。这一课在界面层做了什么文件src/components/tasks/TaskFilterBar.vuesrc/views/TasksView.vue这一课在排序下拉框下面补了一块“默认工作视图”说明区。它做了三件事展示当前默认排序是什么。告诉你当前排序是否已经保存成默认工作视图。提供“设为默认视图”和“恢复系统默认”按钮。这里要重点理解一个分层原则TaskFilterBar只负责展示和抛出事件TasksView负责消息提示useTasksPage负责真正的状态和持久化逻辑这和我们前面反复练习的分层方式是一致的。这一课补了哪些测试1.useTasksPage.spec.ts新增覆盖默认排序偏好恢复非法默认排序清理保存默认工作视图恢复系统默认排序当前排序状态与默认偏好状态分离2.useTaskFilterQuerySync.spec.ts新增覆盖URL 没有sort时使用本地默认排序显式sort查询参数覆盖本地默认偏好非法sort查询参数回退到本地默认排序这一层测试非常关键因为这一课最容易出问题的地方其实不是按钮而是URL 和本地偏好的优先级3.e2e/app.spec.ts新增覆盖先切换排序再保存默认工作视图重新进入不带查询参数的/tasks断言默认排序被自动恢复再恢复系统默认再次进入干净任务页地址断言页面回到系统默认顺序这能验证真正浏览器里最完整的一条用户路径。这一课改了哪些文件src/composables/useTasksPage.tssrc/composables/useTaskFilterQuerySync.tssrc/components/tasks/TaskFilterBar.vuesrc/views/TasksView.vuesrc/composables/__tests__/useTasksPage.spec.tssrc/composables/__tests__/useTaskFilterQuerySync.spec.tse2e/pages/TasksPage.tse2e/app.spec.tsdocs/28-task-sort-preference-and-default-view.mddocs/README.md这一课最值得你真正学会什么如果你只记住“多了一个默认排序按钮”那还不够。你更应该记住下面这 6 点当前页面状态和个人默认偏好往往不是同一份状态。URL 更适合表达当前真实场景本地存储更适合表达个人长期习惯。当两者同时存在时一定要提前定义清楚优先级。localStorage 里的值不能直接信任读取后一定要标准化。一个本地偏好一旦真正生效成当前页面视图就应该同步回 URL。这种“状态分层 优先级规则”的能力一定要同时用单元测试和 E2E 验证。这一课的验证结果这一课相关改动完成后应至少通过npm run test:unit -- --runnpm run type-checknpm run lintnpm run test:e2e -- --projectchromium

相关文章:

第 28 课:任务页排序偏好与默认工作视图

第 28 课:任务页排序偏好与默认工作视图 这一课,我们继续沿着任务管理页主线往下走,把它再往真实后台系统推进一步: 让用户不只是临时切换排序,还能把当前排序保存成“默认工作视图”。 这件事看起来只是多了一个“记住…...

第 27 课:任务页分页大小记忆与用户偏好

第 27 课:任务页分页大小记忆与用户偏好 这一课,我们继续沿着任务管理主线往下走,补上另一个非常真实的后台系统能力: 让用户自己决定“每页显示多少条数据”,并把这份偏好记住。 很多初学者会觉得: 分页不…...

炉石传说高级插件开发实战指南:构建强大游戏增强工具

炉石传说高级插件开发实战指南:构建强大游戏增强工具 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是基于BepInEx框架的炉石传说多功能增强插件,为技术爱好者…...

利用StructBERT自动生成测试用例:基于需求文档的语义匹配

利用StructBERT自动生成测试用例:基于需求文档的语义匹配 1. 引言 你有没有过这样的经历?面对一份几十页的新需求文档,测试工程师需要从头开始,一个字一个字地构思测试用例。这个过程不仅耗时耗力,还特别容易遗漏一些…...

ollama + QwQ-32B实战落地:教育智能助教、CTF解题助手、专利分析工具

ollama QwQ-32B实战落地:教育智能助教、CTF解题助手、专利分析工具 最近在折腾大模型本地部署,发现了一个挺有意思的模型——QwQ-32B。这名字听起来有点可爱,但能力可不简单。它属于Qwen系列,主打的是推理能力,号称在…...

【企业级AI编码治理黄金标准】:基于127个真实项目数据,揭示版本不一致导致交付延期的3.8倍概率提升

第一章:智能代码生成代码版本对比 2026奇点智能技术大会(https://ml-summit.org) 随着大语言模型在软件开发流程中的深度集成,智能代码生成工具已从辅助补全演进为具备上下文感知、多轮迭代与版本协同能力的工程级组件。不同代际的代码生成系统在输出一…...

CosyVoice跨语言克隆实战:当ttsfrd吃掉你的英文文本时该怎么办?

CosyVoice跨语言克隆实战:当ttsfrd吃掉你的英文文本时该怎么办? 在语音合成领域,跨语言克隆一直是个令人头疼的问题。最近在使用CosyVoice进行中英文混合语音合成时,我发现一个奇怪的现象:当使用ttsfrd作为文本规范化工…...

智能代码生成兼容性验证实战手册(2024企业级落地白皮书)

第一章:智能代码生成兼容性验证的定义与价值边界 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成兼容性验证,是指在模型输出代码后,系统性评估其在目标运行环境(如特定语言版本、依赖库约束、安全策略、构建工具链&a…...

幻灯片制作工具GiliSoft SlideShow Maker

链接: https://pan.baidu.com/s/1EUYCTUcMfqxqZQf_TbcMMg 提取码: dc1a GiliSoft SlideShow Maker原名字GiliSoft SlideShow Movie Creator是易于使用但功能强大的照片到视频转换器。借助SlideShow Movie Creator,您可以将您的照片与音乐和2D / 3D过渡效果结合在一…...

**发散创新:基于Python的连续学习模型实战与优化策略**在现代机器学习工程

发散创新:基于Python的连续学习模型实战与优化策略 在现代机器学习工程中,连续学习(Continual Learning) 已成为构建具备长期适应能力系统的必要技术路径。传统训练方式一旦遇到新任务就会“遗忘”旧知识——这正是灾难性遗忘问题…...

手把手教你用lite-avatar形象库:快速为数字人项目找到完美“脸”

手把手教你用lite-avatar形象库:快速为数字人项目找到完美"脸" 1. 为什么需要lite-avatar形象库? 开发数字人项目时,最让人头疼的环节之一就是寻找合适的虚拟形象。传统方案要么需要从零开始训练模型,耗费大量时间和算…...

Pi0 Robot Control Center保姆级教程:三视角图像预处理与归一化方法

Pi0 Robot Control Center保姆级教程:三视角图像预处理与归一化方法 1. 为什么图像预处理是机器人控制的关键一步 你可能已经试过直接把手机拍的三张照片扔进Pi0 Robot Control Center,结果发现模型预测的动作完全不对劲——机械臂突然往天花板方向猛抬…...

SeqGPT-560M实操手册:审计底稿中‘被审计单位’‘问题描述’‘整改建议’三段式抽取

SeqGPT-560M实操手册:审计底稿中‘被审计单位’‘问题描述’‘整改建议’三段式抽取 1. 项目简介 SeqGPT-560M是一个专门为企业级信息抽取需求定制开发的高性能AI系统。与常见的聊天对话模型不同,这个系统专注于一件事:从复杂的非结构化文本…...

GLM-4.7-Flash镜像详解:预加载59GB模型,支持4096 tokens上下文

GLM-4.7-Flash镜像详解:预加载59GB模型,支持4096 tokens上下文 1. 模型概述 1.1 GLM-4.7-Flash核心特性 GLM-4.7-Flash是智谱AI推出的新一代开源大语言模型,采用创新的MoE(混合专家)架构设计。作为当前最强的开源中…...

Qwen3.5-9B-AWQ-4bit Visio图表智能生成:根据文本描述自动创建流程图与架构图

Qwen3.5-9B-AWQ-4bit Visio图表智能生成:根据文本描述自动创建流程图与架构图 1. 效果亮点预览 想象一下,当你需要快速绘制一个系统架构图或业务流程流程图时,只需输入一段文字描述,就能在几秒钟内获得结构清晰的图表草稿。这正…...

如何为Unity游戏添加实时翻译:XUnity.AutoTranslator终极指南

如何为Unity游戏添加实时翻译:XUnity.AutoTranslator终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而错过精彩的Unity游戏?XUnity.AutoTranslato…...

StructBERT实战:用语义相似度工具构建智能客服问答匹配系统

StructBERT实战:用语义相似度工具构建智能客服问答匹配系统 1. 项目背景与需求分析 在智能客服系统开发中,准确理解用户问题并匹配到预设答案是最核心的挑战。传统的关键词匹配方法存在明显局限: 无法处理同义表达:"怎么退…...

基于SenseVoice-Small的会议语音实时转写系统开发

基于SenseVoice-Small的会议语音实时转写系统开发 企业会议效率低、纪要整理耗时耗力?试试用AI语音转写技术让会议记录自动化,实时生成精准字幕和结构化纪要。 1. 会议语音转写的实际痛点 日常工作中,会议是最常见的沟通场景,但会…...

STM32F103RBT6上,用CubeMX和HAL库搞定FreeModbus RTU从站(附完整代码)

STM32F103RBT6实现FreeModbus RTU从站的工业级开发指南 在工业自动化领域,Modbus协议因其简单可靠的特点成为设备通信的事实标准。本文将深入讲解如何在STM32F103RBT6平台上,通过CubeMX和HAL库构建一个稳定高效的FreeModbus RTU从站系统,并提…...

LeRobot主从臂校准全流程:从端口号设置到远程操作实战

LeRobot主从臂校准全流程:从端口号设置到远程操作实战 在机器人控制领域,主从臂系统因其直观的操作方式和精确的同步性能,正逐渐成为工业自动化、医疗手术和教育研究的热门选择。LeRobot作为一个开源的机器人控制项目,通过其简洁的…...

千问3.5-2B VMware虚拟机开发环境部署全流程

千问3.5-2B VMware虚拟机开发环境部署全流程 1. 引言 如果你是一名习惯使用VMware虚拟机的开发者,想要搭建一个隔离的AI开发测试环境来运行千问3.5-2B模型,这篇教程就是为你准备的。我们将从零开始,一步步指导你完成整个部署流程。 为什么…...

VibeVoice Pro中小企业部署案例:CRM系统嵌入式语音播报模块

VibeVoice Pro中小企业部署案例:CRM系统嵌入式语音播报模块 1. 引言:当CRM系统“开口说话” 想象一下这个场景:一位销售经理正盯着电脑屏幕,快速浏览着密密麻麻的客户跟进列表。他需要筛选出今天需要电话回访的客户,…...

Qwen3语义雷达:无需代码,可视化操作,快速体验AI语义理解

Qwen3语义雷达:无需代码,可视化操作,快速体验AI语义理解 1. 项目概述 Qwen3语义雷达是基于阿里通义千问Qwen3-Embedding-4B大模型构建的智能语义搜索演示服务。这个工具最大的特点就是让普通用户也能轻松体验AI语义理解的能力,完…...

Phi-3-mini-4k-instruct-gguf详细步骤:GGUF模型加载、CUDA推理加速与响应延迟优化

Phi-3-mini-4k-instruct-gguf详细步骤:GGUF模型加载、CUDA推理加速与响应延迟优化 1. 模型简介与环境准备 Phi-3-mini-4k-instruct-gguf是微软推出的轻量级文本生成模型,特别适合问答、文本改写和摘要生成等场景。这个GGUF格式的版本经过优化&#xff…...

Python3.8镜像效果展示:独立环境管理让开发效率翻倍

Python3.8镜像效果展示:独立环境管理让开发效率翻倍 1. 为什么需要Python独立环境 在Python开发中,最令人头疼的问题莫过于"这个项目在我的电脑上能运行,为什么在你的电脑上就不行?"这种问题通常源于不同项目依赖的Py…...

零基础入门AIVideo:输入主题,全自动输出专业长视频,手把手教学

零基础入门AIVideo:输入主题,全自动输出专业长视频,手把手教学 1. 为什么你需要这个AI视频工具 想象一下这样的场景:你有一个绝妙的视频创意,但既不会剪辑也没有专业设备,甚至连脚本都不知道怎么写。传统…...

RexUniNLU RexPrompt技术解析:显式图式指导器如何缓解零样本任务歧义性

RexUniNLU RexPrompt技术解析:显式图式指导器如何缓解零样本任务歧义性 1. 引言:当AI面对“未知”任务时 想象一下,你拿到一个全新的文本处理任务,比如从一段新闻里找出所有“人物”和“组织机构”,但之前没人告诉过…...

人工智能入门:图解Qwen3-ASR-0.6B语音识别模型的工作原理

人工智能入门:图解Qwen3-ASR-0.6B语音识别模型的工作原理 你有没有想过,当你对着手机说“嘿,Siri”或者“小爱同学”时,它到底是怎么听懂你说话的?这背后,就是语音识别技术在默默工作。今天,我…...

Nunchaku FLUX.1-dev 生成作品赏析:建筑与室内设计概念图集

Nunchaku FLUX.1-dev 生成作品赏析:建筑与室内设计概念图集 最近试用了Nunchaku FLUX.1-dev模型来生成一些建筑和室内设计的概念图,结果有点超出我的预期。它好像真的能“听懂”一些关于空间、材质和风格的描述,然后给你画出来。对于建筑师、…...

教育信息化2.0实践:BERT文本分割-中文-通用领域支撑智慧课堂学情分析

教育信息化2.0实践:BERT文本分割-中文-通用领域支撑智慧课堂学情分析 1. 引言:从课堂实录到结构化文本的挑战 想象一下这样的场景:一堂45分钟的智慧课堂结束后,语音转写系统生成了上万字的课堂实录文本。老师想要快速了解学生的…...