当前HarmonyOS支持两套路由机制(Navigation和Router)。1、NavDestination作为子页面的根容器,用于显示Navigation的内容区。NavDestination组件必须配合Navigation使用,作为Navigation目的页面的根节点。2、使用@Entry修饰的页面,在跳转时会和Router搭配使用。Router适用于模块间与模块内页面切换,通过每个页面的url实现模块间解耦。模块内页面跳转时,为了实现更好的转场动效场景不建议使用该模块,推荐使用Navigation。Navigation作为后续长期演讲及推荐的路由选择方案,其与Router比较的优势如下:易用性层面:Navigation天然具备标题、内容、回退按钮的功能联动,开发者可以直接使用此能力。Router若要实现此能力,需要自行定义;Navigation的页面是由组件构成,易于实现共享元素的转场。功能层面:Navigation天然支持一多,Router不支持;Navigation没有路由数量限制,Router限制32个;Navigation可以获取到路由栈NavPathStack,并对路由栈进行操作;Navigation可以嵌套在模态对话框中,也就是说可以模态框中定义路由,Router不支持;Navigation的组件全量由开发者自行控制,开发者可以自定义复杂的动效和属性的设置(背景、模糊等),Router的page对象不对外暴露,开发者无法对page进行处理。性能层面Navigation传递参数性能更优,Navigation通过引用传递,Router通过深拷贝完成;Navigation可以配合动态加载,实现组件动态加载,Router页面使用@Entry进行修饰,当前模块加载时会生成全量页面。推荐使用Navigation,navigation后续是会兼容router所有的能力而且比router的功能更强大,未来navigation是主流。
当前HarmonyOS支持两套路由机制(Navigation和Router)。
1、NavDestination作为子页面的根容器,用于显示Navigation的内容区。NavDestination组件必须配合Navigation使用,作为Navigation目的页面的根节点。
2、使用@Entry修饰的页面,在跳转时会和Router搭配使用。
Router适用于模块间与模块内页面切换,通过每个页面的url实现模块间解耦。模块内页面跳转时,为了实现更好的转场动效场景不建议使用该模块,推荐使用Navigation。
Navigation作为后续长期演讲及推荐的路由选择方案,其与Router比较的优势如下:
易用性层面:
Navigation天然具备标题、内容、回退按钮的功能联动,开发者可以直接使用此能力。Router若要实现此能力,需要自行定义;
Navigation的页面是由组件构成,易于实现共享元素的转场。
功能层面:
Navigation天然支持一多,Router不支持;
Navigation没有路由数量限制,Router限制32个;
Navigation可以获取到路由栈NavPathStack,并对路由栈进行操作;
Navigation可以嵌套在模态对话框中,也就是说可以模态框中定义路由,Router不支持;
Navigation的组件全量由开发者自行控制,开发者可以自定义复杂的动效和属性的设置(背景、模糊等),Router的page对象不对外暴露,开发者无法对page进行处理。
性能层面
Navigation传递参数性能更优,Navigation通过引用传递,Router通过深拷贝完成;
Navigation可以配合动态加载,实现组件动态加载,Router页面使用@Entry进行修饰,当前模块加载时会生成全量页面。
推荐使用Navigation,navigation后续是会兼容router所有的能力而且比router的功能更强大,未来navigation是主流。