ArkTS 登录注册页面路由跳转完整学习笔记(扩充完整版)
一、知识前置概述
在鸿蒙 ArkTS 多页面应用开发中,默认仅存在单页面,想要实现登录页 ↔ 注册页互相切换、页面跳转,必须依靠官方@ohos.router路由模块完成页面管理。 路由的核心作用:管理应用内多个页面栈、实现页面正向跳转、页面回退、销毁历史页面,是所有多页面项目的基础必备知识点。 本案例实现完整业务流程:登录页点击「去注册」跳转到注册页;注册页点击「已有账号去登录」返回登录页,区分两种跳转 API:pushUrl、replaceUrl。 整体分为三大核心步骤:路由配置文件注册页面、登录页编写跳转逻辑、注册页编写返回逻辑。
步骤 1:配置 route_map.json 全局路由注册文件
1.1 文件作用说明
route_map.json是鸿蒙项目全局路由注册表,相当于页面 “通讯录”,只有在这里填写页面文件路径,router工具才能识别、找到对应页面,否则调用跳转代码会直接编译报错、页面找不到。 项目所有需要跳转的页面,都必须在src数组内添加对应路径。
1.2 操作完整流程
- 在项目目录中找到
entry/src/main/resources/base/profile/route_map.json文件; - 找到 JSON 内的
"src": []数组,数组中每一条字符串代表一个可路由页面; - 新增两条页面路径:登录页
pages/Logins、注册页pages/Register; - { "src": [ "pages/Index", "pages/Second", "pages/Logins", // 登录页面路径 "pages/Register", // 注册页面路径 "pages/RouterDemo", "pages/PageOne", "pages/LoginRouter", "pages/Homepage" ] }
注:
- 关键注意事项(易错点扩充)修改完
route_map.json文件后,必须点击编辑器上方「立即同步」按钮,让开发工具更新页面索引;如果忘记同步,运行时会抛出页面不存在异常,跳转功能完全失效。 - 路径书写规范:路径严格区分大小写,必须和 ets 页面文件存放目录名称完全一致,不能多写、少写字符。
步骤 2:
步骤 2:登录 Login 页面引入 router,实现「去注册」跳转逻辑
2.2 模块导入说明
路由工具不会自动内置,每一个需要跳转页面的 ets 文件,首行必须手动导入路由模块:
ets
import router from '@ohos.router';导入语句必须写在文件最顶部,所有组件定义之前。
2.2 页面结构业务拆解
登录页面完整结构由 4 部分组成:
- 标题文本「登录」;
- 账号输入框、密码输入框(密码框开启密文模式
InputType.Password); - 蓝色登录提交按钮;
- 底部蓝色文字「没有账号?去注册」—— 绑定点击事件,实现页面跳转。
2.3 跳转 API 详解:router.pushUrl ()
语法:router.pushUrl({ url: "页面路径" })
- 功能:入栈跳转,打开新页面,保留当前登录页在页面栈;
- 页面栈效果:登录页→注册页,点击系统返回键,会回到登录页;
- 适用场景:从首页、登录页进入详情、注册、活动页,需要保留上一页场景。
页面运行效果
模拟器中打开登录页面,底部蓝色「去注册」文字点击后,平滑切换至注册页面;点击模拟器返回箭头,会退回到登录页面。
。
步骤 3:注册 Register 页面,实现返回登录逻辑
3.1 页面逻辑需求
注册页面分为两种返回登录场景:
- 用户仅浏览注册页,点击文字「已有账号去登录」返回登录;
- 用户完成注册操作,注册成功后跳转登录,销毁注册页面记录,无法回退到注册页。
3.2 两种路由 API 对比(重点扩充考点)
router.pushUrl()- 页面栈:新增页面,新旧页面全部保留;
- 返回行为:可以返回上一页;
- 使用场景:单纯页面浏览跳转。
router.replaceUrl()- 页面栈:替换当前页面,销毁当前注册页记录;
- 返回行为:跳转后点击返回,直接回到登录页的上一级页面,不会回到注册页;
- 使用场景:注册成功、表单提交、支付完成等一次性流程页面。
补充拓展:router.back () 回退 API
如果仅需要回到上一级页面,无需填写页面路径,直接调用router.back()即可,代码更简洁,适合页面简单返回场景。
四、拓展加分知识点(课堂拔高内容)
4.1 页面栈原理通俗解释
鸿蒙路由采用栈结构管理页面:
- 打开登录页 → 栈:[登录页]
- pushUrl 跳注册页 → 栈:[登录页,注册页],返回键弹出栈顶回到登录;
- replaceUrl 跳转登录 → 栈:[登录页],注册页被直接销毁,不存在栈内。
4.2 开发常见报错与解决方案
- 跳转提示页面不存在
- 原因:route_map.json 未添加页面路径 / 修改后未点同步 /url 路径大小写不一致;
- 解决:核对 json 路径,点击立即同步,url 字符串和 json 完全一致。
- router 未定义报错
- 原因:文件顶部缺少
import router from '@ohos.router';导入语句; - 解决:在代码最上方补充导入。
- 原因:文件顶部缺少
- 点击文字无跳转反应
- 原因:onClick 事件未正确绑定、url 路径写错;
- 解决:检查点击回调函数大括号、页面路径。
4.3 业务开发规范建议
- 登录、注册、支付、弹窗等一次性流程页面,提交完成统一使用
replaceUrl,避免用户重复回退无效页面; - 商品详情、资讯、活动页使用
pushUrl,保留页面栈方便用户返回浏览; - 页面内返回按钮优先使用
router.back(),减少硬编码页面路径,便于后期维护。
五、完整流程总结
- 配置路由注册表 route_map.json,登记所有需要跳转页面;
- 跳转页面顶部导入
router路由工具; - 点击控件绑定
onClick点击事件; - 根据业务场景选择
pushUrl(保留页面)/replaceUrl(销毁页面)/back()(回退上一页)完成页面切换; - 区分登录、注册业务场景,合理选用对应路由 API。
