代码拉取完成,页面将自动刷新
一、项目环境构建 1.项目本地初始化 git init:项目初始化,生成本地仓库 git add:提交暂存区 git commit:提交本地仓库 git push:提交远程库 2.如何引入不同的模块 import {xxx1} from "./components/xxx1" import {xxx2} from "./components/xxx2" import {xxx3} from "./components/xxx3" 简化设计 import {xxx1,xxx2,xxx3} from "./components" 前提:在components目录下需要有一个index.ets文件,并且该文件中需要将对应的内容导出才行。 har/hsp: index.ets 3.广告页 4.token令牌,用户身份信息的,每次访问是都需要携带该令牌以表名用户的身份,如果没有,需要重新进行身份认证,需要输入用户名和密码, 其实就是重新登录,登录成功之后,又会给你一个新的token,要保存好,下次访问时又可以携带了。 JWT: 二、后端接口的调用流程 122.51.240.24:31007/driver/users 1.分析接口:url、需要的参数的和返回的参数 接收的参数:只需要Token,已经在request工具类中设计好了,所以不需要特别考虑 返回的参数:需要定义对应的数据模型,封装接口返回的数据 2.定义接口需要的参数数据结构 3.封装API 4.在组件中调用该API 5.组件渲染 三、分页获取数据 1.上拉加载,当List列表到达底部时,上拉是加载新的一页数据【重要】 onReachEnd:List列表到达底部执行的事件 2.下拉刷新【先掌握Refresh组件的使用,然后实现下来刷新具体功能】 四、窗口的沉浸式:全屏化 五、鸿蒙权限管理 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/access-control-V5 1、权限的级别 normal:默认情况下,应用的APL等级都为normal等级。 system_basic:该等级的应用服务提供系统基础服务。如果是normal级别的应用,在开发阶段可以自动获取签名临时获取权限,在应用上线还需要再AGC中进行权限申请。 system_core:该等级的应用服务提供操作系统核心能力。 应用APL等级不允许配置为system_core。 2、授权方式 system_grant:系统授权 user_grant:用户授权 normal system_grant module.json5进行配置即可生效 normal user_grant module.json5进行配置,还需要在代码中申请权限 system_basic system_grant ACL使能,module.json5配置生效,在测试阶段只需要自动生成签名 system_basic user_grant ACL使能,module.json5配置生效,在测试阶段只需要自动生成签名,还需要在代码中申请权限 ohos.permission.APPROXIMATELY_LOCATION ohos.permission.LOCATION 级别:normal 授权方式:user_grant 六、WebView混合开发方式来解决地图问题 1、什么是混合开发 原生开发语言和web开发语言 鸿蒙端原生开发语言:ArkTs web前端语言:html+css+js 框架 原生语言和web前端混合在一起开发的一种方式,目前已经发展成为系统提供壳的原生能力sdk+web前端提供页面及交互的一种方式。 webview:网页容器,用来容纳h5所实现的html页面和js渲染,本质上就相当于在我们app应用中的一个浏览器 2、如何使用 Web({ src: "网页地址", controller: new webview.WebviewController() }) 3、网页端和鸿蒙原生端通信 3.1 分配端口:创建两个端口,一个给网页另外一个给鸿蒙端,然后通过端口发送和接收数据。 第一步:创建通信端口: this.currentPorts = this.controller.createWebMessagePorts() 第二步:分配端口: this.controller.postMessage("trans_port", [this.currentPorts[1]], "*") 第三步:网页接收和发送数据 //需要接收端口 var currentPort window.addEventListener("message",(event)=>{ if(event.data =="trans_port"){ currentPort = event.ports[0] //接收鸿蒙端发送的消息 currentPort.onmessage=(event)=>{ document.querySelector("#myDiv").innerText = event.data } } }) function sendMessage(){ if(currentPort){ var obj = {"type":"alert", "message":"我是网页中的获取的数据"} //通过网页端的端口发送数据给鸿蒙端 currentPort.postMessage(JSON.stringify(obj)) } } 第四步:鸿蒙端发送和接收数据 //鸿蒙端发送数据给网页 sendMessage() { this.currentPorts[0].postMessageEvent("圣诞快乐!!!!") } //通过鸿蒙端的端口接收数据 this.currentPorts[0].onMessageEvent((result: webview.WebMessage) => { if (typeof result === "string") { const obj = JSON.parse(result) as DataResult promptAction.showToast({ message: obj.message }) } }) 3.2 直接方法调用:sdk注入方式,在鸿蒙端或网页端定义一些方法,供对方直接调用[重点掌握] 1、在网页调用鸿蒙端的方法: Web({ src: $rawfile("demo2.html"), controller: this.controller }) .width('100%') .javaScriptProxy({ name: "itluma", //注入对象的名称 object: this.obj, //注入的具体对象 methodList: ["openPhoto"], controller: this.controller }) 在网页中就可以直接使用 window.itluma.openPhoto() //调用鸿蒙注入的方法 2、在鸿蒙端也可以调用网页的方法 this.controller.runJavaScript(`网页中的js方法`) 七、发布应用基本流程 1.生成秘钥和证书请求文件(*.p12, *.csr) 秘钥文件主要用来对数据签名和验证、证书请求文件用于向AGC申请数字证书用的 密码:swift123456 别名:swift 2.申请发布证书(*.cer) AGC颁发为应用配置签名信息的数字证书,用来保障软件代码的完整性和发布者的身份真实性 3.申请发布Profile文件(*.p7b) 包含一些应用包名、数字证书信息、应用申请的权利以及应用调试的设备列表等等,每个应用都必须包含一个Profile文件 需要添加一下公钥指纹信息! 4.配置签名:因为有些Kit必须使用真实签名才能使用,比如Map 5.编译打包 6.上架 八、性能优化: 1.感知优化:动画 2.渲染优化:懒加载、组件复用、布局等等 3.并发优化:多线程 图片压缩 耗时任务:IO操作、文件压缩、解压缩、裁剪、位移 文件上传-图片不要全用原图,先压缩然后再上传 a.创建子线程(worker、taskpool) b.将主线程拿到的图片传递给子线程 c.子线程进行图片压缩 d.压缩完成后,将完成的图片在回传给主线程 e.销毁子线程 f.主线程继续上传操作 九、面试中常见的项目问题 1、说一下你做的这个项目及其开发项目流程 项目背景介绍:在公司已有业务系统基础上,完成鸿蒙端的适配,主要业务流程是通过调用后台接口来显示,这是一个物理类型的项目,主要服务与企业完成物品的运输过程,给司机提供快捷的操作方式 核心流程,选择任务-》提货-》延迟提货-》交货-》上报异常-》回车登记,这是一个送货流程 - 构建项目基础环境 - 进行架构设计,分层架构,主要分2层架构,特征层和公共层, hap/har - 导入一些设计资源,图片、色值 - 创建项目基础目录:组件库|数据模型|工具|常量 - 开发常用的工具类型:网络请求、首选项、数据类型转换等等 - 封装常用的组件:列表组件|加载|上传|弹框|卡片 - 按照需求完成业务流程,并交付测试 - 签名、发布上线 2、你这个项目中有什么你觉得比较难点 - 使用原生http请求比较繁琐,在业务的基础上进行统一封装,规范请求类型、统一处理返回类型 - 第三库的使用,axios|dayjs|log - 针对业务场景封装原生组件,HmSelectCard因为这个组件基础组件和业务组件解耦的一个应用,既要保证组件的独立性,又要保证功能的适用性 - 封装上传组件-唤出相册-采用多线程进行图片压缩-写入沙箱-调用后端服务进行上传-进行地址回显 - 上报位置-获取定位 第一种:webview,混合开发方式 第二种:采用鸿蒙原生kit来解决,模拟器会存在问题,需要真机环境 - tabs组件的布局问题 3、你有没有封装过鸿蒙组件,请说一下过程 在我们的这个项目中,我们总共封装了几十个组件:进度条、卡片、上传、弹框、提示框、预览等等 过程: 1.明确组件的功能需求:交互逻辑、基本UI展示 2.创建组件项目基础结构 @Component struct ComponentName{ build(){ } } 3.配置组件的属性和对外的接口 属性:方便使用者在使用时可以根据自己的需求去配置:大小、尺寸、位置等等 接口:定义组件对外提供的方法:触发特定的动作 4、鸿蒙中组件之间如何通信 组件之间通信: 以下这些基本是采用v1的状态管理: - 单向:@Prop - 双向:@Link @ObjectLink|@Observed - 后代:@Provide|@Consume 跨组件通信: 应用间通信: - LocalStorage:页面 - AppStorage:应用 - PersistentStorage:持久化 线程: - eventHub:线程中 - Emitter:线程之间 5、鸿蒙技术是怎么学的? 参考:公司业务转岗需要,提供转岗的技术储备,并且经常性的参加华为提供的企业实训,通过鸿蒙的官方技术手册学习 23年是基于鸿蒙4.0(api9)进行适配,在24年6月份后基于鸿蒙5.0(api11-12)进行适配 6、项目是否已经上线 上线进行中,公司业务人员在和华为沟通中,因为上架比较麻烦目前还有很多适配问题需要解决,估计月底能够完成! 7、简历上如何描述个人项目 是一个交通|医疗|电商|建筑|餐饮行业的鸿蒙4.0到5.0的过渡版项目设计、开发、测试及上架(因审核周期长、待最终交付) - 完成基础项目库的设计开发,封装了十几个基础组件,并拆解到har包中供其他模块使用 - 搭建项目基础架构,包括组件库-UI适配-数据管理-工具使用功能-页面布局等等 - 重点攻关5.0设备中基于项目实际需求的技术特性-比如:tab样式布局、网络工具类、文件上传、定位等等 - 重点攻关混合开发|支付|挂号|线程通信 - 集成各种系统能力-相册-电话-震动-播放-视频-定位-权限-导航-通知-提醒-ability通信 - 项目优化:动效优化、渲染优化、并发能力 - 配置签名:秘钥和请求证书->发布证书->Profile文件->配置签名-》上架AGC全流程 8、开发鸿蒙需要注意的点 - 模拟器很多能力不足 - 真机有些无法debugger - 没有热更新 - 文档问题-不好找、用法和代码验证起来需要大量时间 - next类型是最大的一个问题 9、总结结束!!!!!!!!!!!!! 毕业项目:项目答辩,项目选题,下周一前,告诉老师你的项目题目,自选题材 突出重点:鸿蒙界面的布局能力、业务能力 https://www.axureshop.com/、https://js.design 案例:https://www.axureshop.com/ys/2208121 https://www.axureshop.com/ys/519174 案例:https://js.design/v?i=ZFEixv&p=VdGWIn41JR&f=_RPuD2j6c9QveZpUPzFk6&wi=true&box=14pm&scale=fit&mode=programmer
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。