【HarmonyOS】关于官方推荐的组件级路由Navigation的心得体会

前言

最近因为之前的630版本有点忙,导致断更了几天,现在再补上。换换脑子。
目前内测系统的华为应用市场,各种顶级APP陆续都放出来beta版本了,大体上都完成了主流程的开发。欣欣向荣的气息。

学习思路

关于学习HarmonyOS的问题,很多同学私聊我说,因为没有白名单访问不了最新的API,目前API已经到12。这其实影响不大,HarmonyOS和OpenHarmony的接口我比对了下,现在基本功能和作用没有区别,可能某些系统api导包名字有区别,但这不影响,可以无缝切换。

可以通过这个链接,访问OpenHarmony开源的API接口文档等信息。

点击左上角的分支,来控制你看的API文档版本。目前最新的是5.0 Beta1 这和HarmonyOS是一致的。目前看华为的策略就是开源鸿蒙和商业鸿蒙版本一致管理。
在这里插入图片描述

标关于官方推荐的组件级路由Navigation的使用心得体会

最近经历了一次应用架构更新,对于路由的概念有了深刻的认识。从两年前开发OpenHarmony开始,基本都是使用router路由和window窗口来控制模块之间的切换。整个页面逻辑的控制非常耦合,并且笨重不变。

随着API的迭代更新,目前华为官方推荐使用Navigaiton来替换router。

Navigaiton这个东西,方便就方便于它的定位,组件级别。而我们的老东西router是页面级别。

  1. 灵活性一目了然,我们可以将页面一部分组件,进行路由控制切换。
  2. 并且我们可以对路由的删除进行管理,而router是没有remove只能替换,并且替换路由函数,是强制没有页面转场动画的效果。
  3. 最大的优势在于系统提供了自动扩容的容器控件,并且支持分栏效果,在折叠屏手机上的适配会非常方便。

Navigation如何使用?

首先Navigation是个容器,并不是直接对标router一样来使用的。我们可以理解成,这家伙是个变形金刚,它是由三部分组成,首先是主页面容器Navigation,其次是子页面容器NavDestination,之后才是对标router的操作对象NavPathStack

(1)创建主页界面



struct MainPage { message: string = 'Hello World';// 创建一个页面栈对象并传入NavigationpageStack: NavPathStack = new NavPathStack()build() {Navigation(this.pageStack) {// 页面布局Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold).onClick(()=>{// 跳转到子页面this.pageStack.pushDestination({name: "OnePage",}, false); //该false表示不需要转场动画,默认是有的})}.width('100%')}.height('100%')}// 分为三种模式,(默认)自动NavigationMode.Auto,单页面NavigationMode.Stack和分栏NavigationMode.Split.mode(NavigationMode.Stack)}
}

(2)创建子页界面


// 跳转页面入口函数

export function OnePageBuilder() {OnePage()
}

struct OnePage {private TAG: string = "OnePage"; message: string = 'Hello World';pathStack: NavPathStack = new NavPathStack();build() {NavDestination() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width('100%')}.height('100%')}.onShown(()=>{console.log(this.TAG, "OnePage onShown");}).onReady((context: NavDestinationContext) => {this.pathStack = context.pathStack;})}
}

(3)配置路由表
在这里插入图片描述

{"routerMap": [{"name": "OnePage","pageSourceFile": "src/main/ets/pages/Navigation/OnePage.ets","buildFunction": "OnePageBuilder","data": {"description" : "this is PageOne"}}]
}

特别注意的是,需要配置路由表的路径到module.json5里面,要不然跳转不了。
特别注意的是,需要配置路由表的路径到module.json5里面,要不然跳转不了。
特别注意的是,需要配置路由表的路径到module.json5里面,要不然跳转不了。主要的话说三遍!

  {"module" : {"routerMap": "$profile:route_map"}}

从API version 12开始,Navigation支持使用系统路由表的方式进行动态路由。各业务模块(HSP/HAR)中需要独立配置router_map.json文件,在触发路由跳转时,应用只需要通过NavPactStack提供的路由方法,传入需要路由的页面配置名称,此时系统会自动完成路由模块的动态加载、页面组件构建,并完成路由跳转,从而实现了开发层面的模块解耦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

热点解读 | 小红书「县城生活」趋势前瞻

“县城婆罗门”、“月薪两万不如县城贵妇”、“北漂打工人回县城被穷笑”……继中产之后,县城成为又一个全网热议的焦点。 县城叙事重返舆论场,本期千瓜将进一步解构「县城」语境下的个体表现,帮助品牌沉淀用户心智,塑造新时代竞争…

​​​防御第一次作业

1、拓扑图及实验要求: 2、配置: 配置终端及服务器IP地址: Pc2: Client1: Pc4: Client2: PC1: Server1: Server2: 防火墙基础配置: [fw1]int g …

maven 依赖冲突

依赖冲突 1、对于 Maven 而言&#xff0c;同一个 groupId 同一个 artifactId 下&#xff0c;只能使用一个 version。 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 --><dependency><groupId>org.apache.commons</groupId&…

力扣题解(等差数列划分)

413.等差数列划分 如果一个数列 至少有三个元素 &#xff0c;并且任意两个相邻元素之差相同&#xff0c;则称该数列为等差数列。 例如&#xff0c;[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给你一个整数数组 nums &#xff0c;返回数组 nums 中所有为等差数组…

KAN-Mixer每行代码解读

import torch import torch.nn.functional as F from torch import nn import math 这几行代码导入了PyTorch库,包括主要的torch模块、torch.nn.functional模块(通常用于激活函数等),torch.nn模块(用于定义神经网络组件),以及math模块(用于基本的数学运算)。device = …

手搓前端day1

断断续续的学了些前端&#xff0c;今天开始写写代码&#xff0c;就当是记录一下自己前端的成长过程 效果&#xff1a; 写了点css&#xff0c;实现了简单的前端页面的跳转 文件目录 代码如下&#xff1a; styles.css body{margin: 0;padding: 0;}header{background-color: bl…

企业级-释放锁进程

作者&#xff1a;fyupeng 技术专栏&#xff1a;☞ https://github.com/fyupeng 项目地址&#xff1a;☞ https://github.com/fyupeng/distributed-blog-system-api 留给读者 一、介绍 当由于某个业务id发生死循环一直在运行&#xff0c;那么再来一笔相同的业务id执行相同操作&…

系统服务综合作业

首先配置自动挂载 服务器的/rhce 自动挂载在客服端的/nfs/rhce 首先在服务器进行配置 dnf install nfs-utils -y [rootlocalhost ~]# vim /etc/exports [rootlocalhost ~]# firewall-cmd --permanent --add-servicenfs success [rootlocalhost ~]# firewall-cmd --permanen…

常见的嵌入式软件体系结构

本文介绍常见的嵌入式软件体系结构。 在嵌入式开发过程中&#xff0c;尤其是MCU为主控的项目开发中&#xff0c;实时性是需要考虑的重要因素&#xff0c;本文介绍常见的2种嵌入式软件体系结构&#xff0c;并对其优缺点作简要分析&#xff0c;另外&#xff0c;还对它们的软件层…

食物链之带权并查集解法

直接看题&#xff1a;https://www.acwing.com/problem/content/description/242/ 下面就是代码的实现了&#xff0c;因为自己与自己肯定是同类我们初始化为0. 下面是AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int n,k; int fk,x,y; int fa[10001…

Unity 资源管理方案(Resources、AssetDatabase、AssetBundle、Addressable)

文章目录 0.参考文章1.什么是资源管理1.1 资源管理文件1.2 资源管理目标1.3 资源管理内容 2.资源管理方案2.1 直接引用2.2 Resources2.3 AssetDatabase2.3.1 官方API2.3.2 AssetDatabase的工作原理 2.4 AssetBundle2.5 Addressable 0.参考文章 本文参考&#xff1a;https://zh…

【Python实战因果推断】29_倾向分9

目录 Outcome Is Easy to Model Generalized Propensity Score for Continuous Treatment Outcome Is Easy to Model 在下一个简单而又能说明问题的例子中&#xff0c;复杂性在于 而不是 。注意 中的非线性&#xff0c;而结果函数是简单的线性。在这里&#xff0c;真正的 A…

【操作系统】进程管理——调度算法(个人笔记)

学习日期&#xff1a;2024.7.4 内容摘要&#xff1a;各种调度算法的思想、规则、优缺点介绍 为什么要有调度算法&#xff1f; 调度算法就好比一群人在银行办理业务&#xff0c;准备办理业务的人就是进程/作业&#xff0c;银行窗口的工作人员就是CPU&#xff0c;进程往往是比C…

xcode配置swift使用自定义主题颜色或者使用RGB或者HEX颜色

要想在xcode中使用自定义颜色或者配置主题色&#xff0c;需要在Assets中配置&#xff0c;打开Assets文件&#xff0c;然后点击添加Color Set&#xff1a; 输入颜色的名称&#xff0c;然后选中这个颜色&#xff0c;会出现两个颜色&#xff1a; Any Appearance表示亮色模式下使用…

评估测试用例有效性 5个方面

评估测试用例的有效性是确保软件测试活动能够达到预期目标的关键步骤&#xff0c;有助于测试团队优化测试计划&#xff0c;提高测试效率&#xff0c;减少返工&#xff0c;节省成本。如果缺乏对测试用例的有效性评估&#xff0c;可能会导致测试用例无法覆盖关键功能点&#xff0…

SpringCloud代码实战

项目结构 实例实现功能:实现通过id查询用户的订单信息 OrderCommon&#xff1a;公共的一些模块类型&#xff0c;此处为一个user对象 Eureka-Service:配置Eureka的启动类&#xff0c;服务端 Order-Service:提供查询功能的服务端 Order-Client:查询的客户端 OrderCommon代码…

ps导入图片的方式

在Photoshop&#xff08;简称PS&#xff09;中导入图片是一项基础且常用的操作&#xff0c;无论是进行图像处理、设计创作还是编辑照片&#xff0c;这一步骤都至关重要。下面将详细介绍几种在Photoshop中导入图片的方法&#xff0c;帮助你快速上手。 方法一&#xff1a;通过菜…

智汇园区:为园区企业注入前沿技术与人才活力

在日新月异的时代浪潮中&#xff0c;树莓集团深知人才是企业发展的核心驱动力&#xff0c;更是推动产业升级与创新的关键要素。因此&#xff0c;我们致力于构建全方位的人才引进与培养体系&#xff0c;为园区企业输送源源不断的前沿技术与人才支持。 【人才引进&#xff1a;汇聚…

私活必备框架!终于找到一个前后端都有的后台管理系统了~

大家好&#xff0c;我是「程序视点」爱分享的小二哥~ 今天介绍一个新的Vue后台管理框架&#xff0c;相比其他后台功能丰富管理系统&#xff0c;这个后台管理系统可以用干净简洁来形容——Nova-admin Nova-admin Nova-admin 是一个基于Vue3、Vite5等最新技术的后台管理平台。用…

Selenium 中的 JUnit 注解

JUnit 是一个基于 Java 的开源框架&#xff0c;可帮助测试人员执行单元测试。JUnit 主要用于测试应用程序的每个单元或组件&#xff0c;例如类和方法。它有助于编写和运行可重复的自动化测试&#xff0c;以确保项目代码按预期运行。还可以使用 JUnit 执行 Selenium 自动化测试用…