鸿蒙保姆级教学
鸿蒙(HarmonyOS)是华为推出的一款面向全场景的分布式操作系统,支持手机、平板、智能穿戴、智能家居、车载设备等多种设备。鸿蒙系统的核心特点是分布式架构、一次开发多端部署和高性能。以下是从入门到大神级别的鸿蒙开发深度分析,结合代码示例,帮助你逐步掌握鸿蒙开发。
1. 鸿蒙开发入门
1.1 环境搭建
鸿蒙编译器安装运行教程
- 安装 DevEco Studio:
- 下载并安装 DevEco Studio,这是鸿蒙官方提供的集成开发环境(IDE)。
- 配置 SDK:
- 打开 DevEco Studio,安装 HarmonyOS SDK。
- 创建项目:
- 选择模板(如 Empty Ability),创建第一个鸿蒙应用。
1.2 鸿蒙应用的基本结构
一个鸿蒙应用通常包括以下部分:
entry:主模块,包含应用的代码和资源。src/main/js/default:JavaScript 代码目录。src/main/resources:资源文件目录(如图片、布局文件)。config.json:应用配置文件,声明权限、设备类型等。
1.3 Hello World 示例
以下是一个简单的鸿蒙应用示例,显示 “Hello World”。
1.3.1 index.hml(布局文件)
<!-- src/main/js/default/pages/index/index.hml -->
<div class="container"><text class="title">Hello World</text>
</div>
1.3.2 index.css(样式文件)
/* src/main/js/default/pages/index/index.css */
.container {display: flex;justify-content: center;align-items: center;height: 100%;
}.title {font-size: 50px;color: #000000;
}
1.3.3 index.js(逻辑文件)
// src/main/js/default/pages/index/index.js
export default {data: {title: 'Hello World',},
};
2. 鸿蒙中级开发
2.1 页面跳转
鸿蒙支持通过路由实现页面跳转。
2.1.1 添加第二个页面
在 pages 目录下创建 detail 页面:
detail.hmldetail.cssdetail.js
2.1.2 修改 index.js
// src/main/js/default/pages/index/index.js
export default {data: {title: 'Hello World',},jumpToDetail() {router.push({uri: 'pages/detail/detail', // 跳转到详情页});},
};
2.1.3 修改 index.hml
<!-- src/main/js/default/pages/index/index.hml -->
<div class="container"><text class="title" onclick="jumpToDetail">{{title}}</text>
</div>
2.2 数据绑定
鸿蒙支持双向数据绑定,通过 {{}} 语法实现。
2.2.1 修改 index.js
// src/main/js/default/pages/index/index.js
export default {data: {title: 'Hello World',count: 0,},increment() {this.count++;},
};
2.2.2 修改 index.hml
<!-- src/main/js/default/pages/index/index.hml -->
<div class="container"><text class="title">{{title}}</text><text class="count">Count: {{count}}</text><button class="button" onclick="increment">Increment</button>
</div>
2.3 组件开发
鸿蒙支持自定义组件,可以将重复的 UI 逻辑封装为组件。
2.3.1 创建自定义组件
在 components 目录下创建 MyButton 组件:
MyButton.hmlMyButton.cssMyButton.js
2.3.2 使用自定义组件
在 index.hml 中引入组件:
<!-- src/main/js/default/pages/index/index.hml -->
<element name="MyButton" src="../../components/MyButton/MyButton.hml"></element>
<div class="container"><MyButton></MyButton>
</div>
3. 鸿蒙高级开发
3.1 分布式能力
鸿蒙的核心特性是分布式能力,支持多设备协同。
3.1.1 设备发现与连接
使用 @ohos.distributedHardware 模块实现设备发现与连接。
import deviceManager from '@ohos.distributedHardware.deviceManager';// 发现设备
deviceManager.startDeviceDiscovery({discoverCallback: (deviceInfo) => {console.log('Discovered device:', deviceInfo);},
});// 连接设备
deviceManager.connectDevice({deviceId: 'deviceId',connectCallback: (result) => {console.log('Connected to device:', result);},
});
3.1.2 分布式数据管理
使用 @ohos.data.distributedData 模块实现跨设备数据共享。
import distributedData from '@ohos.data.distributedData';// 创建分布式数据库
const kvManager = distributedData.createKVManager({bundleName: 'com.example.myapp',
});const kvStore = kvManager.getKVStore({storeId: 'myStore',options: {createIfMissing: true,},
});// 写入数据
kvStore.put({key: 'name',value: 'HarmonyOS',
}, (err) => {if (!err) {console.log('Data saved successfully');}
});// 读取数据
kvStore.get({key: 'name',
}, (err, data) => {if (!err) {console.log('Data retrieved:', data);}
});
3.2 性能优化
-
减少主线程阻塞:
- 使用
Worker线程处理耗时任务。
const worker = new Worker('workers/myWorker.js'); worker.postMessage('Start working'); worker.onmessage = (event) => {console.log('Worker result:', event.data); }; - 使用
-
懒加载:
- 使用
router.replace或动态导入组件,减少初始加载时间。
- 使用
-
内存优化:
- 及时释放不再使用的资源,避免内存泄漏。
3.3 跨设备适配
鸿蒙支持一次开发多端部署,通过自适应布局和资源管理实现跨设备适配。
3.3.1 自适应布局
使用 mediaquery 实现响应式布局。
/* src/main/resources/base/media/query.css */
@media screen and (device-type: phone) {.container {width: 100%;}
}@media screen and (device-type: tablet) {.container {width: 50%;}
}
3.3.2 资源管理
在 src/main/resources 目录下为不同设备提供资源文件:
base:默认资源。phone:手机设备资源。tablet:平板设备资源。
4. 从入门到大神的进阶路线
-
入门:
- 掌握鸿蒙应用的基本结构和开发流程。
- 实现简单的页面和数据绑定。
-
中级:
- 学习页面跳转、组件开发和分布式能力。
- 实现多设备协同和数据共享。
-
高级:
- 深入理解鸿蒙的分布式架构和性能优化。
- 开发复杂的跨设备应用。
-
大神:
- 参与开源项目,贡献代码。
- 深入研究鸿蒙内核和底层原理。
5. 总结
鸿蒙开发从入门到大神级别需要逐步掌握基础知识、分布式能力和性能优化技术。通过不断实践和探索,你可以成为鸿蒙开发领域的专家。希望以上内容对你有所帮助!
相关文章:
鸿蒙保姆级教学
鸿蒙(HarmonyOS)是华为推出的一款面向全场景的分布式操作系统,支持手机、平板、智能穿戴、智能家居、车载设备等多种设备。鸿蒙系统的核心特点是分布式架构、一次开发多端部署和高性能。以下是从入门到大神级别的鸿蒙开发深度分析,…...
w264民族婚纱预定系统
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
Compose 实践与探索十五 —— 自定义触摸
1、自定义触摸与一维滑动监测 之前我们在讲 Modifier 时讲过如下与手势检测相关的 Modifier: Modifier.clickable { } Modifier.combinedClickable { } Modifier.pointerInput {detectTapGestures { } }这里对以上内容就不再赘述了,直接去讲解更复杂的…...
炫酷的3D按钮效果实现 - CSS3高级特性应用
炫酷的3D按钮效果实现 - CSS3高级特性应用 这里写目录标题 炫酷的3D按钮效果实现 - CSS3高级特性应用项目介绍核心技术实现1. 基础结构设计2. 视觉效果实现2.1 背景渐变2.2 立体感营造 3. 交互动效设计3.1 悬停效果3.2 按压效果 技术要点分析1. 深度层次感2. 动画过渡3. 性能优…...
Flutter小白零基础入门到高级项目实战全集
Flutter零基础入门到高级项目实战全集内容如下: Dart入门基础教程16讲、Null safety 、late 关键字、空类型声明符?、非空断言!、required 、Flutter入门基础、Flutter瀑布流布局、Flutter动画、Flutter异步流、GlobalKey 、Flutter国际化、…...
teaming技术
一.介绍 在CentOS 6与RHEL 6系统中,双网卡绑定采用的是bonding技术。到了CentOS 7,不仅能继续沿用bonding,还新增了teaming技术。在此推荐使用teaming,因其在查看与监控方面更为便捷 。 二.原理 这里介绍两种最常见的双网卡绑定…...
前端开发:Vue以及Vue的路由
Vue是什么 警告:本文作者是底层程序员,对Vue只是偶尔用到,研究并不深入,对Vue的理解可能非常肤浅甚至存在错误,请多包含。以下文字只为外行记录分享,专业前端朋友可以略过。 作为一个底层老程序员&#x…...
【JavaEE进阶】Linux常用命令
目录 🍃前言 🌴pwd 与 ls 🚩pwd 🚩ls 🎍cd 🌲mkdir与touch 🚩mkdir 🚩touch 🍀cat与rm 🚩cat 🚩rm 🎋vim 🚩…...
【FastGPT】利用知识库创建AI智能助手
【FastGPT】利用知识库创建AI智能助手 摘要创建知识库上传文档创建应用准备提示词准备开场白关联知识库AI回答效果 摘要 关于FastGPT的部署,官方提供了docker-compose方式的部署文档,如果使用的是podman和podman-compose的同学,可以参考这篇…...
【DeepSeek 学c++】dynamic_cast 原理
用于向下转化。 父类引用指向指类对象 假设父亲是a, 子类是b. B* pb new B; 子类对象 A* pa 父类引用指向子类对象, 那么向上转化 Apa pb 这个是自动完成的,隐式转化,不需要dynamic_cast 向下转化指的是 A pa new B。 这个是指向子类对象…...
设计一套水产养殖系统
设计一套水产养殖系统 引言 水产养殖在全球粮食安全和经济发展中日益重要。它不仅为不断增长的人口提供了重要的蛋白质来源,还在许多地区创造了就业机会并促进了经济增长 。全球超过一半的人类消费的海产品来自水产养殖,并且这一比例预计将继续上升 。…...
【递归,搜索与回溯算法篇】- 名词解释
一. 递归 1. 什么是递归? 定义: 函数自己调用自己的情况关键点: ➀终止条件: 必须明确递归出口,避免无限递归 ➁子问题拆分: 问题需能分解成结构相同的更小的子问题缺点: ➀栈溢出风险&#x…...
以mysql 为例, 在cmd 命令行连接数据,操作数据库,关闭数据库的详细步骤
以下是使用 Windows 命令行(cmd) 操作 MySQL 的详细步骤,涵盖 连接数据库、基本操作、关闭数据库 的全流程: 1. 确保 MySQL 服务已启动 步骤: 打开命令行(cmd) 按 Win R,输入 cmd&…...
【数学建模】TOPSIS法简介及应用
文章目录 TOPSIS法的基本原理TOPSIS法的基本步骤TOPSIS法的应用总结 在 多目标决策分析中,我们常常需要在多个选择中找到一个最优解。 TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)法是一个广泛应用的决策方法…...
Beans模块之工厂模块注解模块@Qualifier
博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…...
清晰易懂的 Conda 彻底卸载与清理教程
一、Windows 系统卸载 Conda(Anaconda/Miniconda) 步骤 1:通过控制面板卸载主程序 打开 控制面板 → 程序 → 程序和功能。在列表中找到 Anaconda 或 Miniconda,右键选择 卸载。 提示:若安装的是 Miniconda 且未通过…...
pytorch小土堆学习有感
一、环境修改问题 pip install tensorboard pip uninstall tensorboard pip install tensorboard2.12.0 常用pip install torch来安装pytorch 版本合适才可以用的哈。 二、控制台和代码调试 变量可以在控制台方便查看 或者点行号左边打一个断点,便于使用deb…...
ChatTTS 开源文本转语音模型本地部署 API 使用和搭建 WebUI 界面
ChatTTS(Chat Text To Speech),专为对话场景设计的文本生成语音(TTS)模型,适用于大型语言模型(LLM)助手的对话任务,以及诸如对话式音频和视频介绍等应用。支持中文和英文,还可以穿插笑声、说话间的停顿、以…...
【linux】统信操作系统修改默认编辑模式从nano改为vim
统信操作系统修改默认编辑模式从nano改为vim 适用命令update-alternatives --config editor rootuos-PC:~# update-alternatives --config editor 有 3 个候选项可用于替换 editor (提供 /usr/bin/editor)。选择 路径 优先级 状态 ---------------------…...
单一职责原则开闭原则其他开发原则
一、单一职责原则(Single Responsibility Principle, SRP) 定义 一个类应该有且仅有一个引起它变化的原因(即一个类只负责一个职责)。 核心思想 高内聚:类的功能高度集中 低耦合:减少不同职责之间的相互影…...
数据结构---图的深度优先遍历(DFS)
一、与树的深度优先遍历之间的联系 1.类似于树的先根遍历。 递归访问各个结点: 2.图的深度优先遍历 先设置一个数组,初始值全部设置为false,先访问一个结点,在用一个循环,依次检查和这个结点相邻的其他结点,…...
健康养生:拥抱生活,从呵护身心开始
在这个瞬息万变的时代,人们好似不停旋转的陀螺,在忙碌中迷失了对健康的关注。然而,健康养生绝非可有可无的点缀,它是幸福生活的基石,如同阳光与空气,滋养并支撑着我们的生命。当我们懂得拥抱健康养生&#…...
基线定位系统:长基线与超短基线的原理与应用
基线定位系统:长基线与超短基线的原理与应用 在测量、导航、天文等领域,基线是两个已知位置之间的距离或方向,常用于三角测量、卫星定位等方法来确定其他位置的相对关系。本文将深入探讨长基线(Long Baseline, LBL)与…...
QT网页显示的几种方法及对比
一.直接跳转打开网页 1.使用QDesktopServices::openUrl调用系统浏览器 原理:直接调用操作系统默认浏览器打开指定URL,不在应用程序内嵌入网页。 优点: 实现简单,无需额外模块或依赖。 适用于仅需跳转外部浏览器的场景。 缺点&…...
深入浅出理解LLM PPO:基于verl框架的实现解析之一
1. 写在前面 强化学习(Reinforcement Learning,RL)在大型语言模型(Large Language Model,LLM)的训练中扮演着越来越重要的角色。特别是近端策略优化(Proximal Policy Optimization,PPO)算法,已成为对齐LLM与人类偏好的主流方法之一。本文将基于verl框架(很多复刻De…...
Linux python 安装 conda(内部自带的有python的版本了)
位置网站 https://repo.anaconda.com/miniconda/也可以在https://www.anaconda.com/download/success 官方下载之后方linux中 切换路径之后 执行 bash Miniconda3-py310_25.1.1-2-Linux-x86_64.sh [rootVM-4-5-centos ~]# [rootVM-4-5-centos ~]# uname -a Linux VM-4-5-cen…...
git原理与常用命令及其使用
认识工作区、暂存区、版本库 ⼯作区:是在电脑上你要写代码或⽂件的⽬录。 暂存区:英⽂叫 stage 或 index。⼀般存放在 .git ⽬录下的 index ⽂件(.git/index)中,我们 把暂存区有时也叫作索引(index…...
19681 01背包
19681 01背包 ⭐️难度:中等 🌟考点:动态规划、01背包 📖 📚 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int N 10001…...
Guava:Google开源的Java工具库,太强大了
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
多阶段构建实现 Docker 加速与体积减小:含文件查看、上传及拷贝功能的 FastAPI 应用镜像构建
本文围绕使用 Docker 构建 FastAPI 应用镜像展开,着重介绍了多阶段构建的 Dockerfile 编写及相关操作。借助多阶段构建,不仅实现了 Docker 构建的加速,还有效减小了镜像体积。 1. Dockerfile 内容 以下是我们要使用的 Dockerfile 内容&…...
