1. 开题答辩审的不是代码,是你的“决策过程”
1.1 答辩委员的真实审阅逻辑
先讲个真实的心理活动。我站在教室门口候场的时候,前面一个同学刚好答辩完出来,脸色不太好。他题目是“基于Java的校园二手交易系统”,被评委连问三个问题:你这个系统跟网上的商城有什么区别?你的用户登录怎么保证安全?如果有一百个人同时访问你的服务器会不会崩?他第二个问题开始就卡住了。
我当时在旁边听着,后背就开始冒汗。后来真正轮到我站到讲台上,我才想明白一件事:开题答辩阶段,评委根本不会指望你已经把系统写完了,他们审的其实是三件事——你这个题目值不值得做、你能不能做出来、你打算怎么做出来。
说得更直接一点:评委手里有一份你的开题报告,他们是在用项目答辩的标准去预判你六个月后毕业答辩时的状态。所以你讲得有多流畅是次要的,关键是你每个“选择”背后有没有“理由”。你说用微信小程序,理由是什么;你说用Spring Boot做后端,理由是什么;你说系统分三个角色,理由是什么——每一个技术选型、功能划分、业务流程,评委都可以追问一句“为什么”。这一句“为什么”,就是开题答辩和期末汇报最本质的区别。
1.2 小程序型毕设最容易踩的提问陷阱
这些年“微信小程序”已经成为计算机类毕业设计里的高频词,原因很现实:周期短、上手快、演示效果好,一个手机就能跑起来,不用折腾部署环境。但这也带来了一个问题——评委心里早就预设了“小程序毕设=模板化产物”的判断。
我在开题前专门去旁听了一场答辩,发现几个被问得最多的坑:
- “你这个跟模板有什么区别?”很多同学是从网上找的校园外卖、商城、预约类项目模板改的,换了个名字就当作自己的毕设。评委问这个问题,本质是想确认你清楚自己的业务逻辑,而不是只改了页面文字。
- “你的创新点在哪里?”创新不一定是要发明什么,但你得说清楚你的系统在哪个环节上比现有方案更贴合实际需求。
- “小程序和App都能做这个功能,你为什么非选小程序?”这个问题看起来是闲聊,实际上是在考你对自己技术选型的判断力。
这些问题全部指向同一个核心——“你对这个项目有没有真正的理解”。所以我准备的思路很简单:不追求功能多,而是把每一条功能、每一个页面、每一次数据交互都用“为什么”串起来。只要这件事你能在答辩现场随口讲出来,评委就不会追着你往死里问。
1.3 我为什么把题目从“物业管理系统”改成了“基于微信小程序的小区物业管理系统”
这里有一个很关键的调整,我觉得值得单独拿出来说。
一开始我拟的题目是“小区物业管理系统”,被导师直接打回来了。导师理由很简单:这个题目太宽泛,市面上已经有大量Web端物业管理软件,你做出来的东西放在网页上没有任何竞争力;而且“管理系统”这种标题,评委第一反应就是你打算做个后台CRUD,加分项还没开始就已经扣分了。
后来我加上了“基于微信小程序”这个前缀,整个题目的定位就不一样了。它明确了两件事:
- 服务端角色是业主。物业端用Web管理,业主端用小程序的轻量入口,这两个端加在一起才构成完整闭环。
- 技术方向的边界很清晰。前端就是小程序原生开发,后端是Java接口,数据库是MySQL,没有任何模糊的地带。
改完题目之后,我再去看开题报告,发现好写了很多。因为每一个决策都有了锚点:小程序解决业主“懒得装App”的痛点,Web端解决物业“需要PC端高效录入”的需求,这两个端的分工天然就把系统架构给定了。
提示:如果你的毕设题目也带“基于XXX”前缀,先想清楚这个前缀到底给你的系统带来了什么不可替代的价值。答辩时被追问“为什么不选别的方案”,答不上来比答错更致命。
2. 答辩前夜我干的四件事:拆题、划线、画流程、定技术栈
2.1 拆题:一个题目拆成四个要回答的问题
开题答辩前夜,我没有再翻代码框架,而是拿了一张A4纸,把题目“基于微信小程序的小区物业管理系统”拆成了四个问题写下来:
- 基于微信小程序:用什么开发语言、什么开发工具、怎么发布测试?
- 小区物业管理:服务对象是谁,核心业务场景有哪些?
- 系统:前端后端数据库怎么组织,数据怎么流转?
- 管理与实现:有哪些角色,每个角色能做什么,权限怎么控制?
这一步很多人觉得没必要,但我觉得它是整套答辩准备的基石。因为答辩时评委的提问再五花八门,归根到底都会落回到这四个问题上。我把这四个问题的答案想清楚之后,后面不管是做PPT还是模拟问答,都有了一个统一的框架,不会东一榔头西一棒子。
以第一个问题为例,我给自己备好的回答是这样的:小程序端采用微信官方开发者工具开发,使用JavaScript配合WXML和WXSS进行页面编写;逻辑层采用小程序标准的生命周期管理,数据交互通过wx.request发送请求到后端接口;真机预览需要把请求域名配置到小程序后台并通过校验。这中间涉及到的技术点,我在开题阶段不一定全做完,但我能说清楚每一环节是做什么用的。
2.2 划线:哪些功能必须做,哪些明确不做
开题答辩最忌讳的事情,就是功能模块画了一大堆,结果一问细节全是空的。我当时也被导师点过一次,原话是:“你功能图画了十个模块,你觉得半年时间做得完吗?”
所以我在答辩前给系统功能划了一道清晰的线。第一版开题报告里写的是:
全体角色共用功能:
- 业主端(微信小程序):注册登录、绑定房产、物业费查询与在线缴纳、报修提交与进度查询、小区公告查看、意见反馈、访客预约。
- 物业端(Web管理后台):业主信息管理、房产信息管理、物业费账单生成与查询、报修工单派发与处理、公告发布、反馈处理。
- 系统管理人员:管理员账号与权限分配。
明确不做的功能:
- 不做社区电商、二手交易、停车位实时抢购等衍生功能。
- 不做室内门禁联动、物联网设备对接。
- 不做复杂的数据大屏展示,仅保留基础统计图表。
这个“不做清单”很重要。它向评委传递的信号是“我知道这个项目的边界在哪里”,而不是“我想做的东西多到能写一本书”。答辩时有一个评委还真问了我:“你这里为什么不做停车模块?”我的回答是:停车涉及硬件道闸和地磁感应联动,在毕设周期内无法保证稳定联调,且核心业务闭环靠缴费、报修、公告已经可以完整验证,停车模块更适合作为后续扩展方向。评委点了点头,没有再追问。
2.3 流程书面化:缴费闭环与报修工单闭环
功能模块是静态的,评委真正想看的是你脑子里的“动态流程”。我用了两个完整闭环来说明系统的业务逻辑:物业费缴纳闭环和报修工单闭环。
物业费缴纳闭环的口头表述是这样的:物业管理员在Web端根据房产面积和单价生成当月账单,账单通过数据库关联到业主账号;业主登录小程序之后,在小程序首页会看到待缴费提醒,点击进入缴费页面微信支付成功后,后端收到支付回调并更新账单状态;业主再次打开时页面会显示已缴与账单明细。管理员端也能看到缴费流水,可以按月份导出表格。
报修工单闭环的思路是:业主在小程序提交报修,填写房号、问题描述并上传照片,后端生成工单并自动通知物业端;物业人员接单后设置工单状态为“处理中”,处理完成后填写处理结果并上传照片,业主在小程序端查看闭环状态;如果业主对结果不满意,可以一键重新发起工单,此时系统自动关联历史工单记录,方便物业人员追溯。
这两个闭环一讲完,评委基本就能判断你不是只会堆页面,而是真的想清楚了数据的流转关系。这也是开题答辩中少数几个“稳赚不赔”的加分点。
2.4 技术栈提前固化,不给自己留“现场编”的空间
开题答辩不是技术选型讨论会,不要在现场支支吾吾地分析“Spring Boot还是SSH好”“用原生小程序还是uni-app”。你可以在准备阶段纠结,但答辩时必须已经给出结论。
我的技术栈是这样的:
| 层次 | 技术选型 | 选择理由 |
|---|---|---|
| 前端(业主端) | 微信小程序原生开发 | 原生组件支持最稳定,调试工具成熟,避免uni-app打包后的兼容性问题 |
| 后端(管理端/接口) | Java + Spring Boot + MyBatis Plus | Java在高校教学体系中覆盖最广,Spring Boot生态成熟,MyBatis Plus能明显减少SQL编写量 |
| 数据库 | MySQL 8.0 | 关系型数据模型适合物业这种强结构化业务,事务支持完善 |
| 开发工具 | 微信开发者工具、IDEA、Navicat | 社区教程多,遇到问题百度即可解决,对毕设周期友好 |
| 部署方案 | 云服务器 + 后端接口部署 + 小程序测试号 | 方便评委查看线上运行效果,但开题阶段只做规划说明 |
这套选型最大的特点就是“平实”。每个技术都不是最新最炫的,但每一个都特别适合单人毕业设计去做,而且遇到问题能找到足够的参考资料。我在答辩时是这样表述的:“选择这些技术不是因为它们最先进,而是因为在这个项目规模下,它们能让我的开发效率最高、出错概率最低。”这个回答其实已经提前给评委吃了一颗定心丸。
3. 五分钟现场陈述:PPT顺序与讲稿节奏
3.1 开题PPT的黄金骨架
开题答辩的报告时间一般控制在五到八分钟。我见过有些同学PPT做了四十多页,结果讲了不到一半就被叫停,后面全是最重要的系统设计部分。所以我的PPT结构是严格按照“评委想听什么”来排的,一共两大部分、十页左右:
- 选题背景与研究意义(2页):物业行业的痛点、为什么选小程序作为业主入口。
- 国内外现状(1页):简单带过,重点是“现有方案解决了什么,还缺什么”。
- 系统功能结构(2页):功能模块图加两个核心业务流程图。
- 技术路线(1页):就是上面那张技术选型表格,直接展示。
- 数据库设计(1页):核心表结构预览,不用全画,画三到四张关键表即可。
- 进度安排(1页):分阶段计划,写明每个阶段的产出物。
- 预期成果与创新点(1页):说清楚系统完成之后能演示到什么程度。
这个骨架的核心思路是:不跟评委比信息量,跟评委比逻辑链。每一页PPT都服务于一个问题——“我为什么这么做”,而不是“我能做多少东西”。
3.2 我的讲稿开头方式与时间分配
开题答辩开场的第一句话很关键,千万不要用“各位老师好,我答辩的题目是……”这种所有人都在用的开头。我采用了一种“先抛需求痛点、再引出题目”的方式,效果明显好很多。
我当时是这么说的:“各位老师好。我今天要汇报的题目是基于微信小程序的小区物业管理系统。之所以选择这个题目,是因为我在调研中发现很多老旧小区的物业费收缴仍然以线下为主,业主报修还停留在电话沟通和纸质登记的阶段,物业和业主之间的信息是割裂的。我希望通过小程序这个入口,把缴费、报修、公告这些高频事项整合到一个闭环里,用最低的使用成本解决信息不透明的问题。”
这段话大概花了四十秒,直接回答了“为什么做”这个问题,而且把系统定位落在了“业主使用”上,而不是“后台管理”上。完事之后我拿余光瞟了一眼主评委,他的笔明显停了一下。那一刻我就知道,这个开场稳了。
时间分配上,我给自己定的标准是:选题背景不超过一分钟,功能与技术选型三分钟,进度与预期一分钟,总计控制在六分钟以内,留出足够时间给评委提问。
3.3 预演时被自己人问到的问题
正式答辩前一周,我给同门师兄师姐讲了一遍,被问到的问题比正式答辩还狠,这里列几个:
“你报表警的时候,如果业主填写的信息是伪造的怎么办?”我一开始没想过这个问题,师姐一句话点醒了我:系统里的人都是业主绑定房产后生成的,报修单必须关联房产信息,不能让用户随便填一个地址就完事。所以我后来在数据表设计里加了房产绑定校验逻辑,答辩时这也成了一个加分细节。
“物业费账单人工生成还是自动生成?”我原本想的是管理员手动生成,但师姐提醒我:如果只做手动生成,评委肯定会问你“自动生成不好做吗”。于是我补充了“系统支持按房屋面积和单价自动生成月度账单,管理员只需确认并发布”这个功能点。这个“半自动+人工确认”的设计模式,后来还被一个评委专门拿出来表扬了一句,说兼顾了效率和可控性。
“消息推送是用的模板消息还是订阅消息?”这个属于微信小程序特有的技术问题。我也确实踩过坑——微信在2020年左右把模板消息改成了订阅消息,而且订阅消息需要用户主动触发授权,一次性订阅只能推送一次。如果答辩前没了解清楚,这个问题很可能直接把你问懵。我的回答是:“小程序端通过订阅消息向业主推送缴费提醒和工单状态变更通知,服务端实时把业务数据写入数据库,同时触发订阅消息下发。”这个技术点和互联网上的讨论热点是吻合的,说明我确实看过微信官方文档。
4. 答辩现场高频问题全景复盘:十一问十一答
4.1 选题与意义类
问题一:你这个系统跟市场上现有的物业软件有什么区别?
这个问题几乎是必问的。我当时的回答分三步:第一,现有物业软件主要面向物业公司内部办公,业主侧的体验普遍偏弱;第二,很多小区使用的还是微信群接龙和电话报修,缺乏标准化的数据沉淀;第三,我的系统重点打通业主缴费和报修这两条高频链路,让业主不用安装额外App就能完成操作。
这里有个经验分享:不要贬低现有产品,也不要说“他们都做得不好”。你只需要说“他们的重心不在这里”,然后把你自己的重点亮出来,这个对比就自然成立了。
问题二:物业管理系统用Web做就够了,为什么还要用小程序?
我给了一个很实际的场景:业主一年可能只交四次物业费,报修可能一年也超不过五次,你让他们为了这件事专门下载一个物业公司的App,几乎不可能。但微信小程序不一样,业主不需要额外安装,在微信里搜一下或者扫个码就能进入系统。对物业公司来说,小程序的开发成本、获客成本都比App低很多。这个问题的本质不是技术问题,是产品思维问题,答的时候要落到“使用成本”上。
问题三:你想解决的痛点,微信群里发个接龙不就解决了吗?
这是一个专门的追问陷阱。我那天有点紧张,但这个问题我之前在预演时被问过,所以还能稳住:接龙解决的是通知问题,但解决不了数据闭环问题。业主缴费之后物业需要知道谁交谁没交,报修之后业主需要看到处理进度,公告发出去之后物业需要知道有多少人已读,这些都是接龙做不到的。我的系统是把这些数据沉淀到数据库里,形成结构化的记录,处理效率和追溯能力是完全不一样的。
4.2 技术选型与架构类
问题四:你的后端为什么选Java而不是Node.js或者Python?
我的回答很坦诚:主要是团队技术积累和生态的问题,尤其在学校环境下Java的教程、资料、运维方案最齐全,遇到问题能最快找到解决方案。另外Spring Boot在权限控制、事务管理方面有成熟的框架做支撑。我当时补了一句:“Node.js在小型项目里开发效率也很高,但考虑到毕设周期和稳定性,我选择了我最有把握的技术栈。”没有说任何人坏话,反而显得判断力成熟。
问题五:你的小程序端和服务端之间怎么做身份认证?
这个问题我准备过,回答的核心是“登录凭证code换token”的机制:用户在小程序端调用wx.login拿到临时code,后端拿code调用微信接口换得openid,再签发自定义登录态token下发到前端;后续请求在请求头带上token,后端通过拦截器校验合法性。这个流程其实对应了互联网上很多开发者讨论的热门词“微信小程序用code换token”,说明这是一个很经典的实现方案。我还补充了一句“token设置过期时间,前端在收到401状态码时重新拉起登录流程”,进一步展示思考深度。
问题六:业主信息和房产信息是怎么关联的?
我答的是:系统里有业主表、房产表、业主房产关联表三张核心表。业主注册时只登记手机号和身份证信息,注册成功后进入房产绑定环节,通过输入房产编号或者扫描二维码与房屋进行绑定,绑定记录存在关联表里,一个业主可以绑定多套房产,一套房产可以关联多个家庭成员。这个设计对应的是现实中“一户多房、一房多人”的真实场景,是数据库设计环节最需要提前想清楚的细节。
4.3 业务逻辑与安全类
问题七:物业费在线缴纳涉及资金安全,你打算怎么实现支付?
这个问题如果不准备,很容易被问崩溃。我的回答思路是:系统通过微信支付统一下单接口生成微信预支付单,小程序端拉起支付;服务端接收微信支付的异步回调通知,校验金额和订单号后更新数据库订单状态,同时以状态机思想保证订单状态不会错乱。关于资金安全,我的重点是:我的系统保存的每一笔订单都有完整的业务流水,任何一次支付行为都有微信官方的交易记录可以回溯。
我当时特意加了一段话:“如果只做演示,可以选择不使用真实支付,对接微信支付沙箱环境即可,毕业答辩时用模拟支付通道演示完整流程。”这样反而显得你对边界非常清醒,知道毕设阶段不适合真金白银地收钱。
问题八:物业管理人员权限很大,你怎么控制他能做什么不能做什么?
我的回答分两层:一是后端通过Spring Security或拦截器做权限拦截,每个接口都标注允许访问的角色,物业管理员、系统管理员、普通业主拿到的token携带不同的角色标识;二是前端根据角色动态渲染页面和按钮,比如业主端看不到物业费账单的生成入口,管理端操作记录会写入操作日志,出现问题可以追责。这个“接口权限+前端展示权限+操作日志”三层设计,一次把安全性和可追溯性都兼顾上了。
4.4 边界与风险类
问题九:如果业主不交物业费,系统能怎么处理?
这个问题有点业务刁钻,我当时愣了一下,然后如实回答:“系统不会强制业主缴费,但账单会一直显示为逾期状态,物业管理员可以在催缴记录里登记催缴信息。这里有一个业务上的限制:我不能在小程序里提供停用门禁之类的强制措施,因为那涉及物理硬件和社区管理权限,超出了毕设系统的范围。”这个回答好就好在后半句,既承认了系统的边界,又展示了业务思考的深度。
问题十:你的系统并发能力怎么样?
这是“百人访问会不会崩”的变体。我的回答是:毕设阶段按单小区同时在线几百人规模设计,MySQL对于这个量级完全没有压力;如果后续要扩展到多小区,可以在后端增加Redis缓存层,把业主基础信息和公告内容缓存起来,再配合数据库读写分离。如果要用到更高并发,比如物业费缴费高峰期的大规模推送,可以进一步引入消息队列做削峰填谷,但这不是本次毕设的重点。这个回答很务实,评委基本上不会为难你。
问题十一:你打算怎么测试这个系统?
我的思路是分三步:功能测试用真实场景用例覆盖所有核心流程,比如注册登录、绑定房产、缴费、报修、公告发布,每一条流程都按正常路径和异常路径各测一遍;接口测试用Postman批量跑一遍CRUD操作,重点验证异常参数和越权访问;小程序端通过微信开发者工具的真机预览在安卓和苹果手机上跑通全流程,特别留意真机调试时请求无法到达后端、iOS静音状态下播放提示音等兼容性问题。
问题回答完之后,主评委在记录本上写了几笔,然后抬头跟我说了一句:“思路挺清楚的,回去按这个做就行。”虽然语气很平淡,但我知道这关算是过了。
5. 最容易卡壳的三个“软问题”:创新点、工作量、进度计划
5.1 创新点:我真没有,但我说清楚了差异化
说实话,一个本科毕设,你要说有什么惊天动地的创新,那是骗人的。但如果直接说“没有”,又会让评委觉得你自己都不认可自己的项目。我的处理方式是把“创新”偷换成“差异化设计”,列出了三件小事:
- 报修工单的“历史关联机制”:业主重新发起工单时,系统会自动带出上一次工单的处理记录,物业人员在处理新工单前可以先了解历史情况,减少重复沟通成本。
- 账单生成的“半自动平台化”:系统根据房产面积与单价自动生成账单,但必须经过管理员确认才能发布,兼顾效率与可控性。
- 业主端小程序与物业管理端Web分离部署、同一数据库,数据实时同步,避免两套系统数据不统一的常见问题。
这三个点单拎出来都很小,但组合在一起就是我的系统与“xxx管理系统”模板之间的差异。回答时要记住:创新点不是说给别人听的,是展现你自己对业务细节的观察能力。
5.2 工作量:评委怎么快速判断你的毕设“够不够”
评委心里的工作量判断标尺其实很朴素:数据库有没有超过三张表?业务闭环有没有跑通?有没有一个端是完整适配业务场景的,而不是抄的模板?
为了让我的工作量“被看见”,我在PPT里放了一张数据库核心表清单,一共列了十张表,包括用户表、房产表、业主房产关联表、缴费单表、报修单表、工单处理记录表、公告表、反馈表、操作日志表、通知记录表。这十个实体把整个业务脉络都支撑起来了,评委扫一眼就知道工作量是足的。
另一个容易被忽略的量是“异常路径的处理”。我在系统设计里专门写了“重复缴费拦截”“未绑定房产不能报修”“工单状态非处理中不能填写处理结果”等规则。这些规则加起来的工作量,比单纯堆接口多得多,但对评委来说,这才是真正的业务逻辑工作量。
5.3 进度计划:甘特图不是画给导师看的
进度计划在开题报告里人人都会写,但大部分人的计划表根本经不起追问。我的进度计划是这样的:
- 第1-2周:需求分析与用例图设计,完成数据库ER图初稿。
- 第3-4周:搭建Spring Boot后端骨架,完成业主注册登录与JWT认证模块。
- 第5-6周:业主端小程序框架搭建,完成房产绑定、公告展示等基础页面。
- 第7-8周:完成缴费模块,对接微信支付沙箱环境,跑通账单生成与查询全流程。
- 第9-10周:完成报修工单模块,跑通业主提交、物业处理、结果反馈闭环。
- 第11-12周:完成物业Web管理端全部功能,前后端联调。
- 第13-14周:真机测试与兼容性调试,处理iPhone小屏幕、安卓不同机型等样式问题。
- 第15-16周:论文撰写、PPT制作、答辩预演。
这个计划有一个特点:每个节点都有明确的产出物,不是“完成模块”这种虚词,而是“能演示到什么程度”这种可验证的状态。答辩老师问进展时,你只需要说“我现在在第X周,已经能演示Y功能”,比任何解释都有说服力。
风险预案我也写了一段:如果联调延迟,优先保证缴费和报修两个核心闭环可用,公告和反馈模块降级为后期彩蛋;如果小程序审核周期过长,采用体验版二维码代替正式发布版本进行演示。这种“哪里丢了保哪里”的思路,比干巴巴的“我会抓紧时间”有分量得多。
6. 开题答辩之后:三个后来真的踩到的坑,提前排掉
6.1 数据库第一次设计就考虑“多端”还是“单角色”
开题答辩通过之后,我正式进入开发阶段,第一个踩到的坑来自数据库设计。
因为在开题时我把系统定位为“小程序+Web管理后台”双端结构,但数据库设计时我差点只按小程序端的业务来建表。结果做到物业后台时,发现管理员修改业主信息、批量生成账单这些操作没有对应的表和日志记录位,又回头改表结构,折腾了整整两天。
正确做法是:在第一次设计数据库时就明确每个表是给哪个端用的、哪些表是多端共用的。以用户表为例,业主和管理员不应该放在同一张表里用角色字段硬区分——两者的字段差异太大了。业主有房产绑定关系,有缴费记录;管理员有工单处理记录,有操作日志。分开建表,再加一个账号归属字段来区分,后面做权限控制和业务统计都会省很多事。
6.2 真机调试联调与“请求送不到后端”
第二个坑是开发中期才遇到的,但我在开题答辩时就被老师问到过“你打算怎么测真机”。当时我答得挺轻松,说微信开发者工具自带真机预览功能。结果真正用真机调试时,我遇到了一个非常经典的问题:真机调试请求无法到达后端。
原因通常有两个:一是后端服务只监听在127.0.0.1上,真机访问不到本地电脑,需要把内网IP暴露到局域网;二是微信小程序后台必须配置服务器域名白名单,调试阶段不能直接访问本地IP。解决方法是:用内网穿透工具或者把后端部署到云服务器做临时联调环境,调试阶段也可以在小程序后台开启“不校验合法域名”选项,但正式上线前必须关闭。
如果你在开题阶段就能意识到这个联调问题,并把“云服务器部署联调”写进开发的第9-10周计划里,你的工期至少能节省出一周。这个事我在答辩时没有细想,后来补的功课,现在分享给你们。
6.3 登录态与token刷新:开题时多问自己一句
最后一个坑是关于登录态的。我在开题答辩时答了“用code换token”的登录方案,但真正写代码时才发现,光会换token是不够的。token过期了怎么办?前端怎么知道token失效了?失效以后怎么静默重新登录?
真实项目里的正确逻辑是:前端请求后端接口,后端返回401状态码表示token过期;前端捕获到401之后,判断当前请求是否为登录接口本身,如果不是,先调一次静默登录接口(使用wx.login的新code换取新token),然后自动重放失败的请求。这样用户完全感知不到登录态切换的过程,体验流畅。
开题答辩时不管你准备得多充分,都建议在“登录认证”这个环节多问自己几个延伸问题。因为微信小程序的登录机制是评委大概率了解的技术点,也是你后续开发绕不过去的第一道坎。如果开题时就想清楚了登录方案,后面的开发可以说是“一键起飞”。
答辩结束那天走出教学楼,我给导师发了条消息:“过了,思路很清楚。”导师回复说:“不是过了,是这说明你已经想明白了你要做的东西。”说实话,我那天最大的收获不是“通过”这两个字,而是站在讲台上被评委连续追问两个小时后,第三次陈述自己系统设计时那种可以脱口而出的流畅感。开题答辩本质上是一场思想的体检,报告写得再漂亮,不如你脑子里的逻辑链完整。如果你也是类似的小程序项目,别急着写代码,先把你自己的“为什么”清单写出来,反复问自己三遍,你会发现答辩比想象中轻松得多。