从头开发一个多平台应用,大家会考虑哪种技术栈? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
ONEO666

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

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

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

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

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

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

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

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

    最近在尝试 MAUI ,只能说……还不太行,基础功能缺胳膊少腿的……
    不过看 roadmap ,以及代码上的一些设计,如果以后完善了,用它来写应用应该挺舒服的。
    ONEO666
        40
    ONEO666  
    OP
       Jun 13, 2022
    @reallittoma MAUI 在手机上的底层是不是就是 Xamarin.Forms ,我也没仔细研究过这个
    wingkwanli888
        41
    wingkwanli888  
       Jun 13, 2022
    只 web 就好了,然要好 mobile/desktop css
    分 android 和 ios ,直接用 webview 打包
    reallittoma
        42
    reallittoma  
       Jun 13, 2022
    @1217950746 #40 底层的话,Android 是 Mono Android ,iOS 是 Xamarin.iOS 。MAUI 跟 Xamarin.Forms 属于平级关系,前者实际上是后者的升级版。
    AyaseEri
        43
    AyaseEri  
       Jun 13, 2022
    Desktop 走 Web ,mobile 走小程序
    00244396
        44
    00244396  
       Jun 13, 2022
    compose 据说可以支持桌面以及 web 了 IOS 不清楚
    ONEO666
        45
    ONEO666  
    OP
       Jun 13, 2022
    @reallittoma 这个想等正式版了去试试,现在好像还是 GA 状态
    ONEO666
        46
    ONEO666  
    OP
       Jun 13, 2022
    @AyaseEri 小程序不考虑,Web 方案不错的
    ONEO666
        47
    ONEO666  
    OP
       Jun 13, 2022
    @00244396 据说都支持,但是这些框架对 Web 都不太行,打开就需要加载很大的依赖
    7gugu
        48
    7gugu  
       Jun 14, 2022
    实践下来,如果不差钱和时间,还是优先平台原生代码的。跨端还是做不到开箱即用,有很多东西都需要自己用原生代码给跨端代码做支撑。其实花这些时间折腾下来,跟独立开发感觉省不了多少时间。跨端更多的优势是团队协作的时候,可以降低开发门槛。
    ONEO666
        49
    ONEO666  
    OP
       Jun 14, 2022
    @7gugu 最佳方案肯定是原生代码,我思考过很多,每种方案都有他的优缺点,想省精力,还是跨平台方、做出一些妥协的方案最效率
    7gugu
        50
    7gugu  
       Jun 14, 2022
    @1217950746 其实跨端框架最省不了精力,我现在就是在做这方面的东西,所有音视频和渲染相关的东西都要自己造,真的是太麻烦了,有大腿的时候还算凑活着能解决问题,如果是自己单枪匹马的,建议别碰跨端。
    checkz
        51
    checkz  
       Nov 7, 2022
    @reallittoma 直接把官方的 sample 下载下来,真机运行 listView/collectionviewdemo 不是卡顿就是无法下拉,样式也未适配,感觉这是用实力在劝退。
    https://github.com/dotnet/maui-samples
    reallittoma
        52
    reallittoma  
       Nov 7, 2022
    @checkz #51 是的,无论是稳定性还是跨平台 UI 、API 的统一性,微软官方做得还不如第三方的 Uno 框架。Uno 还是跑在 MAUI 上的……
    ONEO666
        53
    ONEO666  
    OP
       Nov 7, 2022
    @reallittoma 我最近用 Avalonia 还可以
    About     Help     Advertise     Blog     API     FAQ     Solana     939 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 84ms UTC 22:50 PVG 06:50 LAX 15:50 JFK 18:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86