鸿蒙3.0应用开发体验

2023-10-27

鸿蒙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鸿蒙版(简版,名为:会计教练鸿蒙版,有兴趣的可以下载体验,目前只支持3.0以上系统,2.0应用市场搜不到),目前已上架!总体的开发体验还算不错,因为自己对Flutter以及js开发比较熟悉,所以上手ArkTs几乎没什么难度,看一遍文档基本就八九不离十了!

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

鸿蒙3.0应用开发体验 的相关文章

随机推荐

  • 小米升级后开机显示无服务器,小米手机升级后无法开机解决方法

    方法1 刷机 在关机的状态下 进rec中双清 音量上键和开机键按住出来第一个mi画面全部松手 再按住音量加 然后在双清 然后关机音量下键和开机键同时摁住进入fastboot模式 出现米兔修机器人界面 线刷开发版刷机包和教程可以到http w
  • vue3中keep-alive和vue-router的结合使用

    vue3中keep alive和vue router的结合使用 前言 代码 一 为何要使用keep alive 二 vue2中使用keep alive 将 router view 组件包含于 keep alive 即可 三 vue3中使用k
  • 打印二叉树

    摘要 https wylu github io posts 91f36751 本文将使用两种展示方式打印一颗二叉树 效果如下 8 12 14 20 15 13 10 11 9 4 6 7 5 2 3 1 20
  • 50 openEuler搭建PostgreSQL数据库服务器-配置环境

    文章目录 50 openEuler搭建PostgreSQL数据库服务器 配置环境 50 1 关闭防火墙并取消开机自启动 50 2 修改SELINUX为disabled 50 3 创建组和用户 50 4 创建数据盘 50 4 1 方法一 在r
  • 21、同步与异步(三种方法)

    1 同步 按顺序一条一条数据执行 1 同步 按顺序一条一条数据执行 console log 第1条数据 console log 第2条数据 console log 第3条数据 console log 第4条数据 console log 第5
  • flowable工作流简介

    官网地址 https www flowable org Flowable6 3中文教程 https tkjohn github io flowable userguide introduction Flowable Modeler 流程定义
  • 数据结构-树(树基本实现C++)

    树形结构是一种重要的非线性数据结构 其中树和二叉树最为常用 直观看来树是以分支关系定义的层次结构 树形结构是我们平时比较熟悉的 比如文件夹目录 公司组织关系等 在计算机领域也得到广泛的应用 编译程序就是以树来表示源程序的语法结构 二叉树是一
  • osgEarth的Rex引擎原理分析(一二六)rex瓦片组织方式

    目标 一二五 中问题212 通过如下确定瓦片的组织方式 核心是profile osgEarth Map cpp void Map calculateProfile collect the terrain layers we will nee
  • [1075]OpenSSL和Python实现RSA Key公钥加密私钥解密

    文章目录 1 OpenSSL实现非对称加解密 1 1 生成私钥 并导出公钥 1 2 准备测试数据 1 3 公钥加密 1 4 私钥解密 2 Python实现非对称加解密 3 非对称加解密的疑问 为什么RSA公钥每次加密得到的结果都不一样 1
  • Linux复制到home后自动删除,[rm] Linux 防止"rm -rf /" 误删除

    引以为戒 一 缘由 最近看到这则新闻 很是悲伤 因为我最近也在用ansible 然而这一错误源自Ansible上糟糕的代码设计 这款Linux实用工具被用于在多台不同服务器上自动执行脚本 开发者解释到 实际参数应该是 rm rf foo b
  • Tomcat部署静态页面

    安装Tomcat 1 将html文件放在ROOT文件下 2 将html文件直接放在webapp下
  • java并发包:读写锁

    本文转载至 http blog csdn net a910626 article details 51900954 ReadWriteLock是jdk5中提供的读写分离锁 读写分离锁可以有效的帮助减少锁竞争 以提升性能 用锁分离的机制来提升
  • 手机设置代理后无法上网_fiddler 手机代理设置过程及问题解决

    之前在学习用fiddler对手机进行抓包的时候 手机设置代理一直失败 电脑ip地址和端口号也是正确的 但就是发生一些奇奇怪怪的问题连接不上 但最后把所有过程重新试了一遍就莫名其妙的成功了 在这里设置代理的整个过程梳理一下 如果看到这篇文章的
  • Unity ILRuntime Debugger使用及常见问题

    目录 前言 1 安装 2 使用 3 常见问题 前言 ILRuntime支持在VS中断点调试 下面说一下ILRuntime Debugger的使用及常见问题 1 安装 需要下载对应版本的ILRuntime Debugger VS插件 我是在U
  • [Oracle][Postgresql][mysql]三个数据库产品下表字段存在空值或者为空创建索引是否生效测试

    postgresql 数据库测试开始 本次测试以pg 数据库 10 11版本 postgres select version version PostgreSQL 10 11 compiled by Visual C build 1800
  • BIO测试例子

    BIO一个测试例子 运行的环境window 运行的环境window bio的模式 当前有一个客户端在访问服务端时 并且阻塞在发送数据处 第二个客户端是无法访问的 import java io IOException import java
  • 用好lua+unity,让性能飞起来——lua与c#交互篇

    前言 在看了uwa之前发布的 Unity项目常见Lua解决方案性能比较 决定动手写一篇关于lua unity方案的性能优化文 整合lua是目前最强大的unity热更新方案 毕竟这是唯一可以支持ios热更新的办法 然而作为一个重度ulua用户
  • openwrt安装打印机服务器_原创

    作者 水滴实验室 单位 恒安嘉新 前言 随着物联网时代逐步的发展 设备之间的联系更为紧密 每个节点都无法独立存在 而与我们每个人都 息息相关的一些设备 路由器 摄像头 打印机等越来越多的影响着我们的生活各个方面 小到个人隐 私 大到敌对势力
  • 如何在Linux下配置网络访问外网

    Linux下的网络配置 1 查看自己的网卡编号 2 设置使用的网卡 IP地址 网关等参数 3 设置DNS服务器 4 重启网络服务 5 测试是否能ping通外网 6 无法Ping通的异常处理 7 Ping 外网的时候提示Temporary f
  • 鸿蒙3.0应用开发体验

    鸿蒙os3 0发布以来 华为官方开始主推ets arkui开发模式 逐渐抛弃java 为以后去安卓化做铺垫 但目前在笔者体验来看 仍需要大力完善 还有很长的路要走 什么是ets ts是js的超集 而ets是ts的超集 ets后缀的文件中可以