dart 这个语言有前途,优点挺多

2023-01-10 13:32:28 +08:00
 ericgui

有点像 Java ,但 vscode 就可以写了

有点像 javascript ,但却是静态语言,比动态语言感觉稳很多

又有 flutter 这个框架,覆盖 iOS ,Android ,web 和 desktop

将来要是搞个后端框架,就可以全栈了

13365 次点击
所在节点    程序员
92 条回复
whyrookie
2023-01-10 14:27:59 +08:00
@jiangzm #4 这个是趋势吧,就是为了摒弃 XML
theeye
2023-01-10 15:18:23 +08:00
dart 的后端框架:dart frog
murmur
2023-01-10 15:32:51 +08:00
@wangtian2020 java 读写文件也不需要这个流那个流,啥语言没几个 util 可以用啊,你能想到的东西库开发者也会想到
bunny189
2023-01-10 15:39:35 +08:00
dart 写起来是挺舒服的
murmur
2023-01-10 15:41:57 +08:00
@whyrookie 不会有人认为嵌套式的元素定义很舒服吧,dart 有个 dart-x 就牛批了,可惜他没有

android 不喜欢用 xml 描述界面是因为他属性又长又臭,而且很多动态的东西在 xml 里写不出来,但是 rn 这种完全可以用 xml 写动态界面
fiypig
2023-01-10 15:47:35 +08:00
好的,我马上学
netabare
2023-01-10 15:56:13 +08:00
在语言特性上 dart 其实没什么特别的,感觉也就比 java 多了个空安全

而且好像除了 flutter 外也基本没人用了
hellojukay
2023-01-10 15:59:40 +08:00
flutter 目前在国内还是不温不火
jiangzm
2023-01-10 16:00:15 +08:00
@whyrookie #21 想请问从哪得出来有这个趋势的?
hellojukay
2023-01-10 16:00:52 +08:00
dart 的 json 序列化,反序列化非常蛋疼。
chisj
2023-01-10 16:03:39 +08:00
写了十二年的:C/Objc/Swift,最近写 Dart ,确实节省了不少精力。
chisj
2023-01-10 16:04:54 +08:00
也许它不是完美的语言,不是面面俱到,但是确实很适合开发客户端,Flutter 的设计也比苹果的 cocoa 那坨十几年了还是半成品的组件好太多了。
youxiachai
2023-01-10 16:05:10 +08:00
@jiangzm 你这是逆潮流化啊
monkeyWie
2023-01-10 16:05:11 +08:00
dart 写起来是挺舒服的,但是 flutter 写起来不舒服(当然是因为 flutter 不支持反射的原因,导致 json 和泛型处理都挺麻烦,还有恶心的嵌套)
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 的产品也不少,主要面向需要跨平台开发的场景。如果你觉得好用就可以用。本身这些也都是工具,根据需要选型就好。
jiangzm
2023-01-10 16:24:00 +08:00
@youxiachai #33 愿闻其详
zjsxwc
2023-01-10 16:29:59 +08:00
但我觉得 苹果的 swift 比 dart 有前途。
debuggerx
2023-01-10 16:48:08 +08:00
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/
limiter
2023-01-10 16:48:14 +08:00
后端框架有啊,shelf ,https://github.com/sunlimiter/dart_api_service 我这边用 dart 写的后端项目,有兴趣可以看下
whyrookie
2023-01-10 17:18:30 +08:00
@jiangzm #4 Jetpack Compose 也去掉了 xml ,我新的项目尝试了 Jetpack Compose 之后,发现写页面很快速,也非常直观。

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

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

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

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

© 2021 V2EX