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

各位大佬,准备做个 mobile apps 请教目前哪种技术栈比较合适?

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

    各位大佬们, 准备做个 mobile app, 大概是一个前台 apps call 后台 service. 主要面向海外市场, 准备从苹果开始,后面安卓也需要支持

    请教下各位大佬,apps 用什么技术栈比较合适啊? apps 本身的功能应该不复杂, 所以 ui 也应该比较简单。 目前想到的要求是 开发效率高, 用的技术栈用户多, 有问题好找支持, 以后方便跨平台。

    我主要用的是 jave, type script. 不过如果新语言开发效率高的话 我不介意学个新的语言

    30 条回复    2024-02-26 19:44:33 +08:00
    cssk
        1
    cssk  
       278 天前
    flutter ?
    Terry166
        2
    Terry166  
       278 天前 via iPhone
    flutter or react native
    hhecoder
        3
    hhecoder  
       278 天前   ❤️ 5
    不涉及底层调用,跨平台首推 flutter

    ----------

    你这文字看的贼难受,mobile app 直接说手机 app 呗,apps 为什么要加 s ,看不懂什么叫前台 apps call 后台 service ,jave 、type script 两个单词都拼写有问题
    estk
        4
    estk  
       278 天前 via iPhone
    expo
    bfox
        5
    bfox  
    OP
       278 天前
    多谢各位大佬们。 看样子 flutter 是首选。
    我的理解 flutter 跨平台是优点,请教下 主要的缺点是什么呢?

    @hhecoder 大佬, 不好意思啊。 应该是周末躺床上半梦半醒直接状态不在线, 拼写错误太多。

    看不懂什么叫前台 apps call 后台 service 。
    有些 app 是可以离线工作的, 我说这个主要是强调这个 app 需要在线调用后台。
    TimeRain
        6
    TimeRain  
       278 天前
    原生开发
    importmeta
        7
    importmeta  
       278 天前
    功能复杂并且大量开发时间不着急上线还得是原生.
    gdrk
        8
    gdrk  
       278 天前
    RN 先糊一个
    imPrk
        9
    imPrk  
       278 天前
    如果要跨端,那就 JS / TS 技术栈着急选 UniApp ,有时间学选 Flutter ,Flutter 算是趋势了,没有时间学就 React Native 。

    如果不需要跨端,那就原生开发,苹果 Swift ,安卓 Kotlin ,华为鸿蒙 ArkTS 。
    Jirajine
        10
    Jirajine  
       278 天前
    只有 flutter ,现有的移动端跨平台 ui 唯一最优选,地位堪比 electron 。其他的什么 uniapp 红蒙都出来了纯瞎说。
    XCFOX
        11
    XCFOX  
       278 天前   ❤️ 7
    Flutter 本质上是一个游戏引擎,它所有的视图都是自绘的。自绘使得 Flutter 可以在所有平台上保持视图一致。但也导致许多原生视图的特性在 Flutter 上无法使用,比如 Android 12 的滚动回弹动画。
    另外比较致命的一点是,Flutter 的绘图性能是比不过原生的,这体现在翻页滚动流畅度、手势反馈延迟等许多方面。假如原生的用户体验是 100 分,Skia 引擎的 Flutter 的上限是 90 分,希望 Impeller 引擎的 Flutter 的上限能达到 95 分以上。

    相比于天生是游戏引擎的 Flutter ,React Native 则是一个为普通 APP 而生的。RN 在各平台上始终使用
    原生视图,能获得原生级别 100 分的流畅度上限。

    再者,Flutter 在视图写法、状态管理上都落后 RN 一个版本。Flutter 使用嵌套地狱、RN 使用 jsx ; Flutter 的 Riverpod 、bloc 等状态管理方案还遵守 Redux 的思想,React 新一代的 zustand 、jotai 、valtio 大幅减少了模板代码。
    在开发效率上 React Native 显然高于 Flutter 。

    我的建议是,如果你的 APP 不需要复杂的绘图操作,也就是普通 APP 的话,应该首选 RN + expo ;如果你要开发具有复杂视图的 APP ,比如游戏、谷歌地球、高德地图、Wonderous ,应该首选 Flutter 。

    建议体验一下 V2EX 的 Flutter 客户端和 React Native 客户端,Flutter 版本滑动、翻页的时候存在明显卡顿,RN 的体验明显好得多。
    https://github.com/guozhigq/flutter_v2ex
    https://github.com/liaoliao666/v2ex
    magic3584
        12
    magic3584  
       278 天前 via iPhone
    目前有个 flutter 项目,但是涉及到原生功能就很难受,数据层得来回调用和同步
    tanranran
        13
    tanranran  
       278 天前
    @magic3584 跨平台的框架都有这个问题
    jixiaopeng
        14
    jixiaopeng  
       278 天前 via iPhone
    最近使用 react native ( expo )正在开源中,感觉很好用,代码结构很干净,你可以来看看。
    https://github.com/huanghanzhilian/c-shopping-rn

    https://github.com/huanghanzhilian/c-shopping
    akring
        15
    akring  
       277 天前
    原生 Flutter 都用的开发者路过,就我自己的经验来说:

    1. Flutter 的开发体验是比原生要好的,热重载能提升巨量的幸福感。
    2. Flutter 的性能严重落后原生,哪怕在最新的 15 pro max 上卡顿现象都比较严重,更不用提先天性最高 60hz 的刷新率限制了。
    roundgis
        16
    roundgis  
       277 天前 via Android
    用 ionics 随便糊一个
    frankies
        17
    frankies  
       277 天前
    国内市场首选 UniApp ,国内特色生态功能适配好,还真别看不起,出活快就是王道。
    flutter 和 RN 当然技术上更好一点,除非你主打国外市场,否则你大概率会在支付、三方登录、桥接原生上浪费更多精力和时间。
    frankies
        18
    frankies  
       277 天前
    @frankies PS:没太注意说是国外市场,按你的需求对原生性能要求不大,那么首推 React Native 。React Native 在国外开发生态是极好的。
    NewTab12138
        19
    NewTab12138  
       277 天前 via iPhone
    @akring flutter 不支持高刷? 你需要更新一下你的知识点了
    magic3584
        20
    magic3584  
       277 天前 via iPhone
    @tanranran #13
    而且 flutter rn 这种跨平台的,大多数功能都要依赖第三方库,写着写着我真想回归原生
    wdhwg001
        21
    wdhwg001  
       277 天前 via iPhone
    flutter 是你可靠且唯一的跨平台选择,出活快,人好招,后面维护优化也好弄。

    你完全不能相信后面的人会不会把 rn 糊成一坨屎山,js 系的下限实在太低了,真的是什么牛鬼蛇神都会写 js 。
    laters
        22
    laters  
       277 天前
    Flutter
    okakuyang
        23
    okakuyang  
       277 天前
    建议用 webview 套壳这个最方便
    xue777hua
        24
    xue777hua  
       277 天前
    @hhecoder V2EX 缺个功能啊,咋就不能给你点赞
    unco020511
        25
    unco020511  
       277 天前
    其实最简单的用 webview 套壳就行了,性能体验差一点而已
    hugebug
        26
    hugebug  
       276 天前
    期待 tauri 的 mobile 跨平台 不过要先学习 rust 哈哈哈
    --------------------------------------------------------------
    推荐 react native + Expo
    性能不错 第三方包很多
    SWALLOWW
        27
    SWALLOWW  
       276 天前
    maui - -
    debuggerx
        28
    debuggerx  
       276 天前
    @magic3584 所以我的经验就是,原生层越轻越好,数据和逻辑尽量全在 flutter 层去实现,这样维护难度、扩展性、bug 率和体验都会好非常多。
    我就接手过一个项目,ble 连硬件设备的,硬件接口和数据库逻辑在原生的 sdk 依赖里,数据处理在原生层,flutter 调用要靠 method channel 和 stream 监听,flutter 拿到以后可能还要再包装一次成 json 数据给 webview 用,整个项目维护起来要死要活。
    而我以前自己搞得一个类似的项目,就直接全部用 flutter 和纯 dart 实现,ble 蓝牙连接、状态维护和数据包解析全用 flutter_blue 做,数据库用 sqflite ,webview 直接用后端接口而不是用 jsbridge 从 app 拿数据,整体维护起来就非常清爽可控。
    magic3584
        29
    magic3584  
       276 天前
    @debuggerx #28
    是,我本来数据层全用 flutter 处理。
    最开始用 widget 的时候只是展示,存到 userdefault 里也可以用,但是最近想用 widget 和 shortcut 来创建修改数据的话,必须把 sqlite 迁移到 group container 里,考虑到后期再加 iCloud 同步,sqlite 并不太友好,可能还要迁移到 Core Data 。。。
    这问题卡了我一个多月了,目前我对 core data 和 icloud 同步了解甚少,准备再查些资料再迁移。
    lwjlol
        30
    lwjlol  
       275 天前
    @akring 云开发?性能不够的话 90%是代码烂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4989 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 09:51 · PVG 17:51 · LAX 01:51 · JFK 04:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.