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

2022-11-17 11:24:58 +08:00
 washbrain

官方描述

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:这个应该不是仓颉)

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

13648 次点击
所在节点    问与答
100 条回复
BoringBB
2022-11-18 08:00:53 +08:00
@icatme 我们一般把 Debian 称为 Linux 发行版。Linux 只是一个内核,一个完整的操作系统除了内核外,还需要配套的外围软件。AOSP 也使用了 Linux 内核,从某种意义上来说也属于 Linux 发行版。
free9fw
2022-11-18 08:48:32 +08:00
始终是山寨,连开发语言也山寨
montaro2017
2022-11-18 09:03:22 +08:00
@silvernoo 我觉得这还不如 flutter
litmxs
2022-11-18 09:30:21 +08:00
为什么自己的编程语言不用中文? tui 卖国公司
killeder
2022-11-18 09:31:13 +08:00
251 卖的东西都是骗 250 的
polo3584
2022-11-18 09:38:37 +08:00
用了半年的多的说句话,这个东西本来叫 ets ,是 ts 的超集,只是这次改名叫 arkTS ,没太多新东西,华为也没说是一种新语言啊。。。不还是 TS 么,亮点其实是 arkUI 的框架和编译器。不过这个帖子里真去实操过的估计不超过 10 个,全在沸腾。在我看来黑华为的和吹华为的都是同一类人。
silvernoo
2022-11-18 09:55:56 +08:00
@ruxuan1306 最近正在被 ts 摧残,比 flutter 的嵌套地狱更难受的是 ts 的函数回调地狱
pkwenda
2022-11-18 10:02:23 +08:00
华为赢麻了
Mexion
2022-11-18 15:02:33 +08:00
这也叫语言?那 jsx 也是语言?
lisxour
2022-11-19 10:06:19 +08:00
@marcong95 我不知道你用没用过 TS ,但我日常 TS 开发,"Button() {}.onClick(() => {})"语法上就是很正常的 TS 或者说 JS 语法,"Button() {}"定义了一个 Button 方法,至于为什么还能调用"onClick"方法,直接给 prototype 加个"onClick"即可。所谓的"ArkTS 语言"也就是拥有一堆 typings 的框架。
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
2022-11-21 11:18:43 +08:00
@marcong95 具体是不是编译时做处理这个没深入了解,但是加`onClick`或者类型提示这些其实 ts 有很骚的高级类型提示,比如`https://github.com/ronami/HypeScript`,就基本可以做到这些程度(代码看起来确实挺诡异,但是自身语法没问题+高级 typings 是能确保写代码时的正确提示的),但如你所说的,最后也得走一遍编译器。鉴于现在各种各样花里胡哨的框架都有自己的后处理插件或者编译器,ArkTS 不能说是一门语言也是能理解的。
bunny189
2022-11-23 09:42:26 +08:00
flutter 既视感太强
makelove
2022-11-23 22:43:27 +08:00
过去瞄了一眼,感觉还行的样子。我最近几年对华为挺刮目相看的。


不过这公司不管做什么在这论坛一定就是楼上的场景
ranhuan
2023-03-17 11:34:38 +08:00
华为的 OS 和 language 的最近动向感觉是在做一个脱钩后也能达到世界顶级开发能力并且可以自行迭代的国产替代,对于自研等等不在注重,希望只是一个阶段性目标。
ranhuan
2023-03-17 11:39:00 +08:00
华为的产品起点还是基于现有国际开源产品
鸿蒙基于 AOSP
语言基于 TS
芯片基于 ARM
IDE 基于 IDEA
不过华为吃的很透,基本上在起点位置可以做到和主干同样甚至更高质量的后续迭代。方向不能说错误,但在起点位置很容易思想混乱,多迭代几次走出自己的路就能统一思想。
dengxuejiu
292 天前
吹就完事了
RobinzzZ
200 天前
@kindjeff 好像是个熟人?
xu33
78 天前
说是 TS 超集,但不支持的 TS 特性好像有几百个(滚动条滚了几秒都没滚完),貌似重新定义了“超集”?
xu33
78 天前
弄了一堆奇怪语法导致不能用 vscode 开发也是硬伤

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/895887

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX