鸿蒙3.0应用开发体验

news2024/11/15 23:23:54

鸿蒙os3.0发布以来,华为官方开始主推ets+arkui开发模式,逐渐抛弃java,为以后去安卓化做铺垫,但目前在笔者体验来看,仍需要大力完善,还有很长的路要走!

在这里插入图片描述

什么是ets?ts是js的超集,而ets是ts的超集!ets后缀的文件中可以使用鸿蒙SDKapi的能力,就这么简单!而arkui则与Flutter,SwiftUI相似,为声明式开发框架!而谷歌之前也为原生安卓推出了Jetpack Compose声明式开发模式,难道移动端的声明式开发方式是未来趋势了?

@Entry
@Preview
@Component
struct main {
	 build(){
	     Column() {
	            Text("Hello World").fontSize(17).fontColor("#FFFFFF")
	          }
	          .alignItems(HorizontalAlign.Start)
	          .justifyContent(FlexAlign.Center)
	          .height('100%')
	          .height('100%')
	         }
}

@Entry为页面入口
@Preview表示该页面可以实时预览
@Component 固定写法,表示这是一个组件

更详细的讲解可以直接去华为鸿蒙os官网查看官方文档,写的非常清楚了,包括组件,布局,网络请求,状态管理,数据存储,媒体等等全部都有!

官方文档

目前api已经发布到了9版本:
在这里插入图片描述
通过sdk我们就可以发现,8以上的版本已经不再支持java了,只支持js和arkts(ets),所以当你在创建项目时,如果选择api8+,那就只能用ets开发了,另外如果选择api8+,那么开发出来的鸿蒙app就只能安装在3.0以上的系统,不兼容鸿蒙2.0!api9和api8的变化是,选择api8时只支持FA模型,而选择api9时,新增了Stage模型!

API8:
在这里插入图片描述
API9:
在这里插入图片描述
并且选择Stage模型时,开发语言只支持ArkTs,看来鸿蒙应用开发未来是要全面使用ArkTs了,这样做的好处就是兼容鸿蒙全平台!

至于FA和Stage模型有什么区别,我这里简单说下,详细区别我觉得官方文档比我讲的会更清楚!

FA模型项目结构:
在这里插入图片描述

  • config.json:配置文件(设备信息,页面,权限,服务卡片等);
  • app.ets:MainAbility的入口文件;
  • pages:页面;
  • resourse:资源文件;
  • 其它的文件夹名称都是可以自定义的;

这里说一下,Ability+app.ets,就属于FA模型,当然,你仍然可以在ets文件夹下创建其它Ability:

在这里插入图片描述
创建完成后:

在这里插入图片描述

页面结构是和MainAbility是一样的,都是Ability+app.ts+pages结构,而每个Ability的入口page也是在config中配置,第一个page就默认是该Ability的首页(是不是有点类似小程序?):

在这里插入图片描述

Stage模型项目结构:

在这里插入图片描述

Stage模型的配置文件是moudle.json5,你同样也可以创建其它Ability,区别就是没有app.ts了,每个Ability的首页不在moudle.json5中配置,而是直接在Ability.ts中设置:

在这里插入图片描述
并且,你每创建一个page,都不再需要像FA模型一样,需要在配置文件中配置路径才能使用,无需配置!

他们的共同点是,都可以创建多Ability,并且每个Ability都可以设置为应用启动入口:

在这里插入图片描述

这两个图标是同一个应用创建的,他们属于两个Ability,前提是你为这两个Ability都配置了启动入口,他们相互独立,又可以相互跳转!

在这里插入图片描述

这个功能还是很赞的,相当于一个应用里面内置了n个小应用啊,哈哈…

关于Ability+pages,如果你是安卓开发者,其实你可以理解为Activity+Fragment,当然,他们完全不是一类东西,但可以有助于你的理解!

笔者本人最近也使用api8+FA+ArkTs重新开发了一款公司的app鸿蒙版(简版),目前已上架!总体的开发体验还算不错,因为自己对Flutter以及js开发比较熟悉,所以上手ArkTs几乎没什么难度,看一遍文档基本就八九不离十了!

槽点:
1.某些功能文档还是不够详细;
2.开发者遇到问题,只能去论坛提问,效率低;
3.目前关于鸿蒙开发的技术文章很少(都是一些教程,很少有实际开发中遇到的问题的技术文章);
4.ArkUI目前的官方组件较少;
5.某些官方组件无法满足实际需求,例如video不支持直播,并且论坛管理员回复暂无支持计划,就有点说不过去!
6.签名配置过于麻烦;
7.ark目前貌似没有提供支付相关api,并且接入华为支付貌似也很麻烦;

希望华为鸿蒙官方继续大力完善ark,期待完全抛弃安卓,鸿蒙崛起的那一天!

(ps:关于文章中如果有表述不准确的地方,欢迎大家指正!)

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

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

相关文章

日志、logback

logback下载步骤: logback官网https://logback.qos.ch/index.html教程http://t.csdn.cn/xSK0I 点击SLF4J API进去,注意看右上角的标题是有变化的,是什么目录下就会显示什么目录,点击下载 然后一样点击右下角的Maven 下载这三个&a…

centos7 基于Dledger搭建rocketmq 5.0.0并集成到微服务(1主2从)

小伙伴们,你们好呀,我是老寇,好久不见啦,甚是想念。 rocketmq和rocketmq-console安装包:https://pan.baidu.com/s/1swrV9ffJnmz4S0mfkuBbIw 提取码:1111 1.准备三台主机 192.168.1.1rocketmq&#xff0…

Verilog语法之generate for、generate if、generate case

0、前言 Verilog-2005中有3个generate 语句可以用来很方便地实现重复赋值和例化(generate for)或根据条件选择性地进行编译(generate if和generate case)等功能。接下来就一起看下这3个语句的应用场景和应用方法吧。 1、generate …

Hotspot垃圾收集器一览

上篇文章我们介绍了如何判断对象是否为垃圾,有垃圾就要清理,清理就需要 垃圾收集器。 垃圾收集器(Garbage Collector)是垃圾收集GC的实现,根据是否分代收集可将垃圾收集器分为两种类型:分代收集和不分代收集。 分代收集 Serial垃…

多线程编程带来的不安全问题

目录 1.观察线程不安全问题 2.出现线程不安全问题原因 2.1 根本原因 2.2 代码结构 2.3 原子性 2.4 内存可见性问题 2.5指令重排序 3.通过原子性解决线程安全问题 4.synchronized的使用方法 4.1 修饰方法 4.2 修饰代码块 1.观察线程不安全问题 如果多线程环境下代码…

餐饮企业提升用户价值,从基于点单链路的精细化运营开始

近几年,餐饮业的经营增长面临着巨大挑战,在这种情况下,餐饮企业如何提升用户价值,提高多风险下持续增长的动力呢?神策数据杨丽月聚焦用户运营,围绕“一条链路,四个指标”,跟大家分享…

C# 标签式导航

一 标签式导航 使用TabControl控件,将多个页面结合起来,每个标签关联一个页面。 TabControl 选项卡容器; TabPage选项页; 可以在设计器里添加页面,也可以代码方式添加。 操作演示: ① 选中TabControl; ②…

框架skywalking部署笔记

一旦你的程序docker化之后,你会遇到各种问题,比如原来采用的本地记日志的方式就不再方便了,虽然你可以挂载到宿主机,但你使用 --scale 的话,会导致 记录日志异常,所以最好的方式还是要做日志中心化,另一个问题,原来一个请求在一个进程中的痉挛失败,你可以在日志中巡查…

linux的内存映射(二)

我们先来看幅图: Linux内存管理的最底层是buddy内存管理方案,即伙伴算法,管理伙伴算法我们不做详诉,有兴趣的可以自行学习,我们这里只要知道buddy内存池中只能分配2^n个page的内存,比如1,2,4,8……个pages…

前端面试指南之JS面试题总结

1. JS 有哪些数据类型? 根据 JavaScript 中的变量类型传递方式,分为基本数据类型和引用数据类型两大类七种。 基本数据类型包括Undefined、Null、Boolean、Number、String、Symbol (ES6新增)六种。 引用数据类型只有Object一种,主要包括对象…

pve扩展lvm空间,重做物理卷

pve扩展lvm空间,重做物理卷pve扩展lvm空间,重做物理卷必备知识扩展步骤1.查看当前机器状况2.查看盘符3.确定是否有可分配空间4.确定物理卷分配情况5.(可略)如果你的空闲的盘已经挂载了请用以下命令卸掉6.创建物理卷7.查看卷状态8.…

day7_redis学习

文章目录Geo查找附近商铺BitMap实现用户签到UV统计Geo查找附近商铺 Geo是GeoLocation的简称,代表地理坐标,在Redis 3.2中加入了对Geo的支持,允许存储地理坐标信息,常见的命令有: ①GEOADD key x y member [x2 y2 member]&#xf…

(一)SpringBoot项目初始化并引入基础文件【木字楠后台管理系统模板】

🎶 文章简介:SpringBoot项目初始化并引入基础文件【木字楠后台管理系统模板】 💡 创作目的:为了带大家完整的体验木字楠后台管理系统模版的开发流程 ☀️ 今日天气:天气☁️很好。太阳晒在身上暖暖的 📝 每…

IB数学怎么学,HL是什么难易程度,和SL的内容差的大吗?

做为刚大学毕业的M20 IBer,数学课以往一直没下过90%,全是7分,IA 校园内得分19/20。尽管final被IBO赏了个6(大考撤销,ibo蒙蔽估分orz),但我还是汇总了一些自身的数学学习工作经验,期待…

一个变量命名神器:支持中文转变量名

变量命名的规范,对于我们编程,大家都知道是非常重要的,上次给大家推荐过一个命名辅助工具《程序员还在为变量取名苦恼,那是因为你不知道,这个变量命名神器》,但大家一致反馈存在2个问题: 1、网…

项目管理(如何进行项目采购管理)

项目采购管理包括从项目团队外部采购或获取所需产品、服务或成果的各个过程。项目采购管 理包括编制和管理协议所需的管理和控制过程,例如,合同、订购单、协议备忘录 (MOA),或服务 水平协议 (SLA)。被授权采购项目所需货物和(或)服务的人员可以是项目团队、管理层或组织采…

使用winhex对fat16文件系统分析

“FAT16”是“File Allocation Table,16-bit”的英文缩写,意思是“文件分配表,16位” 。FAT16文件系统是从微软的DOS 3.0系统开始使用的,它能够支持大于16MB小于2GB的分区,Windows 2000以上操作系统可以创建4GB的FAT16分区,但与传统的FAT16不…

【观察】深度剖析,为什么说帆软的文化决定了FineBI6.0的易用和好用

毫无疑问,今天国家对数字经济给予了前所未有的高度重视,《“十四五”数字经济发展规划》中,就明确将继续坚持推进数字产业化和产业数字化,赋能传统产业转型升级,为构建数字中国提供有力支撑,并提出到2025年…

FFmpeg之硬解码

导读 众所周知,软解码虽然兼容性一流,但是却非常依赖CPU,所以性能消耗笔记大;硬解码使用内置的DSP芯片进行解码,性能高,但是兼容性一般。 虽说硬解码兼容性不太好,但是在实际开发中出于对性能的…

智能化煤矿-设备管理系统、故障诊断、全生命周期管理

随着智能化煤矿的建设,煤矿设备、传感器数量在增加、煤矿设备的自动化、智能化程度也相对提高。保证设备稳定运行,减少故障时间是提高煤矿安全生产的一种重要途径。另外随着信息技术的发展,像云计算、物联网、大数据等相关技术的运用&#xf…