当前位置: 首页 > news >正文

HarmonyOS ArkTS基础知识

概述

上一节,学习了TypeScript的基础语法,而在鸿蒙开发当中,有基于自己的编程语言,便是ArkTS。它是一种声明式UI的编程范式的语言,开发框架如下图所示:

根据框架图,分析,我将它大致分为4层:

上层为UI范式,在早期的Web开发中,我们知道(HTML,CSS,JS)为三大基石,每一个部分都要学习,并且很杂。后进入移动互联网时代后,PC的页面也渐渐的往移动设备倾斜。而各大厂牌也推出了相应的前端开发框架,比如Vue,FaceBook的React Native,谷歌的Flutter等,在跨平台和前端页面的开发中,都有一定的应用。在ArkTS中,保留了前端开发的UI范式,可能这也是鸿蒙基于TS的初衷吧,能让纯前端开发者更好的衔接鸿蒙,降低门槛。

进入中层,是方舟编译器和后端引擎,渲染引擎,简单来说,上层面向开发者,代表友好,而编译器和引擎的好坏,就是效率。

再往下,是平台适配和桥接层,类似于跨语言的支持,跨平台,多设备的可移植性,扩展性。

最后离不开底层操作系统的支持。

练习

进去ArkTS的世界,我们在DevEco中新建项目,在entry-src-main-etc-pages-index.ets里编写如下示例(无须编译,也跑不通),来进行代码分析。


@Component
struct ListItemComponent{@State isChange:boolean = false;          //装饰器build(){                                  //UI描述Row(){                                  //内置组件Text(this.name).width(ItemStyle.LAYOUT_WEIGHT_CENTER).fontSize(FontSize.MIDDlE)           //属性方法Text(this.vote).width(ItemStyle.LAYOUT_WEIGHT_CENTER).fontSize(FontSize.SMALL)}.height(ItemStyle.BAR_HEIGHT).width(WEIGHT).onClick(()=>{                       //事件方法this.isChange = !this.isChange;})}
}

解析如下,可以看到

@Entry.       默认入口装饰器.     

@Component 是常用的装饰器,代表自定义的组件化能力

build().        UI描述

Text().         内置组件:分为基础组件Text,Button,Image,InputText

                                     容器组件Row,Column,Stack,List

onClick().     事件方法

width().         属性方法

 

组件的生命周期函数

aboutToAppear:由自定义组件到build()之前触发,可以用于数据的初始化操作。

aboutToDisappear:自定义组件销毁前触发

  aboutToAppear(){hilog.info(0x0000, `TAG`,  'aboutToAppear');}aboutToDisappear(){}

由Entry修饰的默认入口组件生命周期

onPageShow:组件显示时触发

onBackPress:按下系统返回键触发

onPageHide:按下Home进入后台触发

  onPageShow(){}onBackPress(){}onPageHide(){}

总结

完整的组件说明,可参考下述官网链接:

文档中心

相关文章:

HarmonyOS ArkTS基础知识

概述 上一节,学习了TypeScript的基础语法,而在鸿蒙开发当中,有基于自己的编程语言,便是ArkTS。它是一种声明式UI的编程范式的语言,开发框架如下图所示: 根据框架图,分析,我将它大致…...

嵌入式课后习题第一章解答

嵌入式系统是一种以应用为中心,以计算机技术为基础,软/硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机。它与通用PC的区别主要体现在以下几个方面: 应用针对性:嵌入式系统是专为特定应…...

postMessage

A:端口3000 import React, { useEffect } from react;function App() {useEffect(() > {const childWindow document.getElementById(child).contentWindow;const sendMessageToChild () > {childWindow.postMessage("主页面消息", "http://localhost:…...

挑战100天 AI In LeetCode Day01(1)

挑战100天 AI In LeetCode Day01(1) 一、LeetCode介绍二、LeetCode 热题 HOT 100-12.1 题目2.2 题解 三、面试经典 150 题-13.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目,面向程序…...

大数据疫情分析及可视化系统 计算机竞赛

文章目录 0 前言2 开发简介3 数据集4 实现技术4.1 系统架构4.2 开发环境4.3 疫情地图4.3.1 填充图(Choropleth maps)4.3.2 气泡图 4.4 全国疫情实时追踪4.6 其他页面 5 关键代码最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 大数据疫…...

uniapp调起拨打手机号

您可以使用uniapp提供的API来调起拨打手机号的功能。具体步骤如下&#xff1a; 在template标签内添加一个按钮&#xff0c;例如&#xff1a; <template><view><button type"primary" click"callPhone">拨打客服电话</button><…...

nacos配置中心docker部署、配置及 goLang 集成使用

为什么需要配置中心 平时我们写一个demo的时候&#xff0c;或者说一个单体的应用&#xff0c;都会有一个配置文件&#xff0c;不管是 json文件或者yaml文件&#xff0c;里面包含了redis,mysql,es等信息&#xff0c;如果我们修改了配置文件&#xff0c;往往我们需要重启&#x…...

PubDef:使用公共模型防御迁移攻击

对抗性攻击对机器学习系统的可靠性和安全性构成了严重威胁。通过对输入进行微小的变动&#xff0c;攻击者就可以导致模型生成完全错误的输出。防御这种攻击是一个很活跃的研究领域&#xff0c;但大多数提议的防御措施都存在重大的缺点。 这篇来自加州大学伯克利分校研究人员的…...

【QT5之QFtp模块】编译及使用

下载 传送门&#xff1a;https://github.com/qt/qtftp 或者 git clone https://github.com/qt/qtftp.git 下载ZIP&#xff0c;解压待用。 编辑 使用QtCreator打开qtftp.pro; 修改如下&#xff1a; qtftp.pro中&#xff0c;将第21行注释; src/qftp.pro中&#xff0c;将第4行…...

数据结构 编程1年新手视角的平衡二叉树AVL从C与C++实现②

接下来&#xff0c;是数据的插入 我们需要对数据插入的结点先进行判断&#xff0c;有如下三个情况 当插入的数据value<结点的value&#xff0c;应该递归地插入该结点的左子树&#xff08;的左子树...的左子树&#xff09; 当插入的数据value>结点的value&#xff0c;应…...

代码随想录二刷Day 59

647. 回文子串 这个题的dp定义想不到&#xff0c;递推公式也想不到但是看题解都很容易理解&#xff0c;遍历顺序不太好理解。 class Solution { public:int countSubstrings(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false)…...

由一个自动化脚本运维展开的思考

今天分享一个思路&#xff0c;如何通过脚本集中管理程序的启停。减少人工的介入。 例子 好的&#xff0c;这里有一个基本的shell脚本示例&#xff0c;你可以根据你的具体需求进行修改。 启动脚本&#xff08;start.sh&#xff09;&#xff1a; #!/bin/bash ./test_server_1…...

STM32F103C8T6第二天:按键点灯轮询法和中断法、RCC、电动车报警器(振动传感器、继电器、喇叭、433M无线接收发射模块)

1. 点亮LED灯详解&#xff08;307.11&#xff09; 标号一样的导线在物理上是连接在一起的。 将 PB8 或 PB9 拉低&#xff0c;就可以实现将对应的 LED 灯点亮。常用的GPIO HAL库函数&#xff1a; void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);//I/…...

路由器基础(九):防火墙基础

防火墙 (Fire Wall) 是网络关联的重要设备&#xff0c;用于控制网络之间的通信。外部网络用户的访问必须先经过安全策略过滤&#xff0c;而内部网络用户对外部网络的访问则无须过滤。现在的防火墙还具有隔离网络、提供代理服务、流量控制等功能。 一、三种防火墙技术 常见的…...

免费(daoban)gpt,同时去除广告

一. 内容简介 免费(daoban)gpt&#xff0c;同时去除广告&#xff0c;https://chat18.aichatos.xyz/&#xff0c;也可当gpt用&#xff0c;就是有点广告&#xff0c;大家也可以支持一下 二. 软件环境 2.1 Tampermonkey 三.主要流程 3.1 创建javascript脚本 点击添加新脚本 …...

如何使用Plex在Windows系统上搭建一个全能私人媒体影音站点

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频&#xff0c;已经算是生活中稀松平常的场景了&#xff0c;特别是各…...

vue如何实现视频全屏切换

最近项目开发中遇到一个视频窗口全屏切换功能&#xff0c;为此在这里做个记录。 具体的实现思路&#xff1a; <template><div class"content-box"><div class"container"><div id"screen" class"screen"><…...

Shopee买家通系统一款全自动操作虾皮买家号的软件

Shopee买家通系统可以全自动批量注册虾皮买家号&#xff0c;注册时可以自动调用手机号、自动接收短信验证、自动绑地址及支付卡&#xff0c;注册成功后还能自动绑定邮箱进行验证。 软件支持5个国家使用&#xff0c;越南、泰国、菲律宾、印度尼西亚、马来西亚。 内置防指纹技术 …...

希亦内衣洗衣机和小米哪个品牌好?内衣洗衣机横评对比

内衣洗衣机作为一种小型家电&#xff0c;受到越来越多人的欢迎。内衣洗衣机虽然体积小&#xff0c;但功能并不简单。我们可以选择具备多种洗涤模式、容量适中、节能环保的洗衣机&#xff0c;以满足我们的不同需求。那么面对希亦以及小米这两个热门的洗衣机品牌&#xff0c;我们…...

下载安装各种版本的Vscode以及解决VScode官网下载慢的问题

下载指定版本 在Vscode官网 Vscode官网更新子页 这里的左侧栏点击其中一个会跳转到某个版本&#xff0c;或者在官网子页 https://code.visualstudio.com/updates的后面跟上需要的版本号即可完成目标版本下载页面的跳转 选择Linux里的ARM包不会自动下载而是跳转到另一个页面 …...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式&#xff0c;给定一个隐函数关系&#xff1a; F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 &#x1f9e0; 目标&#xff1a; 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...