草庐IT

ArkTS初学(一)

yasinawolaopo 2023-12-10 原文

想必大家都听说过华为的方舟框架,没错,这就是所说的ArkTS。在HarmonyOS2的时候大家会使用java开发HarmonyOS应用,使用的是Layout来进行布局(用的还是xml文件),之后又出现了js的Component(记不清名字了)的一个功能方便了开发。我们现在就来学习HarmonyOS3推出的ArkTS

我写这个博客的时候ArkTS只支持iPhone,所以我们只能用手机为例子来学习

HarmonyOS官网

HarmonyOS官网
这个是DevECO Studio下载页,请选择对应的版本

创建项目


注意: 项目公开按键在最下面
补充: 图上说明的项目公开按键是快速布局生成代码的
俩个SDK版本要一致
选择机器类型

ArkTS

ArkTS文档

基本概念

基本概念

struct:自定义组件可以基于struct实现,不能有继承关系,对于struct的实例化,可以省略new

装饰器:装饰器给被装饰的对象赋予某一种能力,其不仅可以装饰类或结构体,还可以装饰类的属性。多个装饰器可以叠加到目标元素上,定义在同一行中或者分开多行,推荐分开多行定义。

  • @Component:装饰struct,结构体在装饰后具有基于组件的能力,需要实现build方法来创建UI

  • @Entry: 装饰struct,组件被装饰后作为页面的入口,页面加载时将被渲染显示。

  • @Preview:装饰struct, 用@Preview装饰的自定义组件可以在DevEco Studio的预览器上进行实时预览,加载页面时,将创建并显示@Preview装饰的自定义组件

  • build函数: 自定义组件必须定义build函数,并且禁止自定义构造函数。build函数满足Builder构造器接口定义,用于定义组件的声明式UI描述。

这些都是官方文档,不容易理解,也很分散。你们可以这么理解装饰器就是规定,build相当于C,Java中的main()方法这样后我们再来看这个代码

@Entry
@Component
struct Index {
  build() {}
}

子组件配置

对于支持子组件配置的组件,例如容器组件,在"{ … }"里为组件添加子组件的UI描述。ColumnRowStackGridList等组件都是容器组件。

@Entry
@Component
struct Index {
  build() {
    //Row()//横向,只要你width写成100%你的字就会在横屏的中间
    Column(){//纵向,只要你height写成100%你的字就会在竖屏的中间
    }
  }
}

可以查看官方文档-状态管理-基本概念
@State很好理解

@Entry
@Component
struct Index {
  build() {
    Row(){
      @State hello:string = "HelloWorld"
      Text(this.hello).fontSize(30).fontColor("#ff0")//Text():文本组件,里面的值不能为空; fontSize():改变字体大小组件;fontColor():改变字体颜色的组件(主要是真机背景是黑色的,默认字体也是黑色的)
    }
  }
}

路由跳转

我们可以学个跟前端vue编程式路由导航,react编程式路由导航都很像的router
先是要在config.json中配置

import router from '@system.router' //调用router库

@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold).fontColor("#fff").onClick(()=>{
          //onClick():点击事件
          //router.push(object)
          router.push({ //push()方法,那就会有replace()方法
            uri:"pages/Test01", //uri路径
            params:{ //传递的参数
              data1: "OK"
            }
          })

        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

@Observed

现在的我还不会引入,所以我们来学最后一个装饰器@Observed

@Entry
@Observed
class UserClass{
  @State message:string = "this is UserClass"
}

错误的写法:

当然自然不能像@Component那样

这里的build只是在类中的普通函数,不信?

import router from '@system.router'

@Entry
@Component
struct Test01{
  @State testData01: string = "物品"
  @State UserClass: UserClass = new UserClass()
  build(){
    Row(){
      Text(this.testData01).fontColor("#0ff").fontSize(50)
      Text(`count:${this.count}`).onClick(()=>{
        this.count += 1
      }).fontSize(30).fontColor('#fff')
    }.backgroundColor("#f00").width('100%')
  }
}

@Observed class UserClass{
  static message: string = "this is UserClass"
  constructor(){

  }
}

关于APP的文件名

查看config.json文件(上述有说明位置(前往路由跳转查看位置))
我们直接ctrl+f输入文字label(因为HarmonyOS的默认文件名就是label),果不其然

我们不去改$string:MainAbility_label这个名字相比在开发过harmonyos-java的小伙伴并不陌生,我们ctrl+在这段文字上点击会有一下选择,我们选择zh_CN(中文的意思)

  • base: 公共的,基础的
  • zh_CN: 中文相关配置,适用于语言是中文
  • en_US: 英文相关配置,适用于语言是英文,所以你要改英文就改这个

    发现和键值对很像,所以我们这里只要改value的值就可以了(我这里已经改过)


有关ArkTS初学(一)的更多相关文章

  1. ruby - 易于初学者理解的 Ruby 库 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5

  2. ruby-on-rails - 如何销毁两个模型之间的所有关联数据? (Rails 初学者) - 2

    我有两个模型:store和category以及一个名为categories.stores的连接表。如何删除连接表中商店对象的所有关系数据?我可以使用其中之一吗:store.categories.destroy或category.stores.destroy注意:两个模型都是has_and_belongs_to_many(因此每个关联记录都没有标识符——只有store_id和category_id) 最佳答案 在has_and_belongs_to_many关联中,您可以使用delete_all或destroy_all。在has_ma

  3. ruby-on-rails - 将散列键转换为小写 -- Ruby 初学者 - 2

    我的表格字段名称是小写的,而我从CSV文件中获取的字段名称是驼峰式的。无论如何我可以将哈希数组的键转换为小写吗?这是我现在的代码:CSV.foreach(file,:headers=>true)do|row|Users.create!(row.to_hash)end这是失败的,因为键是驼峰式的(我已经通过手动编辑文件使标题行全部小写来验证这一点)。附言。我也很想知道为什么Rails开始时会考虑表字段名称的大小写敏感性? 最佳答案 您可以只对CSV使用header_converters选项:CSV.foreach(file,:head

  4. ruby-on-rails - 学习Ruby on Rails的初学者项目 - 2

    为了学习rubyonrails,可以构建哪些好的项目想法?有很多很棒的教程(rails3在运行,rails的敏捷web开发,railstutorial.org)但是它们都需要很长时间来浏览整本书。而且,它们为用户提供了即时的答案,而不是要求用户自己解决问题。什么是短而简单的项目,初学者可以尝试不只是遵循一个长教程?我认为一个博客和一个待办事项列表是很好的启动项目?还有什么?(项目应该让初学者接触到rest和crud) 最佳答案 一个好的开始是RailsforZombies我会去看看。如果你喜欢的话,CodeSchool有很多很棒的资

  5. ruby-on-rails - 什么被认为是好的规范?初学者的 Rspec 示例 - 2

    什么是可靠的规范?这就是我发现关于测试非常抽象的地方。我会对模型、Controller和其他任何可以测试的问题的答案感兴趣。有一个规范的规范会很酷,你知道我的意思吗?模型规范应该(按优先级和相关性顺序):测试所有方法?测试错误数组?测试CRUD(以及如何)?还有什么?Controller/View规范应该(按优先级/相关性顺序):填空...?扩展规范应该包含和不应该包含的内容的列表会很棒。我还想编制一份技巧和建议列表。例如:关键字“应该”有点多余。示例:这个:it"shouldbeinvalidwithoutafirstname"会更好:it"isinvalidwithoutafirs

  6. ruby-on-rails - 使用 .include 检查数组中的多个项目? -- ruby 初学者 - 2

    有没有更好的写法:ifmyarray.include?'val1'||myarray.include?'val2'||myarray.include?'val3'||myarray.include?'val4' 最佳答案 使用集合交集(Array#:&):(myarray&["val1","val2","val3","val4"]).present?你也可以循环(any?会在第一次出现时停止):myarray.any?{|x|["val1","val2","val3","val4"].include?(x)}这对于小数组来说没问题,

  7. javascript - 初学者 Javascript 数组和计数器 - 2

    我是新手,真的不知道如何表达这个问题,所以请多多包涵。我想在javascript中使用数组保存数据集,并使用计数器按顺序访问它们。例如,我想显示关于一个人的每条数据,一次显示一个人。现在我正在使用类似这样的东西:varfirstNames=newArray("John","Bob","Anna","Natalie");varlastNames=newArray("Smith","Price","Johnson","Baker");varages=newArray(34,51,12,83);然后访问它们:counter++;firstNames[counter];lastNames[co

  8. javascript - jQuery - 一些初学者问题 - 2

    我是jQuery的初学者,我有一些基本问题:只要有可能通过使用jQuery来替换某些东西,是否建议使用jQuery?例如,使用它而不是通过HTML将所有事件绑定(bind)到元素是否明智?我自己托管jQuery.js文件和所有其他相关文件(如JQueryUI)更好,还是使用Google的链接(他们似乎也为其他人托管)可能是更好的选择?在页面加载完成后执行脚本时,首选哪种方式?$(document).ready(function(){})$(function(){})$().ready(function(){})他们似乎都做同样的事情,但首选的脚本编写方式是什么?

  9. javascript - 适合 JavaScript 初学者的项目 - 2

    我目前正在通过Lynda.com视频系列学习JavaScript。到目前为止似乎进展顺利。我想知道您会向使用JavaScript语言的编程新手推荐什么样的入门项目。也许你会建议我想到一些感兴趣的事情并努力完成它。我真的还不知道,我最终想要构建的任何东西似乎都遥不可及,即。元素动画等我有使用jQuery的经验,但为此我不会使用框架。谢谢。 最佳答案 一个好的开始是:猜数字游戏这是开始程序的好链接(在Python中)http://www.scribd.com/doc/50490971/11/Guess-the-Number-s-Sour

  10. Javascript 还是 Python?初学者快速上手 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。哪种语言可以让初学者更快上手?基本上两者哪个语言比较好学

随机推荐