V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
washbrain
V2EX  ›  问与答

如何评价华为新提出的 arkTS 语言?

  •  
  •   washbrain · 2022-11-17 11:24:58 +08:00 · 13072 次点击
    这是一个创建于 497 天前的主题,其中的信息可能已经有所发展或是发生改变。

    官方描述

    ArkTS 是 HarmonyOS 优选的主力应用开发语言。ArkTS 基于 TypeScript (简称 TS )语言扩展而来,是 TS 的超集。

    ArkTS 继承了 TS 的所有特性。

    当前,ArkTS 在 TS 基础上主要扩展了声明式 UI 能力,让开发者以更简洁、更自然的方式开发高性能应用。

    当前扩展的声明式 UI 包括如下特性

    -基本 UI 描述:ArkTS 定义了各种装饰器、自定义组件、UI 描述机制,再配合 UI 开发框架中的 UI 内置组件、事件方法、属性方法等共同构成了 UI 开发的主体。

    -状态管理:ArkTS 提供了多维度的状态管理机制,在 UI 开发框架中,和 UI 相关联的数据,不仅可以在组件内使用,还可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,也可以是全局范围内的传递,还可以是 跨设备传递。另外,从数据的传递形式来看,可分为只读的单向传递和可变更的双向传递。开发者可以灵活的利用这些能力来实现数据和 UI 的联动。

    -动态构建 UI 元素:ArkTS 提供了动态构建 UI 元素的能力,不仅可以自定义组件内部的 UI 结构,还可复用组件样式,扩展原生组件。

    -渲染控制:ArkTS 提供了渲染控制的能力。条件渲染可根据应用的不同状态,渲染对应状态下的部分内容。循环渲染可从数据源中迭代获取数据,并在每次迭代过程中创建相应的组件。

    -使用限制与扩展:ArkTS 在使用过程中存在限制与约束,同时也扩展了双向绑定等能力。
    未来,ArkTS 会结合应用开发 /运行的需求持续演进,逐步提供并行和并发能力增强、类型系统增强、分布式开发范式等更多特性。

    image

    个人感觉:语法上即视感太强,与其说是 TS ,不如说是 Jetpack Compose + Swift UI ;

    不知道底层是怎么实现的,之前就有看到过鸿蒙是支持 javascript 来开发的;

    不知道有没有开发过的同学分享下使用体验;

    ( PS:这个应该不是仓颉)

    链接: https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/arkts-get-started-0000001430600477-V3

    98 条回复    2023-12-08 18:01:04 +08:00
    ntfnyz
        1
    ntfnyz  
       2022-11-17 11:28:07 +08:00   ❤️ 15
    要素过多 双方辩手即将进场
    yuhangch
        2
    yuhangch  
       2022-11-17 11:29:17 +08:00
    那得请写 TS 和 SwiftUI 的 v 友发言了,声明式有很大的优势吗?还是只是种风格?

    ArkScript 我觉的都好一些,ArkTS 阿巴阿巴,套娃🪆
    kindjeff
        3
    kindjeff  
       2022-11-17 11:30:13 +08:00
    (是否意味着前端 build 流程又多了一步从 ArkTS->TS )
    nomagick
        4
    nomagick  
       2022-11-17 11:32:08 +08:00   ❤️ 1
    什么鬼为什么要来蹭 TS 的热度
    DeactivatedOcean
        5
    DeactivatedOcean  
       2022-11-17 11:33:36 +08:00 via Android   ❤️ 10
    宇宙第一语言
    Bijiabo
        6
    Bijiabo  
       2022-11-17 11:34:04 +08:00
    呸~
    n2l
        7
    n2l  
       2022-11-17 11:38:17 +08:00
    @ntfnyz 哈哈
    churchill
        8
    churchill  
       2022-11-17 11:38:19 +08:00   ❤️ 2
    是 dart 魔改太难吗
    tui~
    registerrr
        9
    registerrr  
       2022-11-17 11:40:18 +08:00
    @churchill #8 哈哈哈哈哈哈
    TWorldIsNButThis
        10
    TWorldIsNButThis  
       2022-11-17 11:41:12 +08:00
    如果可以给 ts 加上 kotlin 的语法的话,那还不错
    不过图里看起来就是个 framework
    icyalala
        11
    icyalala  
       2022-11-17 11:49:06 +08:00   ❤️ 1
    就是个 SwiftUI 这类框架,这好意思叫 “语言”。。
    hackpro
        12
    hackpro  
       2022-11-17 11:50:44 +08:00 via iPhone
    每次都想搞个大新闻🐶
    misslita
        13
    misslita  
       2022-11-17 11:52:24 +08:00 via Android   ❤️ 1
    不错有进步,没拿山海经来命名了
    zbinlin
        14
    zbinlin  
       2022-11-17 11:54:56 +08:00
    这介绍怎么看都像是一个框架呀
    dguge
        15
    dguge  
       2022-11-17 11:58:53 +08:00 via iPhone   ❤️ 1
    在 v 站,不要提 hw 二字,大家会应激的
    retrocode
        16
    retrocode  
       2022-11-17 11:59:03 +08:00
    嵌套地狱
    jasonkayzk
        17
    jasonkayzk  
       2022-11-17 12:24:33 +08:00
    沸腾 Lang
    icedx
        18
    icedx  
       2022-11-17 12:29:20 +08:00
    赢了!
    molvqingtai
        19
    molvqingtai  
       2022-11-17 12:36:41 +08:00
    超集的超集,真超级棒👍🏻
    mikeven
        20
    mikeven  
       2022-11-17 12:36:43 +08:00   ❤️ 2
    遥遥领先,
    遥~遥~领先!!
    wangerka
        21
    wangerka  
       2022-11-17 12:37:18 +08:00
    缝合怪
    dacapoday
        22
    dacapoday  
       2022-11-17 12:40:52 +08:00   ❤️ 32
    一如既往保持 hw 吹牛的传统:明明只是个 UI ,非说是 OS ,明明只是个 UI 库,非说是语言。有时还要踩一脚它抄袭的对象。
    yvescheung
        23
    yvescheung  
       2022-11-17 12:46:27 +08:00   ❤️ 2
    害怕,以后用外国编程语言的是不是都要成为买办汉奸了
    WebKit
        24
    WebKit  
       2022-11-17 12:53:52 +08:00 via Android
    这不就是 Android 的 Jetpack Compos 吗?只不过 Android 用的 kotlin 。鸿蒙这也太快了吧?这边出个啥,他就抄个啥
    mmm159357456
        25
    mmm159357456  
       2022-11-17 12:56:38 +08:00
    套娃是吧
    ChefIsAwesome
        26
    ChefIsAwesome  
       2022-11-17 12:57:24 +08:00 via Android   ❤️ 4
    不是汉字编程,我很难支持他
    Justin13
        27
    Justin13  
       2022-11-17 13:04:52 +08:00 via Android
    这种也配叫声明式 UI
    flippedww
        28
    flippedww  
       2022-11-17 13:06:56 +08:00
    @Justin13 这不是的话那请问什么才是呢
    Justin13
        29
    Justin13  
       2022-11-17 13:08:27 +08:00 via Android
    @flippedww React
    xnmlllcy1
        30
    xnmlllcy1  
       2022-11-17 13:11:38 +08:00   ❤️ 1
    爱信等骂,经过今年秋招,华子又多了一个铁黑子😀😀😀
    xnmlllcy1
        31
    xnmlllcy1  
       2022-11-17 13:12:05 +08:00   ❤️ 1
    华为出品 坚决抵制
    zxCoder
        32
    zxCoder  
       2022-11-17 13:23:37 +08:00   ❤️ 1
    不谈华为这个,就说 Jetpack Compose ,Swift UI 这写个页面不得累死,这么一行行代码的
    flippedww
        33
    flippedww  
       2022-11-17 13:24:23 +08:00
    @Justin13 这已经几乎和 Jetpack Compose 和 SwiftUI 一模一样了, 这俩都是声明式 UI
    silvernoo
        34
    silvernoo  
       2022-11-17 13:29:40 +08:00   ❤️ 1
    给 flutter 套了 ts 的壳
    MengiNo
        35
    MengiNo  
       2022-11-17 13:29:45 +08:00 via Android
    dart 不是被吐槽了半天了么(虽然个人能接受)…
    leavic
        36
    leavic  
       2022-11-17 13:30:52 +08:00
    华为可是给中国人长脸了啊
    Leonard
        37
    Leonard  
       2022-11-17 13:31:14 +08:00
    这不是 SwiftUI 么
    wangxiang
        38
    wangxiang  
       2022-11-17 13:31:27 +08:00
    遥遥领先
    minami
        39
    minami  
       2022-11-17 13:33:34 +08:00
    阶段性沸腾产品罢了
    okakuyang
        40
    okakuyang  
       2022-11-17 13:34:56 +08:00   ❤️ 12
    这个结构基本上和 swiftui 一致。SwiftUI 是声命式 UI 框架, 渲染出来的是原生组件,button 还是原来 UIKit 的 UIButton ,但是一部分 View,Text 组件重新开发了。SwiftUI 是运行在 Apple 家的四个平台,iOS ,iPadOS ,TVOS ,WatchOS 上,每个平台渲染样式和行为都适配该平台特征的 UI 组件。这点华为也是一样的,华为这个也是跨平台,但是对不同平台渲染出来的按钮样式也是不一样的。基本上华为从写法和用法都高度模仿了 SwiftUI ,只不过华为选的是国内 web 前端开发者熟悉的的 JS 语言,又因为 JS 不能很好处理类型,换成了 TS ,再在 TS 的基础上添加这一套声明式 UI 的语法特点做的一套框架。由于用的是 JS ,那当然 JS 的劣势是完全继承的,比如启动的时候多启动一个小的 JS 引擎会消耗时间,JS 对多线程的支持,JS 不适合密集运算,需要在 C 上完成。优势自然是国内大批前端程序员可以方便的进入生态。
    wangyzj
        41
    wangyzj  
       2022-11-17 13:36:05 +08:00   ❤️ 1
    好像 dart 啊
    wdhwg001
        42
    wdhwg001  
       2022-11-17 13:44:28 +08:00 via iPhone
    明明就是个 DSL ,和 jsx/vue 文件一个级别的,非要叫语言,市场部赢麻了沸腾了是吧。
    R0ckyY2
        43
    R0ckyY2  
       2022-11-17 13:50:43 +08:00   ❤️ 20
    华为的代名词就是:抄袭,缝合,欺骗。华为出品,必属垃圾。
    ccyu220
        44
    ccyu220  
       2022-11-17 13:55:44 +08:00   ❤️ 4
    不敢评价,一个星期前在抖音说了句不能算语言就是个框架

    现在还能收到别人在骂我
    s524256521
        45
    s524256521  
       2022-11-17 14:04:34 +08:00 via Android
    还行吧,移动端最火的跨平台声明式就是 compose 和 Swift UI ,华为要抄肯定只能抄这俩,不意外,就看具体操作了。
    HuskyYellow
        46
    HuskyYellow  
       2022-11-17 14:32:47 +08:00   ❤️ 1
    你再发一个 Dcloude 的 uts , 大家一起沸腾,然后将寒气传给每一个人
    Natsuno
        47
    Natsuno  
       2022-11-17 14:35:13 +08:00
    不是白象的我不用
    php01
        48
    php01  
       2022-11-17 14:35:59 +08:00
    菊语言
    javlib
        49
    javlib  
       2022-11-17 14:54:29 +08:00   ❤️ 2
    (圣光变身)一切邪恶,终将绳之以法
    aw2350
        50
    aw2350  
       2022-11-17 15:57:04 +08:00   ❤️ 2
    这种垃圾公司,老老实实做你自己的主业不行吗。。。有这种公司的存在简直就是阻碍中国 IT 的创新与进步
    anonymous2351d00
        51
    anonymous2351d00  
       2022-11-17 16:09:28 +08:00
    我苹果看不见
    james504
        52
    james504  
       2022-11-17 16:10:28 +08:00   ❤️ 1
    不敢评价,怕被扣:
    汉奸,
    反贼,
    你不喜欢你别用啊,
    你不喜欢你可以不看啊,
    你那么不喜欢中国别打中文字啊,
    中国有这家公司不支持就算了你还踩他你不爱国,
    .....
    的帽子。
    ungrown
        53
    ungrown  
       2022-11-17 16:21:09 +08:00
    @minami #39 那么它的三相图也是离散的吗
    royzxq
        54
    royzxq  
       2022-11-17 16:27:10 +08:00
    超集的超集,我缝,我疯狂的缝
    Vtwoguest
        55
    Vtwoguest  
       2022-11-17 16:33:59 +08:00   ❤️ 1
    别的不清楚 我只知道 php 文档这句话要改一下了
    PHP is the best language for web programming
    marcong95
        56
    marcong95  
       2022-11-17 16:50:32 +08:00   ❤️ 1
    这语法,楼上也别说这是 UI 库不是语言了,这不是语言太侮辱 TS 了吧。高度同意楼上说的叫 ArkScript 比叫 ArkTS 好

    Button() {}.onClick(() => {}) 你跟我说说 TS 哪来的这种奇妙的语法

    SwiftUI 不太懂,苹果的语言的语法一直都挺奇妙的。从 TS 的角度来看,Button 这东西到底是个啥

    (本来想用奇葩,迫于 i2ex ,还是改成中性偏褒义的奇妙吧)
    Ashore
        57
    Ashore  
       2022-11-17 16:50:34 +08:00   ❤️ 1
    ArkTS is the best language for web programming
    citydog
        58
    citydog  
       2022-11-17 16:57:06 +08:00
    @R0ckyY2 华为好像踩着你尾巴了,哥们儿
    iloveayu
        59
    iloveayu  
       2022-11-17 17:08:46 +08:00
    能让鸿蒙再次伟大,华为沸腾两次。
    xz410236056
        60
    xz410236056  
       2022-11-17 17:08:48 +08:00
    @yuhangch #2 别的不知道,SwiftUI 优势很大,大就大在,能让一些喜欢用纯代码布局的傻逼和喜欢用 GUI 的开发人员兼容到一起,简直跨时代。
    fanxasy
        61
    fanxasy  
       2022-11-17 17:22:04 +08:00   ❤️ 2
    一副安卓被吸干,冷笑走向 TS 的画面跃然纸上
    bugmaker233
        62
    bugmaker233  
       2022-11-17 18:12:29 +08:00
    支持华为!
    janus77
        63
    janus77  
       2022-11-17 18:23:02 +08:00
    稍微看了下,DSL 呗……勉强算语言吧,不过给程序员用的东西真没必要过度营销,你做的好大家自然会买账
    xuelu520
        64
    xuelu520  
       2022-11-17 18:43:48 +08:00
    为啥不叫 hwTS 语言。
    calvinHxx
        65
    calvinHxx  
       2022-11-17 18:53:00 +08:00
    我先来带节奏!!!。
    ArkTS 是世界上最好的语言. [手动狗头]
    FightPig
        66
    FightPig  
       2022-11-17 19:25:51 +08:00
    v2 上华为不管出的是啥都是 p ,毕竟 v2 上的全是大神。
    ylls
        67
    ylls  
       2022-11-17 19:49:39 +08:00
    @FightPig 可能技术人员比较较真 觉得技术领域还是少一些营销 务实点好 不可否认这东西对国内来说是个进步 但是相比目前的主流有一定的差距 借鉴不可怕 就怕的是借鉴别人的时候还要踩低一下凸显自己很牛逼
    newmlp
        68
    newmlp  
       2022-11-17 19:50:53 +08:00
    唾~
    Torpedo
        69
    Torpedo  
       2022-11-17 21:19:00 +08:00
    看起来是给鸿蒙 os 开发用的。那么问题来了:鸿蒙 os 开发前景怎么样?市场待遇、需求如何?
    ZRS
        70
    ZRS  
       2022-11-17 21:23:18 +08:00 via iPhone
    比缝更缝
    icatme
        71
    icatme  
       2022-11-17 21:42:23 +08:00 via Android
    @dacapoday 你会把 Debian 叫 UI 吗?
    ruxuan1306
        72
    ruxuan1306  
       2022-11-17 21:42:51 +08:00
    TypeScript 很不错,它让很多熟练纯面向对象语言的开发者在 JavaScript 中也能保持一切都写在 Class 里的良好习惯。
    blless
        73
    blless  
       2022-11-17 21:46:54 +08:00
    看了一眼文档,没有实际操作。arkTS 是带编译器的,可以进行 AOT 编译 ( https://developer.harmonyos.com/cn/develop/arkCompiler/)。然后通过下方地址再进去看了一眼,
    指向了一个运行时仓库
    https://gitee.com/openharmony/arkcompiler_ets_runtime
    再看了一眼其他相关页面
    https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/ARK-Runtime-Subsystem-zh.md
    一直到最近都还在更新,如果鸿蒙真的用上了这些,说语言也不过分。
    dw2693734d
        74
    dw2693734d  
       2022-11-17 22:14:53 +08:00 via iPhone
    一切都向苹果看齐
    neptuno
        75
    neptuno  
       2022-11-17 22:29:04 +08:00 via iPhone
    @ntfnyz #1 四方混战了要
    moliniao
        76
    moliniao  
       2022-11-17 22:34:57 +08:00
    看一个事物,要看环境,对于现在的华为来说,降低开发者难度,普及推广自身生态最关键
    就好像 google ,也是到了一定的程度才推出的 go 和 dart
    freshmanc
        77
    freshmanc  
       2022-11-17 23:09:26 +08:00
    “基本 UI 描述:ArkTS 定义了各种装饰器、自定义组件、UI 描述机制,再配合 UI 开发框架中的 UI 内置组件、事件方法、属性方法等共同构成了 UI 开发的主体。”

    为什么这种叫语言。。。不是 UI 框架的吗
    huohei
        78
    huohei  
       2022-11-17 23:39:16 +08:00 via iPhone
    我去,这不是我们 SwiftUI 吗,没想到居然被华为收购了🤣,还变成了 typescript ,怎么证明?
    mbooyn
        79
    mbooyn  
       2022-11-17 23:49:19 +08:00 via iPhone
    借楼问一下,鸿蒙是不是抄的安卓?
    WOLFRAZOR
        80
    WOLFRAZOR  
       2022-11-17 23:51:24 +08:00 via Android
    这不就是 Jetpack Compose 吗?
    BoringBB
        81
    BoringBB  
       2022-11-18 08:00:53 +08:00
    @icatme 我们一般把 Debian 称为 Linux 发行版。Linux 只是一个内核,一个完整的操作系统除了内核外,还需要配套的外围软件。AOSP 也使用了 Linux 内核,从某种意义上来说也属于 Linux 发行版。
    free9fw
        82
    free9fw  
       2022-11-18 08:48:32 +08:00
    始终是山寨,连开发语言也山寨
    montaro2017
        83
    montaro2017  
       2022-11-18 09:03:22 +08:00
    @silvernoo 我觉得这还不如 flutter
    litmxs
        84
    litmxs  
       2022-11-18 09:30:21 +08:00 via Android
    为什么自己的编程语言不用中文? tui 卖国公司
    killeder
        85
    killeder  
       2022-11-18 09:31:13 +08:00
    251 卖的东西都是骗 250 的
    polo3584
        86
    polo3584  
       2022-11-18 09:38:37 +08:00   ❤️ 2
    用了半年的多的说句话,这个东西本来叫 ets ,是 ts 的超集,只是这次改名叫 arkTS ,没太多新东西,华为也没说是一种新语言啊。。。不还是 TS 么,亮点其实是 arkUI 的框架和编译器。不过这个帖子里真去实操过的估计不超过 10 个,全在沸腾。在我看来黑华为的和吹华为的都是同一类人。
    silvernoo
        87
    silvernoo  
       2022-11-18 09:55:56 +08:00
    @ruxuan1306 最近正在被 ts 摧残,比 flutter 的嵌套地狱更难受的是 ts 的函数回调地狱
    pkwenda
        88
    pkwenda  
       2022-11-18 10:02:23 +08:00
    华为赢麻了
    Mexion
        89
    Mexion  
       2022-11-18 15:02:33 +08:00
    这也叫语言?那 jsx 也是语言?
    lisxour
        90
    lisxour  
       2022-11-19 10:06:19 +08:00
    @marcong95 我不知道你用没用过 TS ,但我日常 TS 开发,"Button() {}.onClick(() => {})"语法上就是很正常的 TS 或者说 JS 语法,"Button() {}"定义了一个 Button 方法,至于为什么还能调用"onClick"方法,直接给 prototype 加个"onClick"即可。所谓的"ArkTS 语言"也就是拥有一堆 typings 的框架。
    marcong95
        91
    marcong95  
       2022-11-21 09:38:09 +08:00
    @lisxour #90 那如果我有两个 Button ,那 JS/TS 肯定不能让你定义两个 Button 函数吧,那如果改成 Button1 、Button2 JS Runtime 又怎么知道这是个 Button 呢。而且给哪个 prototype 加 onClick ,Function 吗,这么搞的话 Function 就会肿成一大坨东西。我思前想后,Button 大概率是一个工厂函数,{} 这个看着像是代码块的东西,应该会编译为类似于 Button()(builder => { builder.Text() }).onClick(() => {}) 这种感觉的东西。

    我只是想说,黑华为的时候大可不必把 JS/TS 拉出来陪葬。。这东西可能技术含量不高,大概一个 babel 插件的事情,但是多少也能算个类似于 JSX 的 DSL 。
    lisxour
        92
    lisxour  
       2022-11-21 11:18:43 +08:00
    @marcong95 具体是不是编译时做处理这个没深入了解,但是加`onClick`或者类型提示这些其实 ts 有很骚的高级类型提示,比如`https://github.com/ronami/HypeScript`,就基本可以做到这些程度(代码看起来确实挺诡异,但是自身语法没问题+高级 typings 是能确保写代码时的正确提示的),但如你所说的,最后也得走一遍编译器。鉴于现在各种各样花里胡哨的框架都有自己的后处理插件或者编译器,ArkTS 不能说是一门语言也是能理解的。
    bunny189
        93
    bunny189  
       2022-11-23 09:42:26 +08:00
    flutter 既视感太强
    makelove
        94
    makelove  
       2022-11-23 22:43:27 +08:00
    过去瞄了一眼,感觉还行的样子。我最近几年对华为挺刮目相看的。


    不过这公司不管做什么在这论坛一定就是楼上的场景
    ranhuan
        95
    ranhuan  
       2023-03-17 11:34:38 +08:00   ❤️ 1
    华为的 OS 和 language 的最近动向感觉是在做一个脱钩后也能达到世界顶级开发能力并且可以自行迭代的国产替代,对于自研等等不在注重,希望只是一个阶段性目标。
    ranhuan
        96
    ranhuan  
       2023-03-17 11:39:00 +08:00
    华为的产品起点还是基于现有国际开源产品
    鸿蒙基于 AOSP
    语言基于 TS
    芯片基于 ARM
    IDE 基于 IDEA
    不过华为吃的很透,基本上在起点位置可以做到和主干同样甚至更高质量的后续迭代。方向不能说错误,但在起点位置很容易思想混乱,多迭代几次走出自己的路就能统一思想。
    dengxuejiu
        97
    dengxuejiu  
       202 天前
    吹就完事了
    RobinzzZ
        98
    RobinzzZ  
       110 天前
    @kindjeff 好像是个熟人?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5241 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 09:39 · PVG 17:39 · LAX 02:39 · JFK 05:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.