用途:注册流程用于让新用户创建账号,通常收集姓名、邮箱和密码等最少必要信息,校验输入并完成引导。适合需要账号的 Web 应用、电商、SaaS、社区与订阅服务;不适合应免费开放的内容、一次性访客结账、由管理员开通的内部工具,或登录墙会赶走用户的场景(可考虑延迟注册)。
主要能力与实现要点:先确认模式与问题、约束匹配,再从 references/pattern.md 的解剖与示例中选择最小可行变体,先落实无障碍、性能与交互护栏,再做视觉打磨,并按测试指引验证键盘、屏幕阅读器、响应式与失败场景。
无障碍:所有字段关联 <label>;密码字段使用 autocomplete="new-password";用 role="alert" 与 aria-describedby 播报校验错误;用 role="progressbar" 与 aria-label 提供可访问的密码强度信息;条款链接打开时不应丢失表单数据。不要仅用颜色表示强度,不要最后一个字段填完就自动提交,不要使用屏幕阅读器无法访问的 CAPTCHA(可用 invisible reCAPTCHA 或 hCaptcha)。
性能目标:表单渲染 < 100ms,内联校验 < 100ms,密码强度计算每击键 < 16ms,注册请求 < 1500ms(立即显示加载),验证邮件在注册后 30 秒内发出。内联校验可做防抖,例如: let timeout; emailInput.addEventListener('input', () => { clearTimeout(timeout); timeout = setTimeout(validateEmail, 300); });
常见错误:注册时索要过多信息(应只问邮箱和密码,后续渐进式收集);不做邮箱验证(应注册后立即发验证邮件,确认前限制访问);密码规则过于复杂(建议 8-12 位最小长度加强度提示,可考虑支持 passkeys)。
相关模式:账号设置、登录、社交登录。完整实现细节、示例与测试说明见 references/pattern.md,模式页为 https://uxpatterns.dev/patterns/authentication/signup。