有没有一套代码通吃 PC、安卓、iOS 的客户端技术栈... - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
changrui0608
V2EX    程序员

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

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

    我大概听过 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
    tr>
    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。
    rb6221
        17
    rb6221  
       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  
    PRO
       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  
    PRO
       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 的应用,桌面平台就更不用说了
    GG668v26Fd55CP5W
        42
    GG668v26Fd55CP5W  
       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     Solana     5433 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 01:22 PVG 09:22 LAX 18:22 JFK 21:22
    Do have faith in what you're doing.
    ubao 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