有点像 Java ,但 vscode 就可以写了
有点像 javascript ,但却是静态语言,比动态语言感觉稳很多
又有 flutter 这个框架,覆盖 iOS ,Android ,web 和 desktop
将来要是搞个后端框架,就可以全栈了
1
musi 2023-01-10 13:36:02 +08:00 2
"将来要是搞个后端框架,就可以全栈了"
你在说 TS ? |
2
Mexion 2023-01-10 13:37:10 +08:00 13
说得好,我选择 TS
|
3
corcre 2023-01-10 13:38:01 +08:00 4
第一个也算优点吗, 只要你能习惯得了 vscode 也能写 java...
|
4
jiangzm 2023-01-10 13:46:03 +08:00 2
dart 语言本身还好,就是反序列化很麻烦,而 flutter 用对象去组织页面结构就很烦碎和不直观, 希望早日回归 XML 结构
|
5
Leviathann 2023-01-10 13:46:06 +08:00
2023 年像 java 和 js 还算优点吗?
而且这语言的类型我记得还有设计上的问题,和协变逆变有关的,具体我忘了 |
6
yyfearth 2023-01-10 13:46:12 +08:00
Dark 和 TS 比没有特别大的优势呀
|
7
sinnosong1 2023-01-10 13:48:21 +08:00 2
你说这些优点 C#全部都有,静态语言,支持 dynamic ,全平台支持
|
8
HungryOrangeCat 2023-01-10 13:49:28 +08:00
dart 语言的特性太大杂烩了
|
9
ericgui OP @sinnosong1 c#可以写 android ?
|
12
sinnosong1 2023-01-10 14:02:46 +08:00
@ericgui 看看 Avalonia 、maui 、Uno 光我知道的就有 3 种不同的方案。maui 是微软支持的,但是 Linux 系统是社区支持
|
13
zoharSoul 2023-01-10 14:03:50 +08:00 1
dart 的 ide 支持比 Java 差了好多...
|
14
janus77 2023-01-10 14:07:17 +08:00
dart 搞后端语言还差很大距离吧,后端要求的高稳定性、高扩展性、高性能这些东西都不是 dart 目前发力的重点,其 sdk 至少要根据服务端系统进行深度针对优化才行,更不用说那些复杂业务逻辑写起来语法是否简洁、架构是否牛逼
|
15
mxT52CRuqR6o5 2023-01-10 14:07:32 +08:00 1
和 js 比有优势,和 c#、java/kotlin 比的话就不好说了
|
17
Aurt 2023-01-10 14:14:09 +08:00
写 dart 比写 kt 舒服
|
18
sikong31 2023-01-10 14:16:06 +08:00
也就是跨端的现代语言,实际用起来完成度还是差一点,没有 swift 写着舒服
|
19
mxT52CRuqR6o5 2023-01-10 14:17:05 +08:00
要我说 dart 的优势在于因为自身的设计,可以比较高效高质量的编译到 js ,而 dart 是比 js 有优势的,其他的那些优秀语言可能没那么容易高效高质量的编译到到 js
|
20
wangtian2020 2023-01-10 14:24:54 +08:00
dart 挺喜欢的,读写文件也没 java 的这个流那个流,不用编译命令行运行速度很快,有 nodejs 那味了
|
22
theeye 2023-01-10 15:18:23 +08:00
dart 的后端框架:dart frog
|
23
murmur 2023-01-10 15:32:51 +08:00
@wangtian2020 java 读写文件也不需要这个流那个流,啥语言没几个 util 可以用啊,你能想到的东西库开发者也会想到
|
24
bunny189 2023-01-10 15:39:35 +08:00
dart 写起来是挺舒服的
|
25
murmur 2023-01-10 15:41:57 +08:00
@whyrookie 不会有人认为嵌套式的元素定义很舒服吧,dart 有个 dart-x 就牛批了,可惜他没有
android 不喜欢用 xml 描述界面是因为他属性又长又臭,而且很多动态的东西在 xml 里写不出来,但是 rn 这种完全可以用 xml 写动态界面 |
26
fiypig 2023-01-10 15:47:35 +08:00
好的,我马上学
|
27
netabare 2023-01-10 15:56:13 +08:00 via Android 1
在语言特性上 dart 其实没什么特别的,感觉也就比 java 多了个空安全
而且好像除了 flutter 外也基本没人用了 |
28
hellojukay 2023-01-10 15:59:40 +08:00
flutter 目前在国内还是不温不火
|
30
hellojukay 2023-01-10 16:00:52 +08:00
dart 的 json 序列化,反序列化非常蛋疼。
|
31
chisj 2023-01-10 16:03:39 +08:00
写了十二年的:C/Objc/Swift,最近写 Dart ,确实节省了不少精力。
|
32
chisj 2023-01-10 16:04:54 +08:00
也许它不是完美的语言,不是面面俱到,但是确实很适合开发客户端,Flutter 的设计也比苹果的 cocoa 那坨十几年了还是半成品的组件好太多了。
|
33
youxiachai 2023-01-10 16:05:10 +08:00
@jiangzm 你这是逆潮流化啊
|
34
monkeyWie 2023-01-10 16:05:11 +08:00 1
dart 写起来是挺舒服的,但是 flutter 写起来不舒服(当然是因为 flutter 不支持反射的原因,导致 json 和泛型处理都挺麻烦,还有恶心的嵌套)
|
35
libook 2023-01-10 16:21:29 +08:00
Dart 是 Google 的亲儿子,早在 2014 年就大力推广过一阵子了,当时我记得专门做了原生支持 Dart 的 Chromium 版本,还提供了 Dart 转 JS 的工具,甚至后来还有 AngularDart ( Angular 是 Google 的另一个亲儿子)。
不过后来 ECMA 、W3C 、WHATWG 打了鸡血,特别是 ES6 掀起了一场 JS 变革,微软也来蹭热度在 ES6 正式定稿前出了个 TS ; Dart 的热度就降下去了。 后来被 Oracle 告 Android 侵权了 Java ,Google 被告烦了,于是搞了两条路线:一个是联合 JetBrains 用 Koltlin 替换 Android 里的 Java ,另一个是发展 Flutter 和 Fuchsia 来重新推 Dart 。 后端框架也有吧,你可以去 Google 上搜一下看看,只不过现在用于生产的案例比较少。 Dart 本身能被 Google 推这么多年,说明本身素质还行。使用 Flutter 的产品也不少,主要面向需要跨平台开发的场景。如果你觉得好用就可以用。本身这些也都是工具,根据需要选型就好。 |
36
jiangzm 2023-01-10 16:24:00 +08:00
@youxiachai #33 愿闻其详
|
37
zjsxwc 2023-01-10 16:29:59 +08:00
但我觉得 苹果的 swift 比 dart 有前途。
|
38
debuggerx 2023-01-10 16:48:08 +08:00 14
5 年+的 flutter 开发经验,也用 dart 开发过后端,我人为的 dart 的优点:
1. 支持 AOT 编译,产物可以几乎无依赖的直接部署,这点可以对标 go 的部署方便,比 JS 、TS 、python 等需要运行时依赖的语言方便很多,比如我一个项目里 dart 后端只需要这样一个 Dockerfile: https://github.com/debuggerx01/dde_gesture_manager/blob/dev/api/Dockerfile 就可以得到一个 10 几 MB 的镜像,服务跑起来内存占用也才 50MB 不到,可以说非常方便了,资源消耗也够低 2. 语法常规,可以说几乎没有非常特立独行的概念和语法,几乎所有语法特性都是在其他语言中经过验证的,结果就是 dart 学起来曲线平滑、写起来非常舒服、代码表达能力和组织能力也相当不错,尤其是在有其他语言如 Java 系列、js 系列、Python 、Swift 经验以后。举几个例子: a.语法级的异步支持,不像原始的 java 一样像做点啥都需要开线程,结果各种多线程 bug ,开发时的心智负担低很多,性能还不差 b. 单继承+mixin ,即提高了代码复用性和组织能力,又避免了多继承带来的各种问题 c. 强类型,尤其是全面转向健全空安全之后,类型系统可以说达到了一个相当均衡的状态,该有的特性基本都有(抽象类、泛型等,GO ?),正常使用情况下很少出现包括 NPE 在内的类型错误(JS ?),而且类型代码书写的成本也不高,很少需要复杂的类型处理(TS ?) 3. 还算不错的工具链和 IDE 支持,pub 依赖管理比 npm 等好用不少,dart format 格式化可以避免多人合作风格不一导致的代码差异和冲突,dart compile 就可以很方便的将源码编译成 js/可执行二进制程序 /jit 快照 /aot 快照,jetbrains 全系和 vsc 都可以安装 dart 插件获得相当稳定的 IDE 支持( Swift/XCode ?),还有内置的基于 web 和 ws 的 DevTools ,分析程序的运行性能也很方便 4. 几乎没有平台依赖,平台支持足够广泛,而且几乎都可以支持大部分功能,不像某些语言,号称跨平台,实际上是和某一平台和生态强绑定,其他平台只有“core”支持( C#、Swift ?),发展前景高下立判 5. 生态已经足够繁荣。这点可能很多人会不认同,会去和 Java 和 js 比,但是就我而言,想做的东西几乎都可以用它做了,例如: a. 前端,不用说,肯定就是 flutter ,这个方案可以覆盖除了小程序之外几乎所有的前端需求。可能有些人觉得 flutter 不行、不好用,我只能说可能是有些人和有些特定项目不适合 flutter 而已,或者是单纯的能力不足 b. 后端,简单的需求用 dart 内置的 io 库就能解决差不多,复杂的我个人推荐“Angel3”这个框架,总的来说比较接近 Express.js ,后端开发常见的功能也都支持了,只要花点时间看看源码(很简单)完全可以满足一般的后端开发需求 c. 工具脚本,这点得益于 dart 既可以解释执行也可以编译执行,就非常适合一些简单的工具开发。我在自己电脑上就会用 dart 写一些脚本,随时可以方便的修改使用;编译后可以直接放到手机的 Ternux 或者机顶盒路由器上运行,部署使用方便 d. 各种三方库,基本都可以在 pub.dev 中找到,很多时候并不需要像很多以为的需要造很多轮子。印象比较深刻的是在移植一个 python 的算法到 dart 时,科学计算和信号处理这种相对冷门的库都已经有实现: https://www.debuggerx.com/2021/02/18/qrs-detector-for-flutter-in-dart/ |
39
limiter 2023-01-10 16:48:14 +08:00
后端框架有啊,shelf ,https://github.com/sunlimiter/dart_api_service 我这边用 dart 写的后端项目,有兴趣可以看下
|
40
whyrookie 2023-01-10 17:18:30 +08:00
@jiangzm #4 Jetpack Compose 也去掉了 xml ,我新的项目尝试了 Jetpack Compose 之后,发现写页面很快速,也非常直观。
|
41
hellojay 2023-01-10 17:37:03 +08:00
dart 的包管理、异步等等真的能感觉在吸收各家之长,写起来非常符合直觉。每次写 dart 我都感觉这个语言很「贼」,从其他平台语言中吸收了很多东西
|
42
jamosLi 2023-01-10 17:57:28 +08:00
小十年了,还是要死不活的,能有几个十年?
|
43
dcoder 2023-01-10 18:23:02 +08:00 2
作为写过很多后端语言的人, 也用过一段时间 dart, 评价是: 垃圾
语法是大杂烩. 而且 dart1, dart2 还有不小区别... 再加上异步和异常处理, 执行流程很容易晕, debugger 打上断点还是看着晕 属于典型的总体设计没个定数,没自信, 改来改去瞎折腾... 再加上生态跟不上, 两年前用个 Redis Steam 都找不到好用的. 哪个构架师要在后端组里推广 dart, 请把他拖出去枪毙 10 分钟. |
44
Al0rid4l 2023-01-10 20:38:41 +08:00
就写起来舒服而言, TS C# F# Kotlin 都比它舒服, 能做的事情来说 Kt 比它少个 iOS 但后端强太多, 总的来说如果不是有很强烈的客户端跨平台需求, 个人觉得没啥吸引力
|
45
mejee 2023-01-10 23:28:48 +08:00
@jiangzm dart 本身是支持反射的,flutter 为了优化包体积和性能禁用了反射,所以在 fluuter 里反序列化很麻烦。最近在搞 flutter ,反序列化确实是太麻烦了
|
46
mejee 2023-01-10 23:32:38 +08:00
dart 这个语言很多设计(语法糖层面的)确实用起来很爽,很多设计比如 null safe 都很爽。唯一不爽的感觉就是语法有点多(个人感受有点乱,虽然是因为没有认真的系统学,直接上手的)
|
47
DOLLOR 2023-01-10 23:51:08 +08:00
对我来说,dart 相比 JS 的好处就是工具链没 JS 那么复杂,相对统一,不像 JS 那样百花齐放。而且能编译二进制这点,很适合写一些小工具。但是语法这方面,感觉写起来还是不如 TS 舒服。
所以,写一些命令行小工具可能会考虑用它,前端、后端都不考虑用。 |
49
HeapOverflow 2023-01-11 01:00:01 +08:00 via iPhone
Dart 的 async* 不能更好用
|
50
shellwen 2023-01-11 04:54:55 +08:00 via Android
Kotlin yes
|
51
yazinnnn 2023-01-11 07:16:56 +08:00
dart 的演化方向是 js->java->ocaml
不知道终极目标是 lisp 还是 haskell |
52
montaro2017 2023-01-11 08:37:57 +08:00
@debuggerx #38 MPFlutter 了解一下,支持小程序
|
54
debuggerx 2023-01-11 09:22:40 +08:00
@montaro2017 MPFlutter 是可以用写 flutter 的方式开发小程序,但是几乎没法复用代码,要支持小程序,就只能用最基础的 widgets 库和 MPFlutter 提供的组件,flutter 内置的 Material 和 Cupertino ,以及大量社区的库都没法用了,所以几乎必然是小程序一套代码,其他前端平台一套代码,这样的话我还不如用其他更成熟的方案去写小程序,反正都是重做。
虽然我觉得 Flueer/dart 很好,但也不无脑吹它可以做任何事,我的观点一直是根据需求选合适的方案。开发小程序我个人大概率会用 Taro ,对这个方案也还算熟悉,开发体验也还可以 |
55
DCELL 2023-01-11 09:23:18 +08:00
我能说 Swift 吊打 Dart 么...
虽然生态只能开发 iOS |
56
dd991 2023-01-11 09:25:16 +08:00
Flutter 想法和初衷都是好的,但距离复杂问题,ios android 上的细节,1 像素问题,等,还是需要一段距离要走的。
个人开发者或者小型项目比较适合 另外一个就是你必须有原生的基础,才能写的方便点 |
57
zqlcrow 2023-01-11 09:32:15 +08:00
某位 5 年+的 flutter 开发经验?
意味着 18 年 1 月就开始进行 flutter 开发。 理论上没问题,实际上有点怀疑。 |
58
MeteorCat 2023-01-11 09:33:35 +08:00 via Android
我觉得 kotlin 都比他有前途
|
59
debuggerx 2023-01-11 09:38:01 +08:00 4
@zqlcrow 应该是在说我对吧~
可以看我自己的回顾总结: https://www.debuggerx.com/2020/12/29/these-years-about-flutter-and-me/ ``` 2017 年 12 月: 为公司规划中的新项目调研跨平台方案可行性,在尝试了包括 React Native 、ionic 、Cordova 、Cordova 、Weex 等在内几乎当时所有流行的方案之后,竟没有一个能够让人满意的。直到发现了当时还在 alpha 版的 Flutter ,被其优秀的开发体验、精妙的架构设计和惊艳的流畅度表现所折服,于是开始正式研究该框架。 ``` 一个佐证是,我写的 flutter 的 json 解析工具的初版提交日期: https://github.com/debuggerx01/JSONFormat4Flutter/commit/e234c5bc77c84017a77fe79a969e9b24d6eb4710 |
60
FreshOldMan 2023-01-11 09:38:49 +08:00
新语言的生态不行,有待成长
|
63
TomVista 2023-01-11 09:50:37 +08:00
react 和 vue 告诉我们,对于前端, 面向对象 / class like 是糟粕,已被放弃 .dog
|
64
debuggerx 2023-01-11 09:55:49 +08:00
|
65
wdwwtzy 2023-01-11 10:00:50 +08:00 via iPhone
@debuggerx 没看到什么亮点啊,都是常见的语法。
另外有些地方还 var 和具体类型混用了,是不是都用 var 好一些 |
66
debuggerx 2023-01-11 10:05:40 +08:00
@wdwwtzy 我觉得没什么亮点就是优点,上面有解释,我喜欢这个 Angel3 这个 dart 的后端框架就是因为觉得它和 Express 很像,写起来有熟悉的感觉
|
67
sjhhjx0122 2023-01-11 10:10:07 +08:00 4
@TomVista angular webcomponent 告诉我们,对于前端,面向对象也是瑰宝
|
68
serco 2023-01-11 10:16:45 +08:00
要不是 flutter, Dart 现在应该坟头草都三米高了。。。
只能说再好再烂的语言都需要一个流行的场景 |
69
simo 2023-01-11 10:18:20 +08:00
多学几个语言就好了,不同场景利用不同语言优势,甚至组合开发很正常
|
70
yuankui 2023-01-11 10:28:21 +08:00
dart 的 json 序列化就要把人恶心死。
|
71
mxT52CRuqR6o5 2023-01-11 10:49:40 +08:00 via Android
@TomVista 主要是 js 的 class 太羸弱了,dart 里用 class 描述组件其实还好
|
72
ajaxpost 2023-01-11 10:57:49 +08:00
dart 有用起来很爽的持久层框架吗
|
74
XCFOX 2023-01-11 11:44:52 +08:00
同样是谷歌的语言,Dart 比 go 要现代得多。
要是谷歌当初选择在服务端上发力 Dart 而不是 go 就好了 |
75
kingzeus 2023-01-11 12:20:34 +08:00
语言从来不是重点,相对而言,文档完备程度 /开发环境的友好度 更为重要
从产品层面来说,大部分情况下,都是根据业务场景去选择实现方案,包括选择开发语言的。小部分情况也是基于现有开发人员的技能来选择开发语言的,几乎就没有因为语言特性来选择产品开发语言的。 语言的很多特性是可以不用的,比如 C++有多重继承,在项目上完全可以忽略的,也不会影响产品性能。所以纯粹讨论语言特性没啥意义,大部分其实并不会被使用。 |
76
MakHoCheung 2023-01-11 13:28:32 +08:00
@DCELL Swift 我心目中第一的现代语言
|
77
a62527776a 2023-01-11 13:32:59 +08:00
资本不会考虑这些
|
78
chrisia 2023-01-11 13:38:52 +08:00
kotlin 不是无敌?
|
79
ericgui OP |
80
CaffreySun 2023-01-11 14:08:45 +08:00
@jiangzm xml 估计回不去了,最近客户端新出的 UI 开发技术都是用代码进行声明式布局( SwiftUI 、Jetpack Compose 、Flutter ),我认为一个很重要的原因是代码声明式布局要比 XML 简单,学习 xml+操作 xml 的语言 的成本比只学习一门 dart/swift/kotlin 语言要高。
|
81
silvernoo 2023-01-11 14:11:23 +08:00
dart 确实挺舒服,尤其已经熟练了 Java 以后
|
82
janxin 2023-01-11 15:12:44 +08:00
没什么用,前端同类竞争中胜利者是 TypeScript ,本质上还是 TS 不至于对 JavaScript 改变太多东西。
现在 dart 的很多特性发展方向都去支持 Flutter 了。Dart 也有后端框架,只是 CRUD 自然没问题,不过后端生态还是会更复杂一点。目前 Dart 的东西更容易从前端方面移植,后端生态也要看 FFI 的成熟度更高一点之后才好处理。 |
83
Orangeee 2023-01-11 16:13:02 +08:00
2023 年 6 月左右,Dart3 要发布了。
|
84
zhuweiyou 2023-01-11 18:10:33 +08:00
已经放弃 vscode 了,还是 idea 天下第一
|
86
bobtwain 2023-01-11 19:04:04 +08:00 1
C#都可以做到
|
87
dbskcnc 2023-01-11 19:06:19 +08:00 via Android
明年这个时候会更合适, 目前还差点意思, 不过后端还是算了吧, 能搞定前端就是很大的成绩了
|
88
KENNHI 2023-01-11 22:21:44 +08:00 via Android
@CaffreySun 不是简单与否的问题,主要是写 xml 太痛苦了,看到 xml 就想吐。spring boot 流行的最大原因就是不用写 xml 配置文件,现在 Java 程序员宁可在 Java 里面用标注写配置也不愿意碰 xml
|
89
chengxiao 2023-01-11 22:27:54 +08:00
dart 这套娃程度确定简洁么.....
|
91
ipcjs 2023-01-12 19:44:38 +08:00
前端有 TS ,后端有 Java/Go ,跨桌面端有 Electron ,小程序有 Taro ,Android 有 Compose ,iOS 有 SwiftUI
只有跨移动端,才是 Flutter/Dart 的应用场景,不要拿着锤子看啥都像钉子😓️ |
92
Frank9621 2023-01-13 12:02:07 +08:00 via Android
dart 用的不多,但是可选形参真的太舒服太丝滑了,特别是跟 go 这种连参数默认值都不支持的语言比起来
|