大学网站模板htmlc2c模式特点

web/2025/9/29 6:26:54/文章来源:
大学网站模板html,c2c模式特点,柳市专业网站托管,智能网站开发工具路由跳转场景 页面跳转是路由最常用的能力#xff0c;Navigation通过NavPathStack提供了诸多方法#xff0c;下文以pushDestination方法为例#xff0c;介绍Navigation的路由跳转相关能力。 页面间跳转 NavPathStack提供了路由管理的能力#xff0c;通过NavPathStack进行…路由跳转场景 页面跳转是路由最常用的能力Navigation通过NavPathStack提供了诸多方法下文以pushDestination方法为例介绍Navigation的路由跳转相关能力。 页面间跳转 NavPathStack提供了路由管理的能力通过NavPathStack进行页面跳转主要适用于页面较多的应用。 Step1创建NavPathStack对象pageStack通常使用Provide进行修饰方便后续子组件通过Comsumer获取以实现子页面的路由跳转。 也可以将pageStack传入路由框架以实现路由框架开发后续路由框架章节会介绍的开发。 Entry Component struct mainPageView { Provide(pageStack) pageStack: NavPathStack new NavPathStack() ... build() { ... } } Step2构建路由表pageMap该方法通过Builder进行修饰通过传入的pageName属性返回不同页面。 Entry Component struct mainPageView { Provide(pageStack) pageStack: NavPathStack new NavPathStack() Builder PageMap(pageName: string) { if (pageName loginPage) { loginPageView() } else if (pageName mainPage) { mainPageView() } } build() { ... } } Step3在build创建Navigation组件需要传入pageStack参数通过navDestination属性传入路由表pageMap并通过pageStack.pushPath()实现页面跳转。 Entry Component struct mainPageView { Provide(pageStack) pageStack: NavPathStack new NavPathStack() Builder pageMap(pageName: string) { if (pageName loginPage) { loginPageView() } else if (pageName mainPage) { mainPageView() } } build() { Navigation(this.pageStack){ ... Button(login).onClick( ent { let pathInfo : NavPathInfo new NavPathInfo(loginPage, null) this.pageStack.pushDestination(pathInfo, true); }) }.navDestination(this.pageMap) ... } } 页面间参数传递 Navigation的页面间通过NavPathInfo对象中的params属性实现从发起页到目标页的数据传递通过onPop回调参数实现处理目标页面的返回。 Step1构建NavPathInfo对象输入需要传递给目标页面的参数。 params参数将需要传递的数据封装起来进行传递无法传递对象里面的函数。具体的支持参数可以参考指南 onPop参数目标页面触发pop时的返回在回调中通过PopInfo.info.param获取到返回的对象。 // 发起页 mainPage let loginParam : LoginParam new LoginParam() // 构建pathInfo对象 let pathInfo : NavPathInfo new NavPathInfo(loginPage, loginParam , (popInfo: PopInfo) { let loginParam : LoginParam popInfo.info.param as LoginParam; ... }) // 讲参数传递到目标页 this.pageStack.pushDestination(pathInfo, true); Step2目标页通过“NavPathStack.getParamByIndex(0)”获取到发起页传递过来的参数 Component export struct loginPageView { Consume(pageInfo) pageStack : NavPathStack; aboutToAppear(): void { this.loginParam this.pageStack.getParamByIndex(0) as LoginParam; } ... } Step3目标页通过NavPathStack.pop方法返回起始页其result参数用来传递需要返回给起始页的对象。 Component export struct loginPageView { Consume(pageInfo) pageStack : NavPathStack; // 页面构建的对象 private loginParam! : LoginParam; ... build() { NavDestination(){ ... Button(login).onClick( ent { // 将对象返回给起始页 this.pageStack.pop(this.loginParam, true) }) } } } 跨模块页面跳转 当应用模块较多需要使用HSPHAR进行多模块开发比如登录模块是一个独立团队开发以HSP(HAR)的形式交付。此时主页应当从mainPage跳转到HSPHAR中的页面需要先导入模块的自定义组件将组件添加到pageMap中再通过pushDestination进行跳转。 Step1从HSPHAR中完成自定义组件需要跳转的目标页面开发讲自定义组件申明为export。 Component export struct loginPageInHSP { Consume(pageStack) pageStack: NavPathStack; ... build() { NavDestination() { ... } } } Step2在HSPHAR的index.ets中导出组件。 export { loginPageInHSP } from ./src/main/ets/pages/loginPageInHSP Step3配置好HSPHAR的项目依赖后在mainPage中导入自定义组件并添加到pageMap中即可正常调用。// 导入模块目标页自定义组件。 import { loginPageInHSP } from library/src/main/ets/pages/loginPageInHSP Entry Component struct mainPage { Provide(pageStack) pageStack: NavPathStack new NavPathStack() Builder pageMap(name: string) { if (name loginPageInHSP) { // 路由到hsp包中的登录页面 loginPageInHSP() } } build() { Navigation(this.pageStack) { Button(login With HSP module) .onClick(() { let loginParam : LoginParamInHSP new LoginParamInHSP() let pathInfo : NavPathInfo new NavPathInfo(loginPageInHSP, loginParam, (popInfo: PopInfo) {}) this.pageStack.pushDestination(pathInfo, true); }) } .navDestination(this.pageMap) } } 页面转场 默认转场动画 Navigation的pushXXX和pop方法中都带有一个参数animated将animated设置成false则会取消转场动画路由到Dialog模式页面或者路由出Dialog模式页面是均无转场动画如果需要转场动画可以通过自定义转场动画实现。 自定义转场动画 Navigation通过customNavContentTransition事件提供自定义转场动画的能力当转场开始时通过回调函数告知开发者告知此次动画from从哪来、to到哪去、是Push、Pop亦或是Repalce。这里需要注意当为根视图时NavContentInfo的name值为undefined。 开发者可以在customNavContentTransition的回调函数中进行动画处理返回NavigationAnimatedTransition自定义转场协议已实现自定义转场。 NavigationAnimatedTransition对象中包含三个参数timeout动画超时结束时间transition自定义动画执行回调onTransitionEnd转场完成回调需要在transition方法中实现具体动画逻辑。 由于自定义转场参数是在Navigation层级但是每个页面都会有其特定的自定义转场效果因此需要定义一套转场动画框架已实现在Navigation层面对框架进行统一管理各个页面通过实现框架提供的回调函数将其特定的动画效果传递给Navigation。 Step1构建动画框架通过一个Map管理各个页面自定义自定义动画对象CustomTransitionCustomTransition对象提供了Push、Pop、Replace各个动画阶段的回调函数给各个页面进行补充此处将各个阶段细分为In和Out从而实现页面进入和退出时不同的转场效果。 // 自定义动画对象定义了Push、Pop、Replace各个动画阶段的回调函数。 export class CustomTransition { pageID : number -1; onPushInStart: () void () {}; onPushInEnd: () void () {}; onPushInFinish: () void () {}; onPopInStart: () void () {}; onPopInEnd: () void () {}; onPopInFinish: () void () {}; onReplaceInStart: () void () {}; onReplaceInEnd: () void () {}; onReplaceInFinish: () void () {}; onPushOutStart: () void () {}; onPushOutEnd: () void () {}; onPushOutFinish: () void () {}; onPopOutStart: () void () {}; onPopOutEnd: () void () {}; onPopOutFinish: () void () {}; onReplaceOutStart: () void () {}; onReplaceOutEnd: () void () {}; onReplaceOutFinish: () void () {}; ... // 获取启动阶段参数回调 public getStart(operation : NavigationOperation, isInPage : boolean) : () void { if (operation NavigationOperation.PUSH) { if (isInPage) { return this.onPushInStart; } else { return this.onPushOutStart; } } else if (operation NavigationOperation.POP) { if (isInPage) { return this.onPopInStart; } else { return this.onPopOutStart; } } else { if (isInPage) { return this.onReplaceInStart; } else { return this.onReplaceOutStart; } } } // 获取动画结束阶段参数回调 public getEnd(operation : NavigationOperation, isInPage : boolean) : () void { ... } // 获取动画结束后参数回调 public getFinished(operation : NavigationOperation, isInPage : boolean) : () void { ... } } // 自定义动画对象框架 export class CustomTransitionFW { // 各个页面自定义动画对象映射表 private customTransitionMap: Mapnumber, CustomTransition new Mapnumber, CustomTransition() ... registerNavParam(ct : CustomTransition): void { ... this.customTransitionMap.set(ct.pageID, ct); } unRegisterNavParam(pageId: number): void { ... this.customTransitionMap.delete(pageId); } getAnimateParam(pageId: number): CustomTransition { ... return this.customTransitionMap.get(pageId) as CustomTransition; } } Step2配置Navigation的customNavContentTransition属性当返回undefined时使用系统默认动画。 build() { Navigation(this.pageStack){ ... }.hideTitleBar(true) .hideToolBar(true) .navDestination(this.pageMap) .customNavContentTransition((from: NavContentInfo, to: NavContentInfo, operation: NavigationOperation) { // 对于Dialog型的页面此处统一做了自定义动画的屏蔽若需要动画可以不做此判断。 if (from.mode NavDestinationMode.DIALOG || to.mode NavDestinationMode.DIALOG) { console.error( no transition because Dialog); return undefined; } let pageIn : CustomTransition | undefined; let pageOut : CustomTransition | undefined; pageIn CustomTransitionFW.getInstance().getAnimateParam(to.index) pageOut CustomTransitionFW.getInstance().getAnimateParam(from.index) // 业务首页跳转时若没有自定义动画诉求此处可以通过判断页面id是否为-1-1表示Navigation根视图进行跳出。 if (from.index -1 || to.index -1) { return undefined; } // 创建自定义转场协议各个页面都会根据协议中的配置进行转场当返回undefined时使用系统默认动画。 let customAnimation: NavigationAnimatedTransition { onTransitionEnd: (isSuccess: boolean){ ... }, transition: (transitionProxy: NavigationTransitionProxy){ ... }, timeout: 100, }; return customAnimation; }) } Step3customNavContentTransition事件需要返回NavigationAnimatedTransition对象具体的动画实现需要在NavigationAnimatedTransition的transition属性中实现。transition中通过各个页面在框架中注册的回调函数配置框架需要的动画属性。案例中各个页面注册了PUSH\POP\REPLACE的各个阶段动画参数。此处需要注意由于Navigation根页面不在栈中因此无法与NavDestination无法产生跳转联动因此如果第一个入栈的页面也需要自定义动画那么就需要判断pageId是否为-1-1及表示为根视图如果是-1则不就行动画设置。 let customAnimation: NavigationAnimatedTransition { ... transition: (transitionProxy: NavigationTransitionProxy){ // 配置起始参数 if (pageOut ! undefined pageOut.pageID ! -1) { pageOut.getStart(operation, false)(); } if (pageIn ! undefined pageIn.pageID ! -1) { pageIn.getStart(operation, true)(); } // 执行动画 animateTo({ duration: 1000, curve: Curve.EaseInOut, onFinish: (){ if (pageOut ! undefined pageOut.pageID ! -1) { pageOut.getFinished(operation, false)(); } if (pageIn ! undefined pageIn.pageID ! -1) { pageIn.getFinished(operation, true)(); } transitionProxy.finishTransition(); }}, (){ if (pageOut ! undefined pageOut.pageID ! -1) { pageOut.getEnd(operation, false)(); } if (pageIn ! undefined pageIn.pageID ! -1) { pageIn.getEnd(operation, true)(); } }) } } Step4在各个页面中定义动画回调并往自定义动画框架中注册。并在组件onDisAppear生命周期中注销框架中的页面动画回调。 Step5定义NavDestination的translate属性已实现动画效果。 Component export struct loginPageView { ... private pageId: number 0; State transX: number 0; State transY: number 0; aboutToAppear(): void { this.pageId this.pageStack.getAllPathName().length - 1; let ct : CustomTransition new CustomTransition(); ct.pageID this.pageId; ct.onPushInStart ct.onPushOutEnd ct.onPopInStart ct.onPopOutEnd ct.onReplaceInStart ct.onReplaceOutEnd () { this.transX -300; } ct.onPushInEnd ct.onPushOutStart ct.onPopInEnd ct.onPopOutStart ct.onReplaceInEnd ct.onReplaceOutStart () { this.transX 0; } ct.onPushInFinish ct.onPopInFinish ct.onReplaceInFinish () { this.transX 0; } ct.onPushOutFinish ct.onPopOutFinish ct.onReplaceOutFinish () { this.transX -300; } // 将页面的动画效果注册到动画框架中 CustomTransitionFW.getInstance().registerNavParam(ct) } build() { NavDestination(){ ... }.hideTitleBar(true) .onDisAppear((){ // 组件销毁的时候需要将页面的动画效果从框架中删除 CustomTransitionFW.getInstance().unRegisterNavParam(this.pageId) }) // 定义translate已实现动画 .translate({x: this.transX, y: this.transY, z: 0}) } } 共享元素转场 NavDestination之间可以通过geometryTransition实现共享元素转场。 起始页Step1为需要实现共享元素转场的元素添加geometryTransition属性id参数必须在两个NavDestination之间保持一致。起始页代码。 Column() { Image($r(app.media.startIcon)) .geometryTransition(1) Text(起始页共享的图片) } .width(100) .height(100) 目的页代码。 Column() { Image($r(app.media.startIcon)) .geometryTransition(1) Text(目的页共享的图片) } .width(200) .height(200) Step2animateTo方法发起页面跳转push 或者 pop触发共享元素转场动画执行。注意此处需要关闭页面默认的跳转动画。 Button(跳转目的页) .width(80%) .height(40) .margin(20) .onClick(() { animateTo({ duration: 1000 }, () { this.pageInfos.pushPath({ name: DestinationPage }, false) }) })

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

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

相关文章

没内容的网站怎么优化电商网站创办过程

大家好,我是电商小布。 当前的互联网时代下,电商无疑是最炙手可热的行业。 各种各样电商项目的出现,给了我们大家更多的机会选择,并从中来享受到流量至上的魅力。 腾讯旗下的视频号小店就是其中之一。 这个项目是依靠于视频号…

上海网站建设流程用户界面设计的基本原则

Docker基本概念 1.Docker概述1.1 Docker是什么?1.2 Docker的宗旨1.3 容器的优点1.4 Docker与虚拟机的区别1.5 容器在内核中支持的两种技术1.6 namespace的六大类型 2.Docker核心概念2.1 镜像2.2 容器2.3 仓库 3. 知识点总结3.1 Docker是什么?3.2 容器和虚…

宣武网站建设有个网站做彩盒的

参考文章:【SpringBoot】之创建自定义 SpringBoot-Starter_springboot创建starter_王廷云的博客的博客-CSDN博客 源码包和jar: https://download.csdn.net/download/tiantangpw/88045999 自己写的starter;使用的apache-commons-email 包内包含源码和已打包的jar,亲测可用,可以…

网站 title 被修改大学网站建设管理办法信息化

上文介绍了品牌隔离的基本原理,就是通过不同的前端和微服务来实现。但是确实很多功能是类似的,所以从编程角度还是有些管理手段的。 前端部分:前端部分没有什么特别手段,就是两个独立的项目工程,分别维护。相同的部分复…

wordpress群站58同城兰州网站建设

文章目录 一、项目目录层级组织概念1.1 cargo new 创建同名 的 Project 和 crate1.2 多 crate 的 package1.3 mod 模块1.3.1 创建嵌套 mod1.3.2 mod 树1.3.3 用路径引用 mod1.3.3.1 使用绝对还是相对? 1.3.4 代码可见性1.3.4.1 pub 关键字1.3.4.2 用 super 引用 mod1.3.4.3 用…

网站建设验收确认书济南网站制作服务

版本号发布日期版本名称API Level更新内容Android 1.02008年9月23日初始版本初始版本,提供基本的手机功能和应用程序。Android 1.52009年4月30日Cupcake添加了文本输入方法(包括虚拟键盘)和语音搜索。 改进了网络和蓝牙功能。Android 1.62009…

企业新网站seo推广建设网站时候应该注意哪些

原文地址:https://blog.csdn.net/chaishen10000/article/details/79324016 最近一段时间都在学习深度学习,想着在用户画像标签模型中看能不能用上,终于,用了一个多月的时间,结合实际的场景和数据,搭建了一套…

个人工商注册查询网站网站试运营

数据结构基础 学习内容概述 今天我开始学习数据结构,重点理解了它在编程中的重要性。数据结构是为了高效访问数据而设计的一种数据组织和存储方式。它不仅仅关注数据的存储位置,还关注数据元素之间的关系。 计算机科学家尼古拉斯沃斯提出了著名的公式&…

自己建设的网站如何优化购物平台软件开发

文章目录 7.1 常用方法 参考操作数组的工具类:Arrays,Collections 是一个操作 Set、List 和 Map 等集合的工具类。 7.1 常用方法 Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、…

专业彩票网站开发做地产网站哪家好

1、基本原理介绍 这里介绍的单指模型迁移。一般我们训练模型时,往往会自定义一个模型类,这个类中定义了神经网络的结构,训练时将数据集输入,从0开始训练;而迁移学习中(单指模型迁移策略)&#x…

改进网站建设英文作文免费域名 网站

本图像处理系列笔记是基于B站杨淑莹老师的课程进行学习整理的。 文章目录黑白图像8位灰度索引图像8位伪彩色索引图像24位真彩色图像图像文件格式BMP文件存储格式BMP文件头位图信息头颜色表位图信息——BITMAPINFO结构BMP位图文件汇总按照颜色深度分类,常用图像文件&…

中国万网域名注册价格关键词seo自然排名优化

最热建筑安装工程计算表格,输入后自动生成,省时方便易上手!工程量计算是每一个造价从业者必备技能。但是要保证计算过程中不能有一丝丝差错,实在是一件令人头疼的事情,因为步骤比较繁杂,并且算量大&#xf…

网站页面如何设计图百度指数平台官网

PD虚拟机(Parallels Desktop 虚拟机)是一款知名的系统虚拟化软件,PD虚拟机允许用户在一个操作系统中同时运行另一个或者多个操作系统。这种技术在多种场景中非常有用,比如程序开发、专业研究、游戏对战等,尤其是对于需…

河北省建设厅工程信息网站网页设计师培训学费

**上节课我们为这个项目获取了一些DOM元素,现在我们可以继续;**这个模态窗口有一个hidden类,这个类上文我们讲了,他的display为none;如果我们去除这个hidden的话,就可以让这个模态窗口展现出来。如下 cons…

怎么做网站呀wordpress批量修改文章内容

C/C++等级考试(1~8级)全部真题・点这里 第1题:小白鼠再排队 N只小白鼠(1 < N < 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。帽子的颜色用 “red”,“blue”等字符串来表示。不同的小白…

ru后缀的网站青岛建网站的公司

在电商业务蓬勃发展的当下&#xff0c;亚马逊已经成为全球最大的电商平台之一&#xff0c;拥有庞大的用户群和交易量。在激烈的市场竞争中&#xff0c;如何有效地吸引流量成为亚马逊店铺经营者所关注的重点。海外云手机作为一项新兴技术工具&#xff0c;为亚马逊店铺的流量引导…

什么网站做首页在线制作名片免费

单道环境下四个作业&#xff0c;它们进入系统的时间如下&#xff1a;作业进入时间估计运行时间&#xff08;分钟&#xff09;JOB18:00120JOB28:5050JOB39:0010JOB49:5020(1)给出FCFS , SJF&#xff0c;HRN下的作业执行次序(2)给出FCFS , SJF, HRN下的作业平均周转时间和带权平均…

网站建设公司企业模板下载jsp网站开发工资

本文记录了在部署高可用的k8s集群时&#xff0c;遇到的一个故障及其解决方法。 集群环境 描述&#xff1a;三主三从&#xff0c;eth0为外网网卡&#xff0c;eth1为内网网卡&#xff0c;内网互通。 需求&#xff1a;eth0只负责访问外网&#xff0c;eth1作为集群间的通信。 主…

辽宁注册公司网站jsp网站开发中js的问题

第二天-Python环境境安装及简单程序的编写 一.Python的安装 1.首先进入网站下载&#xff1a;点击打开链接&#xff08;或自己输入网址https://www.python.org/downloads/&#xff09;&#xff0c;进入之后如下图&#xff0c;选择适合自己操作系统的版本进行下载。2.下载完成后如…

为某网站做网站推广策划方案衡阳做网站的

每次使用单边大脑的时间不要太久&#xff0c; 连续使用左边脑30 分钟如同使用左臂 30 分钟一样&#xff0c; 周期性性地交换让大脑两侧轮流休息。 左脑活动包括了循序渐进的工作&#xff0c;解决逻辑问题与分析&#xff1b; 右脑的活动包括了阴雨、创造性思考、模式匹配与可视化…