【鸿蒙开发】02 复刻学习文档之待办列表

news2024/9/25 1:21:52

文章目录

  • 一、前言叨叨
  • 二、创建应用
  • 三、项目初始化及代码分析
    • 1. 应用启动入口
    • 2. 解读Demo代码并Copy
    • 3、常量数据及静态资源文件
      • AppStore下的resources
      • entry下的resources
  • 四、效果展示

一、前言叨叨

在考试内容看完之后,并且获取到了高级认证,但是在真正动手写应用的时候。尴尬的是不知如何下手,只好从第一篇文章的例子开始再来一遍,选择性的进行部分demo分析,并且同时构建我们的道易清单的开发,这篇文章讲开始进行第一步,熟悉并搭建待办列表页面。

二、创建应用

  1. 本次创建的应用时一个空应用(Empty Ability),选择后进入下一步

在这里插入图片描述
2. 设置项目名称,并且设置Bundle name;
在这里插入图片描述
Bundle name 是项目的唯一标识,默认的命名是:com.example.myapplication,其中myapplication 会根据Project name进行更换,我们需要确认并调整的内容是example。
作为后端开发者,可以将这个理解为是后端的包名命名规范,下面是HarmonyOS的命名规范:

  1. 命名空间反转:通常采用反向域名命名方式,以避免命名冲突。例如,如果您的公司域名为example.com,则包名可以是com.example.*
  2. 小写字母:包名应该全部使用小写字母。
  3. 点分隔:使用点(.)来分隔不同级别的命名空间。
  4. 有意义的名称:每个部分的名字都应具有意义,能够表明应用或组件的功能。
  5. 避免特殊字符:不要在包名中使用特殊字符,如空格、斜杠、下划线等。
  6. 唯一性:确保您的包名在全局范围内是唯一的,特别是当您计划在华为应用市场上发布应用时。
    以下是一个符合HarmonyOS命名规范的Bundle name示例:
com.example.myharmonyapp

在这个例子中,com是顶级域名,example是公司或组织的名称,myharmonyapp是应用的具体名称。
遵循这些命名规范可以帮助确保应用包名的清晰、一致和唯一性,有助于应用在HarmonyOS生态系统中正确识别和分发。

三、项目初始化及代码分析

在这里插入图片描述
具体的文件路径及配置文件参数,可参考官方网站
构建第一个ArkTS应用(Stage模型)

1. 应用启动入口

新建项目的应用启动入口是在entry\src\main\ets\entryability\EntryAbility.ets文件中。
在这里插入图片描述
在onWindowStageCreate()回调中通过loadContent()方法设置应用要加载的页面,并根据需要调用on(‘windowStageEvent’)方法订阅WindowStage的事件(获焦/失焦、可见/不可见)。

新建的项目中默认带着日志hilog

HiLog日志系统,提供给系统框架、服务、以及应用,用于打印日志,记录用户操作、系统运行状态等。开发者可以通过hilog命令行查询相关日志信息。

关于HiLog的相关内容请查阅官方文档:《HarmonyOS NEXT 调测调优之调试命令》

并且将页面的整个生命周期方法都初始化出来,对于新手来说,可以根据日志输出很快的理解整个页面的生命周期:
在这里插入图片描述

启动项目后可以在日志处看到启动顺序:
在这里插入图片描述

2. 解读Demo代码并Copy

在这里插入图片描述
ToDoList的Demo中,项目启动文件是第一个ToDoListPage,我们接下来建立ArkTsFile:ToDoListPage.ets
ToDoListPage代码解读:

    1. 在Demo中的ToDoListPage.ets文件中,用的注解分别是@Entity和@Component。
    1. 在DataModel中初始化了getData()的方法,这个方法直接从CommonConstants获取定义的常量TODO_DATA.
      在这里插入图片描述 在这里插入图片描述

3、常量数据及静态资源文件

AppStore下的resources

在上一段内容中,我们可以看到代码中常用到的常量数据都存储在ets/common/constant/CommonConstant.ts中,但是我们在代码中还发现部分常量数据是存储在App Store的resources目录中,比如string.json文件。
在这里插入图片描述
这样做的优点是:

  1. 本地化(Localization):string.json文件可以包含多语言版本的文本,这使得应用可以支持多种语言,满足不同地区用户的需求。
  2. 可维护性:将常量数据集中存储在一个文件中,方便开发者管理和维护。如果需要更新或添加新的文本,只需修改string.json文件即可。
  3. 版本控制:在版本控制系统中,string.json文件可以与其他资源一起被版本控制,确保资源的完整性。
  4. 资源隔离:将资源文件与代码分离,可以减少代码体积,提高应用的启动速度和运行效率。
  5. 安全性:通过将敏感数据(如用户名、密码等)存储在资源文件中,可以减少代码中的硬编码,提高应用的安全性。
  6. 跨平台一致性:在多平台开发中,使用资源文件可以确保不同平台上的应用表现一致。

在HarmonyOS中,资源文件通常位于resources目录下,该目录位于应用的根目录。在构建过程中,资源文件会被编译成二进制资源,并打包到应用的APK或HAP文件中。当应用运行时,资源文件会被加载到内存中,供应用使用。
总结来说,将常量数据存储在string.json等资源文件中,是为了提高应用的可维护性、安全性,以及支持多语言等需求。

entry下的resources

根据代码的查看,我们还可以看到代码中,引用的部分常量还来自于entry下的resources。
在这里插入图片描述
entry下的resources资源跟AppStore下的resources的区别如下:

  1. 存储位置
    • entry/resources:位于应用的entry目录下,它是应用的入口点,包含应用的启动入口和一些必要的资源。
    • resources:位于应用的根目录下,它包含应用的通用资源,如图标、图片、音频、视频等。
  2. 资源类型
    • entry/resources:通常包含应用的启动界面(如Launcher)和其他启动时所需的资源。
    • resources:包含应用运行过程中所需的各种资源,如界面资源、本地化字符串、图标、媒体文件等。
  3. 构建过程
    • 在构建过程中,entry/resources中的资源会被优先加载,因为它们是应用启动时必须的。
    • resources中的资源在应用启动后会根据需要被加载。
  4. 可访问性
    • entry/resources中的资源可以直接在entry目录下的Java/Kotlin/JS等源文件中直接引用。
    • resources中的资源需要通过资源访问路径进行引用,如@res/drawable/icon.png
  5. 资源打包
    • 在构建过程中,entry/resources中的资源会直接包含在应用的APK/HAP文件中。

resources中的资源会被编译成二进制资源,并打包到应用的APK/HAP文件中。
总的来说,entry/resourcesresources目录都是用于存储应用的资源文件,但它们存储的位置和包含的资源类型不同。entry/resources存储的是应用启动时所需的资源,而resources存储的是应用运行过程中所需的通用资源。正确地使用这两个目录可以提高应用的构建效率和运行性能。

四、效果展示

在这里插入图片描述

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

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

相关文章

linux系统中USB模块鼠标驱动实现

各位开发者大家好,今天主要给大家分享一下,Linux系统中使用libusb的方法以及鼠标驱动实现。 第一:libusb概述 参考网址:* libusb GIT仓库:https://github.com/libusb/libusb.git * libusb 官网:https://libusb.info/ * libusb API接口:https://libusb.sourceforge.io/…

python中logging库使用

文章目录 1、前言2、日志的等级3、logging的基本应用4、logging的进阶应用5、logging的高阶应用6、简单调用7、参考 1、前言 编程代码中,日志的合理使用,能够很好地监控代码的运行过程;在业务部署中,通过日志的记录情况&#xff0…

5G NR 辅同步信号SSS介绍 MATLAB实现

5G NR辅同步信号SSS,和PSS一起包含了小区的全部ID信息,跟NBIOT 和LTE不一样,PSS和SSS并不携带任何的帧信息,只携带帧头同步信息,所以搜索完成PSS和SSS并不知道当前的slot号和帧号,在5G NR中,PSS…

Clion 使用

1. 使用CLion进行ROS开发 安装基本的ROS环境 ROS环境的安装请参考安装ROS。 安装CLion 下载CLion Linux的下载地址如下:CLion 解压CLion 将下载的CLion复制到/opt目录下(你可以解压到适合自己的文件夹,只要保证后续使用的路径一致即可…

黑神话悟空-用签名检查以允许加载 mod .pak(安装MOD可以不用再使用“ -fileopenlog “命令)

安装 下载并解压到 BlackMythWukong\b1\Binaries\Win64 位置参考: 安装此 mod 后,再安装.pak类型MOD时就可以不再使用" -fileopenlog "命令也可以生效了.因为该命令可能会导致在具有常规 HDD 的低配置计算机上卡顿。 下载地址:h…

macos 10.15 Catalina 可用docker最新版本 Docker Desktop 4.15.0 (93002) 下载地址与安装方法

按照docker官方的4.16.0版本发行日志"4.16.0: (2023-01-12 Minimum OS version to install or update Docker Desktop on macOS is now macOS Big Sur (version 11) or later.)" , 这个4.16.0版本就必须要求最低版本os为 11版本, 所以 旧版本的macos 10.15 Catalina …

为了支持XR,3GPP R18都做了哪些增强?

这篇是R18 XR enhancement的第二篇,主要看下从NAS->L3->L2->L1针对XR都做了哪些增强。 1 PDU set QoS 在UL和DL中,XR-Awareness有助于优化gNB无线资源调度,但是这里就依赖于 PDU set和data burst。这两个东西是什么意思?其实PDU set就是由一个或多个 PDU组成,这…

【 OpenHarmony 系统应用源码解析 】-- Launcher 桌面布局

前言 阅读本篇文章之前,有几个需要说明一下: 调试设备:平板,如果你是开发者手机,一样可以加 Log 调试,源码仍然是手机和平板一起分析;文章中的 Log 信息所显示的数值可能跟你的设备不一样&…

C语言中的“#”和“##”

目录 开头1.什么是#?2.什么是##?3.#和##的实际应用输出变量的名字把两个符号连接成一个符号输出根据变量的表达式…… 下一篇博客要说的东西 开头 大家好,我叫这是我58。在今天,我们要学一下关于C语言中的#和##的一些知识。 1.什么是#? #&#xff0…

Datawhale X 李宏毅苹果书 AI夏令营-深度学入门task2:线性模型

1.线性模型 把输入的特征 x 乘上一个权重,再加上一个偏置就得到预测的结果,这样的模型称为线性模型(linear model) 2.分段线性模型 线性模型也许过于简单,x1 跟 y 可能中间有比较复杂的关系。线性模型有很大的限制&…

上书房信息咨询:商标相似性评估调研

商标相似性评估调研可以帮助确定商标之间的相似性程度,为商标注册、商标权利维护和商标侵权案件提供参考依据。以下是进行商标相似性评估调研的一般步骤: 1、收集商标信息:收集相关商标的注册证书、商标注册申请、商标注册公告等信息&#x…

【测试】——开发模型与测试模型

📖 前言:在软件开发过程中,理解和应用合适的开发模型与测试模型至关重要。本文将详细介绍几种常见的开发模型,如瀑布模型、螺旋模型、增量模型和敏捷过程,以及测试模型如V模型和W模型。 目录 🕒 1. 开发模型…

Mobile-Agent赛题分析和代码解读笔记(DataWhale AI夏令营)

前言 你好,我是GISer Liu,一名热爱AI技术的GIS开发者,本文是DataWhale 2024 AI夏令营的最后一期——Mobile-Agent赛道,关于赛题分析和代码解读的学习文档总结;这边作者也会分享自己的思路; 本文是对原视频的…

18045 前一个和后一个字符

### 思路 1. 读取输入的字符。 2. 判断输入是否为数字字符: - 如果不是数字字符,输出“error”。 - 如果是数字字符,进行以下判断: - 如果输入是0,输出“first”和1。 - 如果输入是9,输出8…

MACOS安装配置前端开发环境

官网下载安装Mac版本的谷歌浏览器以及VS code代码编辑器,还有在App Store中直接安装Xcode(里面自带git); node.js版本管理器nvm的下载安装如下: 参考B站:https://www.bilibili.com/video/BV1M54y1N7fx/?sp…

【Python 千题 —— 基础篇】评论倾向分析

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目描述 在某个电商平台的评论系统中,用户可以提交商品评论。为了分析评论的情感倾向,我们需要编写一个程序来处理用户评论,并对评论内容进行简单的分析和处理。…

在java中如何使用etcd的v2 和v3 api获取配置,并且对配置的变化进行监控和监听

etcd 和zookeeper 很像,都可以用来做配置管理。并且etcd可以在目前流行的Kubernetes中使用。 但是etcd 提供了v2版本合v3的版本的两种api。我们现在分别来介绍一下这两个版本api的使用。 一、Etcd V2版本API 1、java工程中使用maven引入 etcd v2的java api操作ja…

Pytorch实现自然风光图像场景分类识别(含训练代码和数据集)

Pytorch实现自然风光图像场景分类识别(含训练代码和数据集) 目录 Pytorch实现自然风光图像场景分类识别(含训练代码和数据集) 1. 前言 2. 自然风光图像场景分类数据集 (1)自然风光图像场景分类数据集 (2)自定义数据集 3. 自…

震惊!更换GPU会改变LLM的行为

文章目录 新发现前言1. Why this article ?2. Setup the experimentation3. The experiment results:A100/A10/30904. Why is it different?5. Why do the calculation differ depending on the GPU ?结论 新发现 最近在做RAG相关的工作,偶然间发现&a…

swift自定义数据集微调Qwen-7B大模型,转换模型后使用ollama跑起来

前文:swift微调Qwen-7B大模型-CSDN博客 我详细介绍了swift如何进行微调,但数据集均来自魔搭社区,如何想训练自定义数据集,实际上也很简单。 一、自定义数据集微调 export MKL_THREADING_LAYERGNU \ CUDA_VISIBLE_DEVICES0,1,2…