V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
changrui0608
V2EX  ›  程序员

有没有一套代码通吃 PC、安卓、iOS 的客户端技术栈...

  •  
  •   changrui0608 · 2018-06-13 17:48:05 +08:00 · 13879 次点击
    这是一个创建于 2390 天前的主题,其中的信息可能已经有所发展或是发生改变。
    考虑做个小工具啥的,应用复杂度应该很低,不限编程语言

    我大概听过 QT 能跨平台,但实际上构建可能移动、PC 要分别调?而且 QT 做移动似乎用的人很少啊
    然后各种基于 JavaScript 的技术让我有点乱,RN 和 Weex 似乎无视了 PC 端?

    总之求大佬指路吧
    96 条回复    2018-06-15 12:29:53 +08:00
    tinycold
        1
    tinycold  
       2018-06-13 17:55:29 +08:00 via Android
    Node 在桌面端也有 Electron。
    zhujian198
        2
    zhujian198  
       2018-06-13 17:56:38 +08:00
    nodejs
    swuzjb
        3
    swuzjb  
       2018-06-13 17:57:22 +08:00
    前两天京东是不是开源了一个 啥的
    flyingfz
        4
    flyingfz  
       2018-06-13 18:08:41 +08:00   ❤️ 2
    必须 Cordova 啊 。
    EvilCult
        5
    EvilCult  
       2018-06-13 18:11:51 +08:00   ❤️ 1
    @swuzjb
    顺便回楼主

    京东开发的是奥特曼(误)............是.........Taro.........

    不过是说 6 月底猜支持 rn,现在只有微信小程序和 h5
    flyingfz
        6
    flyingfz  
       2018-06-13 18:12:40 +08:00
    哦, 不好意思, 貌似 cordova 搞不来 PC . 它支持的 平台包括: ios, android

    http://cordova.apache.org/docs/en/8.x/guide/support/index.html
    razor1895
        7
    razor1895  
       2018-06-13 18:14:56 +08:00   ❤️ 3
    微软开源 reactxp 了解一下?同时还有 react-native-windows
    ptrees
        8
    ptrees  
       2018-06-13 18:15:07 +08:00
    我知道 kivy 可以,用 python 写的,但是好不好用就不敢打包票了...
    pezy
        9
    pezy  
       2018-06-13 18:20:48 +08:00 via iPhone
    最接近实现这个需求的就是基于 v8 的客户端技术了,浏览器已经通吃了几乎全部平台,基于它的应用自然符合要求了。
    linnn2
        10
    linnn2  
       2018-06-13 18:26:38 +08:00 via Android
    如果浏览器的功能能够满足你的软件的话可以看看 PWA
    applehater
        11
    applehater  
       2018-06-13 18:34:13 +08:00 via iPhone
    react native for iOS Android Windows macOS 支持 WPF 甚至可以运行在 Xbox 和树莓派。
    edsheeran
        12
    edsheeran  
       2018-06-13 18:34:47 +08:00 via iPhone
    node
    Torpedo
        13
    Torpedo  
       2018-06-13 18:36:05 +08:00
    @flyingfz rn 也有 fork 的 pc 端,也有 mac os 端。但是我觉得还是浏览器+原生交互的好。cordova 在移动端,pc 用 electron 就挺好吧
    CFO
        14
    CFO  
       2018-06-13 18:36:42 +08:00 via Android
    ionic 了解一下
    WildCat
        15
    WildCat  
       2018-06-13 18:38:34 +08:00
    Torbolinks iOS/Android/Web
    sampeng
        16
    sampeng  
       2018-06-13 18:45:44 +08:00
    原则上 c++封装业务逻辑。然后根据平台套壳(可以 QT 解决 pc 的,其他的用 rn )。比一套通吃的方案强 100 倍。
    一套通吃应该理论上做不到,编译器复杂度太高了,完全不同的芯片,完全不同的架构,完全不同的 api。
    janus77
        17
    janus77  
       2018-06-13 18:49:27 +08:00
    为什么你的「小工具」需要有全平台的需求
    MonoLogueChi
        18
    MonoLogueChi  
       2018-06-13 19:01:26 +08:00 via Android   ❤️ 1
    C#
    agagega
        19
    agagega  
       2018-06-13 19:30:06 +08:00
    Qt 好像可以,可惜大家都不用(
    qnwx1
        20
    qnwx1  
       2018-06-13 19:31:26 +08:00 via iPhone
    打扰了 php
    WildCat
        21
    WildCat  
       2018-06-13 19:33:34 +08:00
    @sampeng 封装业务逻辑还可以是 C/Golang 甚至 Rust/Kotlin native
    liuzhedash
        22
    liuzhedash  
       2018-06-13 19:50:09 +08:00
    @MonoLogueChi #18
    想了想好像就 C#通吃
    frozenwood
        23
    frozenwood  
       2018-06-13 20:19:31 +08:00 via Android   ❤️ 1
    c #,xamarin
    yhzwy
        24
    yhzwy  
       2018-06-13 20:22:19 +08:00
    qt 不行吗。。
    jowuIM
        25
    jowuIM  
       2018-06-13 20:25:05 +08:00
    Electron!
    realpg
        26
    realpg  
       2018-06-13 20:31:36 +08:00
    html
    目测你说的每个平台都有浏览器
    whypool
        27
    whypool  
       2018-06-13 20:48:30 +08:00
    JS 大法可以通吃
    vitalis
        28
    vitalis  
       2018-06-13 20:54:38 +08:00
    Qt 跨平台,而且代码设计的非常漂亮,可惜是上一代的技术了。这个时代的话,用 Electron、Cordova 吧。
    nicevar
        29
    nicevar  
       2018-06-13 21:00:56 +08:00   ❤️ 2
    小工具直接 Qt 就行了,android、iOS 都支持,win/linux/mac 就不用说了,不用 widget 那套,考虑用 qml 来做
    如果是复杂的程序,没有什么跨平台方案能做到,坑太多了,如果有人跟你说有,那就是让你跳坑
    picture2200
        30
    picture2200  
       2018-06-13 21:01:32 +08:00 via Android
    angular 支持 uwp,不知道符不符合要求?
    artandlol
        31
    artandlol  
       2018-06-13 21:17:38 +08:00 via iPhone
    Pwa
    chengzi
        32
    chengzi  
       2018-06-13 21:42:06 +08:00   ❤️ 2
    这不就是 xamarin 吗, 除了这个还有谁做的像个样子的。
    楼上一堆都是 web 吧,其实简单的东西一个 html5 足以,简单实用。
    如果真想客户端,可以 xamarin 来一套。传送门 https://www.xamarin.com
    newmlp
        33
    newmlp  
       2018-06-13 21:47:00 +08:00
    Qt 啊,
    Tink
        34
    Tink  
       2018-06-13 21:53:27 +08:00 via iPhone
    qt 可以
    zyqzyq08
        35
    zyqzyq08  
       2018-06-13 22:20:07 +08:00
    kivy 可以用,但是打包环境比较麻烦。感觉适合个人玩,不太适合商业项目
    shijingshijing
        36
    shijingshijing  
       2018-06-14 00:34:32 +08:00
    比较好奇楼上说 C#写的应用能在 Linux 上怎么运行?特制 desktop application 不是 web application
    loqixh
        37
    loqixh  
       2018-06-14 00:39:57 +08:00
    @shijingshijing 可以的.........winform 程序都能跑
    FeifeiJin
        38
    FeifeiJin  
       2018-06-14 00:47:36 +08:00 via Android
    @flyingfz ionic , cordova。
    但这东西也是一堆坑,谁用谁知道。
    FeifeiJin
        39
    FeifeiJin  
       2018-06-14 00:48:20 +08:00 via Android
    @flyingfz cordova 支持 uwp 吧。那么走 uwp 这条路来实现 pc 怎么样?
    em70
        40
    em70  
       2018-06-14 00:55:04 +08:00 via Android
    有这样的技术,但强烈建议你不要走捷径,最后都是浪费时间
    iMakar
        41
    iMakar  
       2018-06-14 00:56:29 +08:00 via Android
    c# 可以支持安卓和 iOS 的应用,桌面平台就更不用说了
    falcon05
        42
    falcon05  
       2018-06-14 01:37:37 +08:00 via iPhone   ❤️ 1
    flutter,不过感觉不太成熟。
    flynaj
        43
    flynaj  
       2018-06-14 01:43:51 +08:00 via Android
    后端用 golang,前端用 HTML5,其实就是 bs 结构
    Jeepeng
        44
    Jeepeng  
       2018-06-14 01:51:03 +08:00
    fancyhan
        45
    fancyhan  
       2018-06-14 02:23:44 +08:00
    Electron,electron 目前的问题是新窗口需要一秒钟初始化,无论多大规模

    未来的 killer 项目,Fultter
    fancyhan
        46
    fancyhan  
       2018-06-14 02:30:38 +08:00   ❤️ 1
    electron,skeype 和 slack 都是用这个包的,特定场景效果很好,我给你讲个项目,某公司用 qt 和 nodejs 同时实现了一个类似钉钉的东西,结果 qt 的开发人数是前端的十倍,性能缺远低于 nodejs 包个壳子的,内存占用高三倍,cpu 耗电也高几倍。有时候糟糕的 cpp 程序员真不如一个聪明的 v8 js 引擎
    fancyhan
        47
    fancyhan  
       2018-06-14 02:36:14 +08:00
    flutter 现在官方支持 react native,react native 支持 pc,但是 flutter 目前是 beta,不建议商业化大规模使用,相比坑不少
    ericgui
        48
    ericgui  
       2018-06-14 05:50:18 +08:00
    你们前端圈真乱。。。。。

    正在学 vue,然后你们一堆 flutter,reactxp,都又出来了

    这潮流太快了。。。。
    shjanken
        49
    shjanken  
       2018-06-14 06:39:37 +08:00 via Android
    @EvilCult 坚决不用,他们居然说泰罗是最强的奥特曼,不能忍
    jsun
        50
    jsun  
       2018-06-14 08:38:31 +08:00
    RN
    fishcat
        51
    fishcat  
       2018-06-14 08:54:05 +08:00
    看完发现说 RN 的比较多,说 Xamarin 的比较少,话说 Xamarin 确实可以。
    Clarencep
        52
    Clarencep  
       2018-06-14 09:06:47 +08:00
    RN+1
    murmur
        53
    murmur  
       2018-06-14 09:15:29 +08:00
    基于 electron 就算了 electron 目前最靠谱的应用居然是个超级记事本 还是微软出品
    ysjiang4869
        54
    ysjiang4869  
       2018-06-14 09:18:47 +08:00
    顶一下 C#
    ebingtel
        55
    ebingtel  
       2018-06-14 09:21:11 +08:00
    google 的 flutter 框架 也能吃透……
    qq976739120
        56
    qq976739120  
       2018-06-14 09:25:45 +08:00
    JS 肯定可以,如果现在不可以,那就再等等 :)
    isbase
        57
    isbase  
       2018-06-14 09:29:41 +08:00 via Android
    jennifertxwoodma
        58
    jennifertxwoodma  
       2018-06-14 09:39:34 +08:00
    portable C 了解一下
    missdeer
        59
    missdeer  
       2018-06-14 09:41:58 +08:00
    @flynaj 好像 Deepin Linux 的桌面环境 DDE 就是这种方案,事实证明是个大坑
    ai277014717
        60
    ai277014717  
       2018-06-14 09:55:28 +08:00
    H5 把比较成熟
    auroraccc
        61
    auroraccc  
       2018-06-14 09:59:38 +08:00
    @murmur electron 也没那么差吧 , '超级记事本' 和微软也不差吧
    maxzhang1985
        62
    maxzhang1985  
       2018-06-14 10:01:58 +08:00 via Android
    你说的需求要编译成全平台原生的只有 Xamarin 可以满足你
    dhssingle
        63
    dhssingle  
       2018-06-14 10:18:46 +08:00
    Xamarin 怎么说也是原生的,总比那一系列的 js 方案靠谱点。
    l9rw
        64
    l9rw  
       2018-06-14 10:20:48 +08:00
    一套代码能通吃所有端的只有 html 了吧,只要不是命令行操作系统就有浏览器
    huiyadanli
        65
    huiyadanli  
       2018-06-14 10:27:39 +08:00
    Xamarin
    hjc4869
        66
    hjc4869  
       2018-06-14 10:34:05 +08:00 via iPhone
    @shijingshijing Xamarin 有 GTK backend,虽然还是 WIP
    CoderGeek
        67
    CoderGeek  
       2018-06-14 10:35:58 +08:00
    你说的像这个 https://taro.aotu.io
    salamanderMH
        68
    salamanderMH  
       2018-06-14 10:39:01 +08:00   ❤️ 1
    精通一个领域就可以了
    zhouyg
        69
    zhouyg  
       2018-06-14 11:39:00 +08:00
    js 大法,连硬件都支持
    ivydom
        70
    ivydom  
       2018-06-14 12:22:32 +08:00
    手机用 react native 或者 ionic
    PC 用 electron
    Web 用 ng、react 或 vue

    以上都基于 JavaScript,小程序也是 js
    diyisoft
        71
    diyisoft  
       2018-06-14 12:34:25 +08:00
    delphi 最新版适合你
    uleh
        72
    uleh  
       2018-06-14 12:43:17 +08:00
    我觉得,lz 说的可不就是 HTML + JS 么
    natforum
        73
    natforum  
       2018-06-14 12:45:52 +08:00
    golang
    F1024
        74
    F1024  
       2018-06-14 12:47:10 +08:00
    @diyisoft delphi 还没死透吗
    jsq2627
        75
    jsq2627  
       2018-06-14 12:53:20 +08:00
    嗯... 说 Xamarin 的人不多呀

    Xamarin Forms 支持 iOS/Android/macOS/GTK#/WPF/UWP/Tizen,属于 write once run anywhere 类型,不是 learn once run anywhere,而且对原生能力的调用比 React Native 方便多了,不用自行封装 module 就可以直接调用平台 API

    不过缺点就是生态差,没有成熟 UI 库。平台这么多,开发调试起来非常费力。
    jsq2627
        76
    jsq2627  
       2018-06-14 12:54:49 +08:00
    @shijingshijing #36
    一种是 Mono WinForm
    一种是 Xamarin Forms 的 GTK# backend
    ZhLTE
        77
    ZhLTE  
       2018-06-14 13:08:37 +08:00
    xamarin.Forms
    zijung
        78
    zijung  
       2018-06-14 13:23:46 +08:00
    @missdeer 然后 Deepin 现在转了似乎是 Go + C++ 了
    hizoubin
        79
    hizoubin  
       2018-06-14 13:39:05 +08:00
    @murmur vscode 复杂度还不够吗?我感觉 electron 足够题主要求了
    DT27
        80
    DT27  
       2018-06-14 13:44:40 +08:00
    C#。nodejs 还是算了吧,拒绝 js 不务正业!
    AlphaGL
        81
    AlphaGL  
       2018-06-14 13:51:47 +08:00
    javascript 一统天下。
    nowheretogogo
        82
    nowheretogogo  
       2018-06-14 15:13:49 +08:00
    也就 Xamarin 能撑起来
    defunct9
        83
    defunct9  
       2018-06-14 16:08:50 +08:00
    为什么没人说 meteor ?!,这个是真的 PC/IOS/Android 三位一体。
    menc
        84
    menc  
       2018-06-14 16:18:38 +08:00
    @shjanken 泰罗是奥特之子,当然是最厉害的奥特曼,看装备都比别人多很多的
    murmur
        85
    murmur  
       2018-06-14 16:40:26 +08:00
    @hizoubin 问题是 vscode 开发者是微软,能把 electron 用的这么牛逼一般开发者做不到吧
    alexzhou
        86
    alexzhou  
       2018-06-14 16:45:07 +08:00
    js 和 c++
    edwinxe2v
        87
    edwinxe2v  
       2018-06-14 17:13:06 +08:00
    edwinxe2v
        88
    edwinxe2v  
       2018-06-14 17:13:56 +08:00
    iX
        89
    iX  
       2018-06-14 17:19:04 +08:00
    说的不就是 Delphi 么。。。
    iX
        90
    iX  
       2018-06-14 17:20:03 +08:00
    还有.net 也可以( xamarin )
    diyisoft
        91
    diyisoft  
       2018-06-15 05:09:36 +08:00 via iPhone
    @F1024 去认真的了解了解:)
    xiaoqiang730730
        92
    xiaoqiang730730  
       2018-06-15 09:37:05 +08:00
    https://github.com/mimecorg/vuido 这个东西了解下
    bakujin
        93
    bakujin  
       2018-06-15 09:39:00 +08:00
    @jsq2627 为什么我家 vs17 的 Xamarin.Forms 好像只 iOS 和 Android,没看到 macOS。。。 用 VS for Mac 也没看到支持 macOS 的 Xamarin.Forms。。。
    bakujin
        95
    bakujin  
       2018-06-15 09:42:39 +08:00
    有 dotnet 大佬能对比下 Xamarin,Xamarin.Forms,Mono GTK#,Avalonia,platform.uno 吗
    cjw1115
        96
    cjw1115  
       2018-06-15 12:29:53 +08:00
    Xamarin.Forms 了解一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1003 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 19:49 · PVG 03:49 · LAX 11:49 · JFK 14:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.