• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ONEO666
V2EX  ›  程序员

从头开发一个多平台应用,大家会考虑哪种技术栈?

  •  1
     
  •   ONEO666 ·
    oneo-me · Jun 12, 2022 · 6647 views
    This topic created in 1606 days ago, the information mentioned may be changed or developed.

    不考虑项目历史因素,仅从自己最理想的情况下选择技术栈,大家更愿意用哪些?

    在需要支持主流平台( iOS 、Android 、macOS 、Windows 、Linux )的情况下,更愿意选择 跨平台 技术,还是使用平台 独立技术栈 开发?

    53 replies  •  2022-11-07 22:27:42 +08:00
    vovov
    vovov
    Jun 12, 2022 via Android
    1
    quasar
    jpacg
    jpacg
    Jun 12, 2022
    2
    flutter?
    foam
    foam
    Jun 12, 2022
    3
    一个人开发太累了,还是跨平台好。
    桌面 electron
    移动端 ReactNative
    服务端:node.js / golang
    DawnMoon
    DawnMoon
    Jun 12, 2022 via Android
    4
    当然是 .Net 啦
    fuis
    fuis
    Jun 12, 2022
    5
    Electron 或者只有 web
    yuuko
    yuuko
    Jun 12, 2022
    6
    下次我想选 rust ,虽然我不会
    ONEO666
    ONEO666
    OP
    Jun 12, 2022
    7
    @foam 桌面端我有考虑过 Tauri 、Wails 之类的,好像也不错
    ONEO666
    ONEO666
    OP
    Jun 12, 2022
    8
    @villivateur .Net 我还是很擅长的,类 WPF 的平台 Avalonia UI 跨平台组件我自己做了一套了,但是感觉性能还是差点意思,微软的 MAUI ,以及其他的 Uno 简直不敢考虑用
    ONEO666
    ONEO666
    OP
    Jun 12, 2022
    9
    @yuuko Rust 语法不太喜欢,我前段时间折腾 Tauri 的时候,顺便学习过一点
    ONEO666
    ONEO666
    OP
    Jun 12, 2022
    10
    @fuis 要说 Js 写桌面平台,还是 Electron 最方便,虽然大,毕竟全都有
    dcsuibian
    dcsuibian
    Jun 12, 2022 via Android
    11
    得看是干啥应用,离线的还是在线的?
    icyalala
    icyalala
    Jun 12, 2022
    12
    如果说同时支持这五大平台,目前 "流行" 的技术栈就只有 Flutter 了吧(要不然就直接 Web )。
    icyalala
    icyalala
    Jun 12, 2022
    13
    对了,还有 Unity (狗头)
    xieqiqiang00
    xieqiqiang00
    Jun 12, 2022
    14
    就按 web 开发,手机用 uniapp ,电脑 electron
    pengtdyd
    pengtdyd
    Jun 12, 2022
    15
    跨平台个人感觉是伪命题,随着业务的增加,必然设计调优,调优的天花板还是原生
    ONEO666
    ONEO666
    OP
    Jun 12, 2022 via iPhone
    16
    @icyalala Unity 那是魔法吧🐶
    ONEO666
    ONEO666
    OP
    Jun 12, 2022 via iPhone
    17
    @pengtdyd 共享代码还是很舒服的,各自平台特性优化只包含了部分工作量,当然也会存在妥协
    closedevice
    closedevice
    Jun 13, 2022
    18
    底层 rust ,前端 flutter 吧
    shijingshijing
    shijingshijing
    Jun 13, 2022
    19
    Qt ?
    jones2000
    jones2000
    Jun 13, 2022❤️1
    20
    具体看你的应用预算了, 预算充足就一个平台一个开发组单独开发。 没钱就怎么省钱怎么来了,直接 h5 页面搞搞就可以了。
    em70
    em70
    Jun 13, 2022
    21
    delphi firemonkey
    roundgis
    roundgis
    Jun 13, 2022
    22
    跨来跨去最后都要写 web
    akaHenry
    akaHenry
    Jun 13, 2022❤️5
    23
    推荐 flutter + rust 方案.

    - flutter 只做 UI 层, 跨平台.
    - rust 做 core lib 层跨平台.

    > 优点:

    1. flutter UI 开发效率高, 现在已经是 flutter 3.0 版本了. 兼容性做的已经非常好. 放心使用.
    2. 主要功能层, 尽量下沉到 rust 来实现. (可以分 2 步走, 第一阶段是 flutter 原生, 后续逐步用 rust 替换)
    3. rust 实现 core lib, 好处是, 以后 UI 层, 不使用 flutter, 也可以改造其他方案( iOS/Android 原生, or 其他方案)
    4. rust 的性能和跨平台能力优秀. (上手门槛略高, 不过是值得的).

    > PS:

    有条件就 flutter + rust, 没条件用 flutter.
    不过建议从项目结构设计早期, 就做好拆分.
    区分 UI 层 和 core lib 层. 方便后续改造.
    Alan1978
    Alan1978
    Jun 13, 2022 via Android
    24
    @1217950746 请问性能哪些地方差呢
    NoNewWorld
    NoNewWorld
    Jun 13, 2022
    25
    以前 qt 。现在我用 flutter
    nightwitch
    nightwitch
    Jun 13, 2022
    26
    桌面端的跨平台的话 Qt 。
    要再跨移动端的话就很麻烦了。。考虑 web 技术吧
    MinQ
    MinQ
    Jun 13, 2022
    27
    需要性能就 Avalonia UI ,不需要就 electron
    ONEO666
    ONEO666
    OP
    Jun 13, 2022
    28
    @orzglory Flutter + Rust 都挺有兴趣去学习的
    ONEO666
    ONEO666
    OP
    Jun 13, 2022
    29
    @nightwitch
    @NoNewWorld
    @shijingshijing

    QT + C++ 这一套对开发人员要求太高了
    ONEO666
    ONEO666
    OP
    Jun 13, 2022
    30
    @Alan1978
    @MinQ

    界面上对大量控件的场景不太想,我说的也不太对,不是 Avalonia UI 在 macOS 下边性能差,只能说是分辨率越高越差,macOS 都是高分屏,性能就下来了。

    目前我桌面端正在使用 Avalonia UI ,比较想换到如 Flutter 、Web 之类的架构
    akaHenry
    akaHenry
    Jun 13, 2022
    31
    @1217950746

    关于 Flutter 和 Rust 学习. 可以看我的博客.

    https://github.com/hhstore/blog/labels/Rust
    https://github.com/hhstore/blog/labels/Flutter

    Good luck. 😄
    ONEO666
    ONEO666
    OP
    Jun 13, 2022
    32
    @orzglory 佩服写博客的,我也正在搭建网站准备写博客了
    MinQ
    MinQ
    Jun 13, 2022
    33
    @1217950746 我们有大量数据图表展示的需求,得用那个 ScottPlot ,高分屏反倒不考虑,最大就 1080p 了
    flutter 啥的反而不适合这种场景
    ONEO666
    ONEO666
    OP
    Jun 13, 2022
    34
    @MinQ 有些界面避免不了大量控件,大数据量渲染倒是好解决(界面虚拟化、数据虚拟化)结合用就行,和 WPF 差不多
    MinQ
    MinQ
    Jun 13, 2022
    35
    @1217950746 是的,这是 WPF 的强项,但不是 web 的强项
    ONEO666
    ONEO666
    OP
    Jun 13, 2022
    36
    @MinQ Web 也可以做,道理一样的
    Dart
    Dart
    Jun 13, 2022
    37
    请个人啊
    xsen
    xsen
    Jun 13, 2022
    38
    Qt 对人员要求高,开发效率也是差很多,很多复杂些的控件都要自定义
    比较适合的方案如楼上提的 Flutter + Rust (当然,我是选择 Flutter + Go )
    reallittoma
    reallittoma
    Jun 13, 2022
    39
    我之前用 Xamarin.Forms 做过几个应用,体验一般般,有时候会遇到一些比较棘手的坑。

    最近在尝试 MAUI ,只能说……还不太行,基础功能缺胳膊少腿的……
    不过看 roadmap ,以及代码上的一些设计,如果以后完善了,用它来写应用应该挺舒服的。
    ONEO666
    ONEO666
    OP
    Jun 13, 2022
    40
    @reallittoma MAUI 在手机上的底层是不是就是 Xamarin.Forms ,我也没仔细研究过这个
    wingkwanli888
    wingkwanli888
    Jun 13, 2022
    41
    只開發 web 就好了,當然要寫好 mobile/desktop css
    分發 android 和 ios 時,直接用 webview 打包
    reallittoma
    reallittoma
    Jun 13, 2022
    42
    @1217950746 #40 底层的话,Android 是 Mono Android ,iOS 是 Xamarin.iOS 。MAUI 跟 Xamarin.Forms 属于平级关系,前者实际上是后者的升级版。
    AyaseEri
    AyaseEri
    Jun 13, 2022
    43
    Desktop 走 Web ,mobile 走小程序
    00244396
    00244396
    Jun 13, 2022
    44
    compose 据说可以支持桌面以及 web 了 IOS 不清楚
    ONEO666
    ONEO666
    OP
    Jun 13, 2022
    45
    @reallittoma 这个想等正式版了去试试,现在好像还是 GA 状态
    ONEO666
    ONEO666
    OP
    Jun 13, 2022
    46
    @AyaseEri 小程序不考虑,Web 方案不错的
    ONEO666
    ONEO666
    OP
    Jun 13, 2022
    47
    @00244396 据说都支持,但是这些框架对 Web 都不太行,打开就需要加载很大的依赖
    7gugu
    7gugu
    Jun 14, 2022
    48
    实践下来,如果不差钱和时间,还是优先平台原生代码的。跨端还是做不到开箱即用,有很多东西都需要自己用原生代码给跨端代码做支撑。其实花这些时间折腾下来,跟独立开发感觉省不了多少时间。跨端更多的优势是团队协作的时候,可以降低开发门槛。
    ONEO666
    ONEO666
    OP
    Jun 14, 2022
    49
    @7gugu 最佳方案肯定是原生代码,我思考过很多,每种方案都有他的优缺点,想省精力,还是跨平台方、做出一些妥协的方案最效率
    7gugu
    7gugu
    Jun 14, 2022
    50
    @1217950746 其实跨端框架最省不了精力,我现在就是在做这方面的东西,所有音视频和渲染相关的东西都要自己造,真的是太麻烦了,有大腿的时候还算凑活着能解决问题,如果是自己单枪匹马的,建议别碰跨端😂。
    checkz
    checkz
    Nov 7, 2022
    51
    @reallittoma 直接把官方的 sample 下载下来,真机运行 listView/collectionviewdemo 不是卡顿就是无法下拉,样式也未适配,感觉这是用实力在劝退。
    https://github.com/dotnet/maui-samples
    reallittoma
    reallittoma
    Nov 7, 2022
    52
    @checkz #51 是的,无论是稳定性还是跨平台 UI 、API 的统一性,微软官方做得还不如第三方的 Uno 框架。Uno 还是跑在 MAUI 上的……
    ONEO666
    ONEO666
    OP
    Nov 7, 2022
    53
    @reallittoma 我最近用 Avalonia 还可以
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2771 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 12:25 · PVG 20:25 · LAX 04:25 · JFK 07:25
    ♥ Do have faith in what you're doing.