官方描述
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 会结合应用开发 /运行的需求持续演进,逐步提供并行和并发能力增强、类型系统增强、分布式开发范式等更多特性。
个人感觉:语法上即视感太强,与其说是 TS ,不如说是 Jetpack Compose + Swift UI ;
不知道底层是怎么实现的,之前就有看到过鸿蒙是支持 javascript 来开发的;
不知道有没有开发过的同学分享下使用体验;
( PS:这个应该不是仓颉)
1
ntfnyz 2022-11-17 11:28:07 +08:00 15
要素过多 双方辩手即将进场
|
2
yuhangch 2022-11-17 11:29:17 +08:00
那得请写 TS 和 SwiftUI 的 v 友发言了,声明式有很大的优势吗?还是只是种风格?
ArkScript 我觉的都好一些,ArkTS 阿巴阿巴,套娃🪆 |
3
kindjeff 2022-11-17 11:30:13 +08:00
(是否意味着前端 build 流程又多了一步从 ArkTS->TS )
|
4
nomagick 2022-11-17 11:32:08 +08:00 1
什么鬼为什么要来蹭 TS 的热度
|
5
DeactivatedOcean 2022-11-17 11:33:36 +08:00 via Android 10
宇宙第一语言
|
6
Bijiabo 2022-11-17 11:34:04 +08:00
呸~
|
8
churchill 2022-11-17 11:38:19 +08:00 2
是 dart 魔改太难吗
tui~ |
9
registerrr 2022-11-17 11:40:18 +08:00
@churchill #8 哈哈哈哈哈哈
|
10
TWorldIsNButThis 2022-11-17 11:41:12 +08:00
如果可以给 ts 加上 kotlin 的语法的话,那还不错
不过图里看起来就是个 framework |
11
icyalala 2022-11-17 11:49:06 +08:00 2
就是个 SwiftUI 这类框架,这好意思叫 “语言”。。
|
12
hackpro 2022-11-17 11:50:44 +08:00 via iPhone
每次都想搞个大新闻🐶
|
13
misslita 2022-11-17 11:52:24 +08:00 via Android 1
不错有进步,没拿山海经来命名了
|
14
zbinlin 2022-11-17 11:54:56 +08:00
这介绍怎么看都像是一个框架呀
|
15
dguge 2022-11-17 11:58:53 +08:00 via iPhone 1
在 v 站,不要提 hw 二字,大家会应激的
|
16
retrocode 2022-11-17 11:59:03 +08:00
嵌套地狱
|
17
jasonkayzk 2022-11-17 12:24:33 +08:00
沸腾 Lang
|
18
icedx 2022-11-17 12:29:20 +08:00
赢了!
|
19
molvqingtai 2022-11-17 12:36:41 +08:00
超集的超集,真超级棒👍🏻
|
20
mikeven 2022-11-17 12:36:43 +08:00 2
遥遥领先,
遥~遥~领先!! |
21
wangerka 2022-11-17 12:37:18 +08:00
缝合怪
|
22
dacapoday 2022-11-17 12:40:52 +08:00 32
一如既往保持 hw 吹牛的传统:明明只是个 UI ,非说是 OS ,明明只是个 UI 库,非说是语言。有时还要踩一脚它抄袭的对象。
|
23
yvescheung 2022-11-17 12:46:27 +08:00 2
害怕,以后用外国编程语言的是不是都要成为买办汉奸了
|
24
WebKit 2022-11-17 12:53:52 +08:00 via Android
这不就是 Android 的 Jetpack Compos 吗?只不过 Android 用的 kotlin 。鸿蒙这也太快了吧?这边出个啥,他就抄个啥
|
25
mmm159357456 2022-11-17 12:56:38 +08:00
套娃是吧
|
26
ChefIsAwesome 2022-11-17 12:57:24 +08:00 via Android 4
不是汉字编程,我很难支持他
|
27
Justin13 2022-11-17 13:04:52 +08:00 via Android
这种也配叫声明式 UI
|
30
xnmlllcy1 2022-11-17 13:11:38 +08:00 1
爱信等骂,经过今年秋招,华子又多了一个铁黑子😀😀😀
|
31
xnmlllcy1 2022-11-17 13:12:05 +08:00 2
华为出品 坚决抵制
|
32
zxCoder 2022-11-17 13:23:37 +08:00 1
不谈华为这个,就说 Jetpack Compose ,Swift UI 这写个页面不得累死,这么一行行代码的
|
33
flippedww 2022-11-17 13:24:23 +08:00
@Justin13 这已经几乎和 Jetpack Compose 和 SwiftUI 一模一样了, 这俩都是声明式 UI
|
34
silvernoo 2022-11-17 13:29:40 +08:00 1
给 flutter 套了 ts 的壳
|
35
MengiNo 2022-11-17 13:29:45 +08:00 via Android
dart 不是被吐槽了半天了么(虽然个人能接受)…
|
36
leavic 2022-11-17 13:30:52 +08:00
华为可是给中国人长脸了啊
|
37
Leonard 2022-11-17 13:31:14 +08:00
这不是 SwiftUI 么
|
38
wangxiang 2022-11-17 13:31:27 +08:00
遥遥领先
|
39
minami 2022-11-17 13:33:34 +08:00
阶段性沸腾产品罢了
|
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 上完成。优势自然是国内大批前端程序员可以方便的进入生态。
|
41
wangyzj 2022-11-17 13:36:05 +08:00 1
好像 dart 啊
|
42
wdhwg001 2022-11-17 13:44:28 +08:00 via iPhone
明明就是个 DSL ,和 jsx/vue 文件一个级别的,非要叫语言,市场部赢麻了沸腾了是吧。
|
43
R0ckyY2 2022-11-17 13:50:43 +08:00 20
华为的代名词就是:抄袭,缝合,欺骗。华为出品,必属垃圾。
|
44
ccyu220 2022-11-17 13:55:44 +08:00 4
不敢评价,一个星期前在抖音说了句不能算语言就是个框架
现在还能收到别人在骂我 |
45
s524256521 2022-11-17 14:04:34 +08:00 via Android
还行吧,移动端最火的跨平台声明式就是 compose 和 Swift UI ,华为要抄肯定只能抄这俩,不意外,就看具体操作了。
|
46
HuskyYellow 2022-11-17 14:32:47 +08:00 1
你再发一个 Dcloude 的 uts , 大家一起沸腾,然后将寒气传给每一个人
|
47
Natsuno 2022-11-17 14:35:13 +08:00
不是白象的我不用
|
48
php01 2022-11-17 14:35:59 +08:00
菊语言
|
49
javlib 2022-11-17 14:54:29 +08:00 2
(圣光变身)一切邪恶,终将绳之以法
|
50
aw2350 2022-11-17 15:57:04 +08:00 2
这种垃圾公司,老老实实做你自己的主业不行吗。。。有这种公司的存在简直就是阻碍中国 IT 的创新与进步
|
51
anonymous2351d00 2022-11-17 16:09:28 +08:00
我苹果看不见
|
52
james504 2022-11-17 16:10:28 +08:00 1
不敢评价,怕被扣:
汉奸, 反贼, 你不喜欢你别用啊, 你不喜欢你可以不看啊, 你那么不喜欢中国别打中文字啊, 中国有这家公司不支持就算了你还踩他你不爱国, ..... 的帽子。 |
54
royzxq 2022-11-17 16:27:10 +08:00
超集的超集,我缝,我疯狂的缝
|
55
Vtwoguest 2022-11-17 16:33:59 +08:00 1
别的不清楚 我只知道 php 文档这句话要改一下了
PHP is the best language for web programming |
56
marcong95 2022-11-17 16:50:32 +08:00 1
这语法,楼上也别说这是 UI 库不是语言了,这不是语言太侮辱 TS 了吧。高度同意楼上说的叫 ArkScript 比叫 ArkTS 好
Button() {}.onClick(() => {}) 你跟我说说 TS 哪来的这种奇妙的语法 SwiftUI 不太懂,苹果的语言的语法一直都挺奇妙的。从 TS 的角度来看,Button 这东西到底是个啥 (本来想用奇葩,迫于 i2ex ,还是改成中性偏褒义的奇妙吧) |
57
Ashore 2022-11-17 16:50:34 +08:00 1
ArkTS is the best language for web programming
|
59
iloveayu 2022-11-17 17:08:46 +08:00
能让鸿蒙再次伟大,华为沸腾两次。
|
60
xz410236056 2022-11-17 17:08:48 +08:00
@yuhangch #2 别的不知道,SwiftUI 优势很大,大就大在,能让一些喜欢用纯代码布局的傻逼和喜欢用 GUI 的开发人员兼容到一起,简直跨时代。
|
61
fanxasy 2022-11-17 17:22:04 +08:00 2
一副安卓被吸干,冷笑走向 TS 的画面跃然纸上
|
62
bugmaker233 2022-11-17 18:12:29 +08:00
支持华为!
|
63
janus77 2022-11-17 18:23:02 +08:00
稍微看了下,DSL 呗……勉强算语言吧,不过给程序员用的东西真没必要过度营销,你做的好大家自然会买账
|
64
xuelu520 2022-11-17 18:43:48 +08:00
为啥不叫 hwTS 语言。
|
65
calvinHxx 2022-11-17 18:53:00 +08:00
我先来带节奏!!!。
ArkTS 是世界上最好的语言. [手动狗头] |
66
FightPig 2022-11-17 19:25:51 +08:00
v2 上华为不管出的是啥都是 p ,毕竟 v2 上的全是大神。
|
67
ylls 2022-11-17 19:49:39 +08:00
@FightPig 可能技术人员比较较真 觉得技术领域还是少一些营销 务实点好 不可否认这东西对国内来说是个进步 但是相比目前的主流有一定的差距 借鉴不可怕 就怕的是借鉴别人的时候还要踩低一下凸显自己很牛逼
|
68
newmlp 2022-11-17 19:50:53 +08:00
唾~
|
69
Torpedo 2022-11-17 21:19:00 +08:00
看起来是给鸿蒙 os 开发用的。那么问题来了:鸿蒙 os 开发前景怎么样?市场待遇、需求如何?
|
70
ZRS 2022-11-17 21:23:18 +08:00 via iPhone
比缝更缝
|
72
ruxuan1306 2022-11-17 21:42:51 +08:00
TypeScript 很不错,它让很多熟练纯面向对象语言的开发者在 JavaScript 中也能保持一切都写在 Class 里的良好习惯。
|
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 一直到最近都还在更新,如果鸿蒙真的用上了这些,说语言也不过分。 |
74
dw2693734d 2022-11-17 22:14:53 +08:00 via iPhone
一切都向苹果看齐
|
76
moliniao 2022-11-17 22:34:57 +08:00
看一个事物,要看环境,对于现在的华为来说,降低开发者难度,普及推广自身生态最关键
就好像 google ,也是到了一定的程度才推出的 go 和 dart |
77
freshmanc 2022-11-17 23:09:26 +08:00
“基本 UI 描述:ArkTS 定义了各种装饰器、自定义组件、UI 描述机制,再配合 UI 开发框架中的 UI 内置组件、事件方法、属性方法等共同构成了 UI 开发的主体。”
为什么这种叫语言。。。不是 UI 框架的吗 |
78
huohei 2022-11-17 23:39:16 +08:00 via iPhone
我去,这不是我们 SwiftUI 吗,没想到居然被华为收购了🤣,还变成了 typescript ,怎么证明?
|
79
mbooyn 2022-11-17 23:49:19 +08:00 via iPhone
借楼问一下,鸿蒙是不是抄的安卓?
|
80
WOLFRAZOR 2022-11-17 23:51:24 +08:00 via Android
这不就是 Jetpack Compose 吗?
|
81
BoringBB 2022-11-18 08:00:53 +08:00
@icatme 我们一般把 Debian 称为 Linux 发行版。Linux 只是一个内核,一个完整的操作系统除了内核外,还需要配套的外围软件。AOSP 也使用了 Linux 内核,从某种意义上来说也属于 Linux 发行版。
|
82
free9fw 2022-11-18 08:48:32 +08:00
始终是山寨,连开发语言也山寨
|
83
montaro2017 2022-11-18 09:03:22 +08:00
@silvernoo 我觉得这还不如 flutter
|
84
litmxs 2022-11-18 09:30:21 +08:00 via Android
为什么自己的编程语言不用中文? tui 卖国公司
|
85
killeder 2022-11-18 09:31:13 +08:00
251 卖的东西都是骗 250 的
|
86
polo3584 2022-11-18 09:38:37 +08:00 2
用了半年的多的说句话,这个东西本来叫 ets ,是 ts 的超集,只是这次改名叫 arkTS ,没太多新东西,华为也没说是一种新语言啊。。。不还是 TS 么,亮点其实是 arkUI 的框架和编译器。不过这个帖子里真去实操过的估计不超过 10 个,全在沸腾。在我看来黑华为的和吹华为的都是同一类人。
|
87
silvernoo 2022-11-18 09:55:56 +08:00
@ruxuan1306 最近正在被 ts 摧残,比 flutter 的嵌套地狱更难受的是 ts 的函数回调地狱
|
88
pkwenda 2022-11-18 10:02:23 +08:00
华为赢麻了
|
89
Mexion 2022-11-18 15:02:33 +08:00
这也叫语言?那 jsx 也是语言?
|
90
lisxour 2022-11-19 10:06:19 +08:00
@marcong95 我不知道你用没用过 TS ,但我日常 TS 开发,"Button() {}.onClick(() => {})"语法上就是很正常的 TS 或者说 JS 语法,"Button() {}"定义了一个 Button 方法,至于为什么还能调用"onClick"方法,直接给 prototype 加个"onClick"即可。所谓的"ArkTS 语言"也就是拥有一堆 typings 的框架。
|
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 。 |
92
lisxour 2022-11-21 11:18:43 +08:00
@marcong95 具体是不是编译时做处理这个没深入了解,但是加`onClick`或者类型提示这些其实 ts 有很骚的高级类型提示,比如`https://github.com/ronami/HypeScript`,就基本可以做到这些程度(代码看起来确实挺诡异,但是自身语法没问题+高级 typings 是能确保写代码时的正确提示的),但如你所说的,最后也得走一遍编译器。鉴于现在各种各样花里胡哨的框架都有自己的后处理插件或者编译器,ArkTS 不能说是一门语言也是能理解的。
|
93
bunny189 2022-11-23 09:42:26 +08:00
flutter 既视感太强
|
94
makelove 2022-11-23 22:43:27 +08:00
过去瞄了一眼,感觉还行的样子。我最近几年对华为挺刮目相看的。
不过这公司不管做什么在这论坛一定就是楼上的场景 |
95
ranhuan 2023-03-17 11:34:38 +08:00 1
华为的 OS 和 language 的最近动向感觉是在做一个脱钩后也能达到世界顶级开发能力并且可以自行迭代的国产替代,对于自研等等不在注重,希望只是一个阶段性目标。
|
96
ranhuan 2023-03-17 11:39:00 +08:00
华为的产品起点还是基于现有国际开源产品
鸿蒙基于 AOSP 语言基于 TS 芯片基于 ARM IDE 基于 IDEA 不过华为吃的很透,基本上在起点位置可以做到和主干同样甚至更高质量的后续迭代。方向不能说错误,但在起点位置很容易思想混乱,多迭代几次走出自己的路就能统一思想。 |
97
dengxuejiu 2023-09-08 11:17:26 +08:00
吹就完事了
|
99
xu33 263 天前
说是 TS 超集,但不支持的 TS 特性好像有几百个(滚动条滚了几秒都没滚完),貌似重新定义了“超集”?
|
100
xu33 263 天前
弄了一堆奇怪语法导致不能用 vscode 开发也是硬伤
|