V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
1217950746
V2EX  ›  程序员

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

  •  1
     
  •   1217950746 ·
    1217950746 · 58 天前 · 3075 次点击
    这是一个创建于 58 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    QT + C++ 这一套对开发人员要求太高了
    1217950746
        30
    1217950746  
    OP
       58 天前
    @Alan1978
    @MinQ

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

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

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

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

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

    最近在尝试 MAUI ,只能说……还不太行,基础功能缺胳膊少腿的……
    不过看 roadmap ,以及代码上的一些设计,如果以后完善了,用它来写应用应该挺舒服的。
    1217950746
        40
    1217950746  
    OP
       57 天前
    @reallittoma MAUI 在手机上的底层是不是就是 Xamarin.Forms ,我也没仔细研究过这个
    wingkwanli888
        41
    wingkwanli888  
       57 天前
    只開發 web 就好了,當然要寫好 mobile/desktop css
    分發 android 和 ios 時,直接用 webview 打包
    reallittoma
        42
    reallittoma  
       57 天前
    @1217950746 #40 底层的话,Android 是 Mono Android ,iOS 是 Xamarin.iOS 。MAUI 跟 Xamarin.Forms 属于平级关系,前者实际上是后者的升级版。
    AyaseEri
        43
    AyaseEri  
       57 天前
    Desktop 走 Web ,mobile 走小程序
    00244396
        44
    00244396  
       57 天前
    compose 据说可以支持桌面以及 web 了 IOS 不清楚
    1217950746
        45
    1217950746  
    OP
       57 天前
    @reallittoma 这个想等正式版了去试试,现在好像还是 GA 状态
    1217950746
        46
    1217950746  
    OP
       57 天前
    @AyaseEri 小程序不考虑,Web 方案不错的
    1217950746
        47
    1217950746  
    OP
       57 天前
    @00244396 据说都支持,但是这些框架对 Web 都不太行,打开就需要加载很大的依赖
    7gugu
        48
    7gugu  
       57 天前
    实践下来,如果不差钱和时间,还是优先平台原生代码的。跨端还是做不到开箱即用,有很多东西都需要自己用原生代码给跨端代码做支撑。其实花这些时间折腾下来,跟独立开发感觉省不了多少时间。跨端更多的优势是团队协作的时候,可以降低开发门槛。
    1217950746
        49
    1217950746  
    OP
       56 天前
    @7gugu 最佳方案肯定是原生代码,我思考过很多,每种方案都有他的优缺点,想省精力,还是跨平台方、做出一些妥协的方案最效率
    7gugu
        50
    7gugu  
       56 天前
    @1217950746 其实跨端框架最省不了精力,我现在就是在做这方面的东西,所有音视频和渲染相关的东西都要自己造,真的是太麻烦了,有大腿的时候还算凑活着能解决问题,如果是自己单枪匹马的,建议别碰跨端😂。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3550 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:31 · PVG 13:31 · LAX 22:31 · JFK 01:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.