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

HarmonyOS-ArkTS开发指南:从基础到实战

目录

一、基础语法

二、声明式 UI 开发

基本组件结构

三、状态管理

四、生命周期钩子

五、组件化开发

1. 创建自定义组件

2. 组件嵌套

六、事件处理

七、布局系统

八、样式设置

九、条件渲染与列表渲染

十、异步操作

十一、路由导航

开发建议

一、基础语法

ArkTS 是 TypeScript 的超集,所以支持所有 TypeScript 的特性,包括:

  1. 类型注解

    let name: string = "张三";
    let age: number = 25;
    let isStudent: boolean = true;
    
  2. 接口

    interface Student {id: number;name: string;score?: number;  // 可选属性
    }
    
  3. class Animal {constructor(public name: string) {}move(distance: number = 0) {console.log(`${this.name} moved ${distance}m.`);}
    }
    
  4. 函数

    function greet(name: string): string {return `Hello, ${name}!`;
    }
    

二、声明式 UI 开发

ArkTS 采用声明式语法构建 UI,类似于 React 和 Vue 的 JSX。

基本组件结构

@Entry  // 应用入口组件
@Component  // 声明为自定义组件
struct MyComponent {@State count: number = 0;  // 响应式状态build() {  // 构建UI的方法Column() {  // 垂直布局容器Text(`Count: ${this.count}`).fontSize(30)Button('Increment').onClick(() => {this.count++;  // 状态变化会自动更新UI})}.width('100%').height('100%')}
}

三、状态管理

ArkTS 提供多种状态管理方式:

  1. @State - 组件内部状态

    @State private isActive: boolean = false;
    
  2. @Link - 父子组件双向绑定

    // 父组件
    @State parentValue: string = "初始值";// 子组件
    @Link childValue: string;
    
  3. @Provide/@Consume - 跨组件状态共享

    // 提供者
    @Provide theme: string = "dark";// 消费者
    @Consume theme: string;
    

四、生命周期钩子

ArkTS 组件生命周期:

@Component
struct LifecycleDemo {aboutToAppear() {  // 组件即将显示console.log('组件即将挂载');}aboutToDisappear() {  // 组件即将销毁console.log('组件即将卸载');}onPageShow() {  // 页面显示console.log('页面显示');}onPageHide() {  // 页面隐藏console.log('页面隐藏');}
}

五、组件化开发

1. 创建自定义组件

@Component
struct CustomButton {@Prop label: string = "按钮";@State isPressed: boolean = false;build() {Button(this.label).stateEffect(this.isPressed).onClick(() => {this.isPressed = !this.isPressed;})}
}

2. 组件嵌套

@Component
struct Card {@Prop header: string;@Prop content: string;build() {Column() {Text(this.header).fontSize(20)Divider()Text(this.content)}.borderRadius(10).padding(15)}
}

六、事件处理

ArkTS 支持多种事件类型:

Button('交互按钮').onClick(() => {})  // 点击.onLongPress(() => {})  // 长按.onTouch(() => {})  // 触摸TextInput().onChange((value: string) => {})  // 输入变化Swiper().onChange((index: number) => {})  // 滑动变化

七、布局系统

ArkTS 提供丰富的布局容器:

  1. Flex 布局

    Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.SpaceBetween }) {Text('Item1')Text('Item2')
    }
    
  2. Grid 布局

    Grid() {ForEach([1,2,3,4], (item) => {Text(`Item${item}`)})
    }
    .columnsTemplate("1fr 1fr")
    
  3. Stack 布局

    Stack() {Image('background.jpg')Text('水印')
    }
    

八、样式设置

ArkTS 提供链式调用的样式API:

Text('样式示例').fontSize(16).fontColor(Color.White).backgroundColor('#007DFF').borderRadius(8).padding(10).margin({ top: 5, bottom: 5 }).width('90%').height(40)

九、条件渲染与列表渲染

  1. 条件渲染

    @State showDetails: boolean = false;build() {Column() {if (this.showDetails) {Text('详细信息')}}
    }
    
  2. 列表渲染

    @State items: string[] = ['Apple', 'Banana', 'Orange'];List() {ForEach(this.items, (item, index) => {ListItem() {Text(item)}})
    }
    

十、异步操作

ArkTS 支持现代异步编程方式:

async fetchData() {try {const response = await fetch('https://api.example.com/data');const data = await response.json();this.dataList = data;} catch (error) {console.error('请求失败:', error);}
}

十一、路由导航

ArkTS 提供完整的路由系统:

// 导航到新页面
router.pushUrl({url: 'pages/Detail',params: { id: 123 }
});// 接收参数
aboutToAppear() {const params = router.getParams();this.id = params['id'];
}// 路由返回
router.back();

开发建议

  1. 使用 DevEco Studio 进行开发
  2. 参考官方文档: HarmonyOS开发者官网
  3. 从简单示例开始,逐步构建复杂应用
  4. 合理使用状态管理,避免过度嵌套
  5. 注意性能优化,特别是列表渲染场景

相关文章:

  • (17)-java+ selenium->自动化测试-元素定位大法之By css上
  • StableDiffusion实战-手机壁纸制作 第一篇:从零基础到生成艺术品的第一步!
  • 前端HTML学习笔记
  • Java 语言的优势场景:企业级应用与新兴领域的首选
  • GRBL_UNO R3编译下载
  • 不会PLC,怎么学上位机?
  • 基于keepalived、vip实现高可用nginx (centos)
  • 基于Python的机动车辆推荐及预测分析系统
  • 算法打卡22天
  • 探索大语言模型(LLM):Lora vs. QLora:参数高效微调的双生花,你该选谁?
  • threejs 实现720°全景图,;两种方式:环境贴图、CSS3DRenderer渲染
  • 实时输出subprocess.Popen运行程序的日志
  • 【mongoose8.x】mongoose8.x入门教程(一):windows环境安装篇
  • XML重复查询一条Sql语句??怎么解决
  • Outlook邮箱开通发信服务及OAuth2验证开通
  • Vim:从入门到进阶的高效文本编辑器之旅
  • 利用DevEco Studio对RK3588的HiHopesOS-4.1.110(OpenHarmony)进行Qt程序编写
  • Web 应用防火墙(WAF)工作原理、防护策略与部署模式深度剖析
  • web布局04
  • 输入url之后发生了什么
  • qq客服代码放在网站哪里/抖音推广
  • 东莞做微网站建设/网站建设山东聚搜网络
  • 郑州专业的网站建设公司排名/百度指数搜索热度排行
  • 福州网站推广优化/培训机构网站
  • 电子商务网站建设费用/竞价开户
  • 做返利网站如何操作流程/网站手机版排名seo