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

今日总结 2025-01-17

一、学习目标与完成情况

  1. 登录权限验证:学习并尝试实现登录权限验证的方法,旨在确保服务端接口在调用时能正确验证 token 的存在性和有效性,同时处理 token 过期的情况。
  2. 动态设置导航栏和 tabBar 元素:掌握如何动态设置导航栏标题和 tabBar 角标文字,以增强用户界面的交互性和信息展示的灵活性。
  3. 数据验证与正则表达式:熟悉验证身份证号的正则表达式,提升数据输入的合法性验证能力。
  4. 组件使用:学会使用 uni-swipe-action 侧滑组件,为用户提供便捷的操作交互功能。

二、具体学习内容

(一)权限验证

  • 统一添加 token:在请求拦截器中读取 Pinia 存储的 token 数据,并添加到请求头中。需注意在组件外调用 useXXXStore 时确保 pinia 实例激活,通过将其调用放在 pinia 安装后执行的函数中实现。在【我的】页面进行接口测试,观察不同登录状态下请求头 Authorization 的情况。
  • 处理 token 过期:约定接口返回状态码为 401 表示 token 不存在或过期,在响应拦截器中读取该状态码,以确定是否需要跳转到登录页面,并在登录成功后跳转回原页面。

(二)小程序手机号一键登录

  • 实现思路与步骤:利用小程序 button 的内置操作类型 "getPhoneNumber",通过修改其 open-type 属性为 "getPhoneNumber" 并监听 getphonenumber 事件,获取微信绑定的手机号码数据,同时调用 wx.login 获取临时登录凭据 code,最终调用登录接口获取 token。

(三)我的页面

  • 页面布局
    • 使用多色图标配合 uni-list 组件,使用自定义导航栏。
    • 封装了自定义组件 custom-section,作为全局组件且符合 easycom 组件规范,满足自定义标题、样式及右侧箭头显示的需求。
  • 个人信息与退出登录
    • 退出登录操作主要是将本地存储的 token 清空并跳转到登录页面,使用 uni.reLaunch () 清除页面历史,防止用户返回。

(四)家庭档案

  • 创建分包:为家庭档案功能创建相应的分包,以优化项目结构。
  • 患者列表
    • 在【我的】页面添加链接跳转到患者列表页面。
    • 调用接口获取患者数据并渲染,使用身份证号脱敏正则 /^(.{6}).+(.{4})$/ 进行数据处理,注意最多添加 6 名患者及后续操作限制。
    • 数据获取在 onShow 生命周期进行。
  • 添加患者
    • 以表单形式填写患者信息,包括姓名、身份证号、性别等。
    • 进行表单数据验证,包括使用不同的正则表达式验证中文姓名(^[\u4e00-\u9fa5]{2,5}$)和身份证号(^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$),还涉及性别验证逻辑,根据身份证号第 17 位判断性别并与用户勾选性别对比。
    • 提交数据时,根据接口文档封装接口调用方法,添加成功后跳转到患者列表页面或调用 uni.navigateBack 返回到上一页。
  • 删除患者
    • 使用 uni-swipe-action-item 组件监听用户的点击事件,获取待删除数据的 ID 和索引。
    • 调用接口删除服务器上的患者数据,同时同步删除 Vue 中保存的本地数据。
  • 编辑患者
    • 编辑患者与添加患者使用相同页面,但在地址中包含患者 ID,使用 defineProps 或 onLoad 生命周期方法获取页面地址参数。
    • 利用获取的 ID 查询患者信息,修改页面导航栏标题,并在提交表单数据时根据是否有 ID 判断是添加还是编辑操作,更新数据后调用相应的接口并显示相应的提示信息,最后跳转到患者列表页面。

三、重点难点

(一)重点

  • 权限验证机制:确保请求拦截器和响应拦截器的设置能准确添加和处理 token 信息,保证用户在不同登录状态下的接口调用的安全性和流畅性。
  • 数据验证与提交逻辑:在添加和编辑患者信息时,运用合适的正则表达式对用户输入数据进行准确验证,确保数据合法性,同时根据不同情况(添加 / 编辑)调用相应的接口进行数据处理。
  • 组件交互操作:熟练掌握 uni-swipe-action 组件的使用,为用户提供方便的删除操作交互,同时确保删除操作的逻辑完整性,包括服务器和本地数据的同步删除。

(一)难点

  • 权限验证的细节处理:在不同组件和页面的复杂环境下,如何确保 pinia 实例正确激活和 token 的读取添加操作的准确性,以及在不同接口请求和响应中的拦截处理逻辑的一致性和可靠性,需要对 Pinia 和拦截器有深入理解。
  • 数据验证的复杂逻辑:特别是涉及身份证号的性别判断,需要在验证过程中进行额外的逻辑处理,对身份证号第 17 位的提取和判断逻辑较为复杂,容易出错。
  • 页面状态和数据更新的一致性:在编辑患者时,根据页面地址参数进行数据查询和更新操作,需要准确处理页面状态切换和数据更新的关系,确保用户操作和页面展示的一致性,避免出现数据显示错误或操作异常。

四、解决方法与收获

  • 解决方法
    • 对于权限验证问题,通过仔细阅读文档和代码注释,逐步梳理 pinia 实例的激活条件和拦截器的执行流程,多次测试不同的请求场景,不断调整代码以确保拦截逻辑的正确性。
    • 在数据验证方面,深入学习正则表达式的使用,对于复杂逻辑(如身份证号的性别判断),编写详细的测试用例,通过测试驱动开发来保证验证逻辑的准确性。
    • 针对页面状态和数据更新问题,使用详细的日志记录和断点调试,确保在不同页面生命周期和组件交互中准确判断页面状态,合理调整数据的获取和更新时机。
  • 学习收获
    • 增强了在 uni-app 开发中对前后端交互的安全处理和权限管理的理解和实践能力,包括 token 的存储、使用和验证。
    • 熟练掌握了多种表单数据验证技术,提高了对用户输入数据的处理和验证能力。
    • 学会了使用更复杂的组件操作和页面数据的动态更新,增强了用户界面的交互和操作体验的开发能力。

五、未来展望

  • 进一步优化权限验证的代码逻辑,增强其健壮性和性能,考虑更多的异常情况和复杂场景。
  • 完善数据验证的完整性,对于更多的数据类型和输入情况,添加更多的验证规则和错误处理逻辑。
  • 探索更多的组件和交互功能,为家庭档案模块添加更多的功能和操作,提高用户体验和数据管理的便捷性。

通过对家庭档案模块的学习,逐步提升了 uni-app 开发中的综合能力,为后续的功能开发和项目优化奠定了坚实的基础。


http://www.kler.cn/a/507524.html

相关文章:

  • AWTK fscript 中的 输入/出流 扩展函数
  • ant design vue的级联选择器cascader的悬浮层样式怎么修改
  • ginx: [error] open() “/run/nginx.pid“ failed (2: No such file or directory)
  • AAPM:基于大型语言模型代理的资产定价模型,夏普比率提高9.6%
  • ThreeJs能力演示——图层导入导出
  • ubuntu20.04安装MySQL5.7
  • 【HBuilderX 中 Git 的使用】
  • C++通透讲解设计模式:依赖倒转(1)
  • 【MySQL】:事务
  • 什么是 OpenSSL?OpenSSL 如何工作?
  • hive连接mysql报错:Unknown version specified for initialization: 3.1.0
  • OpenCV入门学习
  • 讲一下ZooKeeper的持久化机制?
  • 【Linux】进程结束和进程等待
  • 银行卡 卡号展示隐藏****
  • 【大语言模型】ACL2024论文-38 从信息瓶颈视角有效过滤检索增强生成中的噪声
  • C# OpenCV机器视觉:极大值抑制
  • 销售团队如何选择销售业绩统计表模板?
  • PouchDB + Dexie.js:构建高效的离线优先同步方案
  • 《探索烟雾目标检测开源项目:技术与应用的深度剖析》
  • STM32网络通讯之LWIP下载移植项目设计(十六)
  • Thrustmaster Hotas Warthog飞行操作杆开发
  • [cg] glDrawBuffers MRT的应用
  • 【0x3D】HCI_Remote_Host_Supported_Features_Notification事件详解
  • 1.7 ChatGPT:引领AI对话革命的致胜之道
  • 冯康简介,中国有限元先驱