鴻蒙HarmonyOS 開發簡介

鴻蒙開發入門教程

一、技術簡介

鴻蒙操作系統(HarmonyOS)是面向萬物互聯時代的全場景分布式操作系統,具備分布式軟總線、分布式數據管理、分布式任務調度等核心能力,能讓設備間實現無縫連接與協同,為用戶提供統一、流暢的交互體驗。
開發語言方面,ArkTS 是專門為鴻蒙開發設計的語言,結合了 TypeScript 的類型系統與聲明式編程范式,提升了開發效率和代碼的可維護性。值得一提的是功能寫法也和前端VUE框架頗為相似,相信在我國具有大基數的前端開發者會很容易上手吧

二、工具安裝

  1. 下載 DevEco Studio
    訪問 華為開發者官網,在官網找到 DevEco Studio 的下載鏈接,依據自身操作系統(Windows、Mac 或 Linux)選擇合適版本下載。
  2. 安裝 DevEco Studio
    運行下載好的安裝程序,按照提示完成安裝。安裝過程中可按需選擇安裝路徑和組件。
  3. 配置 SDK
    打開 DevEco Studio,選擇 “Tools” -> “SDK Manager”,在 “SDK Platforms” 中選擇所需的鴻蒙 SDK 版本進行下載安裝;在 “SDK Tools” 中安裝必要工具,如 Build Tools、Platform - Tools 等。
  4. 創建項目
    打開 DevEco Studio,點擊 “File” -> “New” -> “New Project”,選擇基于 ArkTS 的項目模板(如 “Empty Ability (ArkTS)”),點擊 “Next”,配置項目信息(項目名稱、保存位置、包名等),最后點擊 “Finish” 完成項目創建。

三、核心單元介紹

  1. Ability
    Ability 是鴻蒙應用的基本功能單元,負責處理應用的各種能力和業務邏輯。分為 FA(Feature Ability)和 PA(Particle Ability)。
    FA(Feature Ability)
    用于實現具有用戶界面的功能,類似于 Android 中的 Activity。通常用于展示界面、與用戶交互等。
// 在 pages 目錄下創建 Index.ets 文件
@Entry
@Component
struct Index {build() {Column({ space: 50 }) {Text('This is a Feature Ability page.').fontSize(30).width('100%').textAlign(TextAlign.Center)}.width('100%')}
}
PA(Particle Ability)

用于實現無用戶界面的功能,如后臺服務、數據處理等,類似于 Android 中的 Service。

// 在 service 目錄下創建 MyService.ets 文件
@Service
@Component
struct MyService {onStart() {console.log('MyService started.')// 在這里可以執行后臺任務,如數據同步、定時任務等}onStop() {console.log('MyService stopped.')}
}

2. Module

Module 是對 Ability 的進一步封裝,包含多個 Ability 以及相關的資源和配置信息,便于對應用功能進行模塊化管理。在 config.json 中可以對 Module 進行配置,例如指定 Module 的名稱、包含的 Ability 等。

{"module": {"name": "entry","reqPermissions": [{"name": "ohos.permission.INTERNET","reason": "Need internet access to fetch data","usedScene": {"ability": ["com.example.myapp.MainAbility"],"when": "always"}}],"abilities": [{"name": "com.example.myapp.MainAbility","icon": "$media:icon","label": "$string:mainability_label","srcEntrance": "pages/Index.ets","description": "$string:mainability_description","type": "page","launchType": "standard"},{"name": "com.example.myapp.MyService","srcEntrance": "service/MyService.ets","description": "$string:myservice_description","type": "service"}]}
}

四、重要 UI 組件

  1. Text
    用于顯示文本內容。
@Entry
@Component
struct Index {build() {Text('Hello, HarmonyOS!').fontSize(30).fontWeight(FontWeight.Bold).textAlign(TextAlign.Center)}
}

2. Button

用于觸發操作。

@Entry
@Component
struct Index {@State clickCount: number = 0build() {Column({ space: 50 }) {Text(`Button clicked ${this.clickCount} times.`).fontSize(20).width('100%').textAlign(TextAlign.Center)Button('Click me').onClick(() => {this.clickCount++}).width('50%').margin({ left: '25%' })}.width('100%')}
}

3. Image

用于顯示圖片。

@Entry
@Component
struct Index {build() {Image($r('app.media.sample_image')).width(200).height(200).objectFit(ImageFit.Contain).margin({ top: 100 }).width('100%').imageAlign(ImageAlign.Center)}
}

4. Column 和 Row

用于布局組件,Column 實現垂直布局,Row 實現水平布局。

@Entry
@Component
struct Index {build() {Column({ space: 20 }) {Text('Vertical Item 1')Text('Vertical Item 2')Row({ space: 20 }) {Text('Horizontal Item 1')Text('Horizontal Item 2')}}.width('100%')}
}

五、常用功能

1. 條件渲染

根據條件決定是否渲染組件。

@Entry
@Component
struct Index {@State showText: boolean = falsebuild() {Column({ space: 50 }) {Button(this.showText? 'Hide Text' : 'Show Text').onClick(() => {this.showText =!this.showText}).width('50%').margin({ left: '25%' })if (this.showText) {Text('This text is conditionally rendered.').fontSize(20).width('100%').textAlign(TextAlign.Center)}}.width('100%')}
}

2. 列表渲染

使用 ForEach 組件渲染列表數據。

@Entry
@Component
struct Index {private fruits: string[] = ['Apple', 'Banana', 'Cherry']build() {Column({ space: 20 }) {ForEach(this.fruits, (fruit) => {Text(fruit).fontSize(20).width('100%').textAlign(TextAlign.Center)}, (fruit) => fruit)}.width('100%')}
}

3. 頁面導航

在不同頁面間進行導航。

// 在 pages 目錄下創建 SecondPage.ets 文件
@Component
struct SecondPage {build() {Column({ space: 50 }) {Text('This is the second page.').fontSize(30).width('100%').textAlign(TextAlign.Center)Button('Go back to first page').onClick(() => {router.back()}).width('50%').margin({ left: '25%' })}.width('100%')}
}// 在 Index.ets 中添加導航按鈕
@Entry
@Component
struct Index {build() {Column({ space: 50 }) {Text('This is the first page.').fontSize(30).width('100%').textAlign(TextAlign.Center)Button('Go to second page').onClick(() => {router.pushUrl({ url: 'pages/SecondPage' })}).width('50%').margin({ left: '25%' })}.width('100%')}
}

六、常用函數

1. onClick

用于綁定按鈕等組件的點擊事件。

@Entry
@Component
struct Index {@State message: string = 'Button not clicked'build() {Button('Click me').onClick(() => {this.message = 'Button clicked!'})Text(this.message).fontSize(20).width('100%').textAlign(TextAlign.Center)}
}

2. onChange

用于綁定輸入框等組件的值變化事件。

@Entry
@Component
struct Index {@State inputValue: string = ''build() {Column({ space: 20 }) {Input({ placeholder: 'Enter text' }).onChange((value: string) => {this.inputValue = value})Text(`You entered: ${this.inputValue}`).fontSize(20).width('100%').textAlign(TextAlign.Center)}.width('100%')}
}

3. router.pushUrl 和 router.back

用于頁面導航,router.pushUrl 用于跳轉到指定頁面,router.back 用于返回上一頁,如前面頁面導航示例所示。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72149.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72149.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72149.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker和containerd從TLS harbor拉取鏡像

私有鏡像倉庫配置了自簽名證書,https訪問,好處是不需要處理免費證書和付費證書帶來的證書文件變更,證書文件變更后需要重啟服務,自簽名證書需要將一套客戶端證書存放在/etc/docker/cert.d目錄下,或者/etc/containerd/c…

linux ununtu通過nginx-1.6.2.tar.gz安裝nginx并安裝在自定義目錄XXX下 的步驟

Ubuntu 下通過源碼安裝 Nginx 1.6.2 到自定義目錄 /home/aot/nginx 的步驟 以下是將 Nginx 1.6.2 源碼包離線安裝到自定義目錄的詳細流程,包含依賴管理、編譯配置和服務管理: 一、準備工作 1. 下載源碼包和依賴(需聯網環境準備)…

C++ 變量的輸入輸出教程

一、變量的基本概念 在 C 中,變量是用于存儲數據的命名內存位置。在使用變量之前,需要先聲明它的類型和名稱,這樣編譯器才能為其分配適當大小的內存空間。例如: int age; // 聲明一個整型變量 age double salary; // 聲明一個…

React底層常見的設計模式

在React中,常見的設計模式為開發者提供了結構化和可重用的解決方案,有助于提高代碼的可維護性和可擴展性。以下是對React中幾種常見設計模式的詳細解析,并附上示例代碼和注釋: 1. 容器組件與展示組件模式(Container/P…

【MATLAB例程】三維下的IMM(交互式多模型),模型使用CV(勻速)和CA(勻加速)

給出三維下的交互式多模型(IMM)matlab例程,模型使用勻速運動CV和勻加速運動CA,濾波使用EKF(擴展卡爾曼濾波) 文章目錄 代碼運行結果程序結構 代碼講解模型定義:軌跡生成:IMM核心流程…

物理內存組織與分配的核心概念

在 Linux 內核內存管理(尤其是 Buddy System 伙伴系統)中,node、zone、type 和 order 是描述物理內存組織與分配的核心概念。以下是它們的詳細解釋: 1. Node(NUMA 節點) 定義: 在 NUMA&#xf…

智科技賦能寵物關懷新時代

在科技日新月異的今天,智能寵物監控技術正悄然引領寵物護理領域的新變革。借助尖端的傳感器技術、高清攝像頭以及強大的數據分析能力,這些智能系統為寵物主人開辟了前所未有的寵物關懷途徑,讓愛與關懷跨越時空限制。 智能寵物監控系統的核心…

SOME/IP 教程知識點總結

總結關于SOME/IP的教程,首先通讀整個文件,理解各個部分的內容。看起來這個教程從介紹開始,講到了為什么在車輛中使用以太網,然后詳細講解了SOME/IP的概念、序列化、消息傳遞、服務發現(SOME/IP-SD)、發布/訂閱機制以及支持情況。 首先,我需要確認每個章節的主要知識點。…

playbin之autoplug_factories源碼剖析

一、autoplug_factories_cb /* Called when we must provide a list of factories to plug to pad with caps.* We first check if we have a sink that can handle the format and if we do, we* return NULL, to expose the pad. If we have no sink (or the sink does not…

58區間和+44開發商購買土地(前綴和)

58. 區間和(第九期模擬筆試) 題目描述 給定一個整數數組 Array,請計算該數組在每個指定區間內元素的總和。 輸入描述 第一行輸入為整數數組 Array 的長度 n,接下來 n 行,每行一個整數,表示數組的元素。…

laravel11設置中文語言包

安裝中文語言包 Laravel 11 默認沒有內置完整中文語言包,推薦使用第三方維護的完整翻譯: # 通過 Composer 安裝語言包 composer require laravel-lang/common --dev# 發布中文語言文件到項目 php artisan lang:add zh_CN這會自動將中文語言文件生成到 l…

智能文檔解析與語義分割:LlamaIndex 節點解析器模塊全解

節點解析器模塊 - LlamaIndex 文件內容的節點解析器 有幾種基于文件的節點解析器,它們會根據解析的內容類型(JSON、Markdown 等)創建節點。 最簡單的流程是將 FlatFileReader 與 SimpleFileNodeParser 結合使用,自動為每種內容類型選擇最佳節點解析器。然后,可以將基于…

實現遍歷Windows所有字體的基本屬性

參考podofo #include <windows.h> #include <string> #include <memory> #include <set> #include <unordered_map> #include <vector> #include <algorithm> #include <iostream> #include <iomanip> #include <fst…

postman--接口測試工具安裝和使用教程

postman–接口測試工具 postman是一款支持http協議的接口調試與測試工具&#xff0c;其主要特點就是功能強大&#xff0c;使用簡單且易用性好 。 無論是開發人員進行接口調試&#xff0c;還是測試人員做接口測試&#xff0c;postman都是我們的首選工具之一 。 下面先通過一張…

綜合練習 —— 遞歸、搜索與回溯算法

目錄 一、1863. 找出所有子集的異或總和再求和 - 力扣&#xff08;LeetCode&#xff09; 算法代碼&#xff1a; 代碼思路 問題分析 核心思想 實現細節 代碼解析 初始化 DFS 函數 時間復雜度 空間復雜度 示例運行 輸入 運行過程 總結 二、 47. 全排列 II - 力扣&a…

代碼隨想錄算法訓練day64---圖論系列8《拓撲排序dijkstra(樸素版)》

代碼隨想錄算法訓練 —day64 文章目錄 代碼隨想錄算法訓練前言一、53. 117. 軟件構建—拓撲排序二、47. 參加科學大會---dijkstra&#xff08;樸素版&#xff09;總結 前言 今天是算法營的第64天&#xff0c;希望自己能夠堅持下來&#xff01; 今天繼續圖論part&#xff01;今…

學術小助手智能體

學術小助手&#xff1a;開學季的學術領航員 文心智能體平臺AgentBuilder | 想象即現實 文心智能體平臺AgentBuilder&#xff0c;是百度推出的基于文心大模型的智能體平臺&#xff0c;支持廣大開發者根據自身行業領域、應用場景&#xff0c;選取不同類型的開發方式&#xff0c;…

JavaScript 簡單類型與復雜類型-復雜類型傳參

在JavaScript中&#xff0c;變量根據其存儲的數據類型可分為簡單類型&#xff08;基本數據類型&#xff09;和復雜類型&#xff08;引用數據類型&#xff09;。理解這兩者在函數調用時的行為差異對于編寫高效且無誤的代碼至關重要。本文將專注于探討復雜類型的參數傳遞機制&…

L2-043 龍龍送外賣(dfs)

龍龍是“飽了呀”外賣軟件的注冊騎手&#xff0c;負責送帕特小區的外賣。帕特小區的構造非常特別&#xff0c;都是雙向道路且沒有構成環 —— 你可以簡單地認為小區的路構成了一棵樹&#xff0c;根結點是外賣站&#xff0c;樹上的結點就是要送餐的地址。 每到中午 12 點&#…

如何基于PyTorch做二次開發

基于PyTorch進行二次開發以實現可視化工程&#xff0c;可以從以下幾個方面入手&#xff1a;模型結構可視化、訓練過程監控、特征可視化等。以下是一些推薦的GitHub項目&#xff0c;這些項目可以幫助你快速搭建一個可視化的工程環境&#xff1a; ### 1. **PyTorch CNN Visualiz…