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

前端的同学,现在小程序用啥框架好?

  •  
  •   Yokin · 2021-03-22 08:50:10 +08:00 · 14065 次点击
    这是一个创建于 1371 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司远古时期的小程序要重写,之前是原生语法写的 现在小程序用啥框架好写小程序?Vue 技术栈 有前端的同学指点一下吗?

    第 1 条附言  ·  2021-03-22 17:25:45 +08:00
    谢谢大家,
    我们公司最终决定用原生。我们是小项目但是人少不希望有太多坑浪费时间。
    第 2 条附言  ·  2021-03-22 17:26:20 +08:00
    目前只做微信小程序,没有跨端需求,再次谢谢
    98 条回复    2021-04-26 23:36:19 +08:00
    MonkeyD1
        1
    MonkeyD1  
       2021-03-22 08:52:37 +08:00   ❤️ 4
    uni-app, taro
    whypool
        2
    whypool  
       2021-03-22 08:53:48 +08:00 via Android
    目前用的是 mpvue,虽然停更了,但是并不影响使用,会 vue 可以直接上手
    auchan
        3
    auchan  
       2021-03-22 08:54:29 +08:00
    我们公司除了原生的就是 uniapp 了 感觉还行
    sugars
        4
    sugars  
       2021-03-22 08:59:06 +08:00   ❤️ 4
    我写来写去还是觉得原生的好啊
    middle2021
        5
    middle2021  
       2021-03-22 09:00:56 +08:00 via Android
    Taro
    stillyu
        6
    stillyu  
       2021-03-22 09:02:14 +08:00
    remax
    Yokin
        7
    Yokin  
    OP
       2021-03-22 09:03:29 +08:00
    @whypool mpvue 听说坑特别多啊。会影响开发的不?
    guorui112
        8
    guorui112  
       2021-03-22 09:04:04 +08:00
    原生好啊,为啥要用框架,框架编译出来的包感觉要比原生的包体积大啊,超 2m 还要考虑分包,多费劲
    Yokin
        9
    Yokin  
    OP
       2021-03-22 09:04:05 +08:00
    @MonkeyD1 taro 是 react 技术栈的,至于 uni-app 坑会不会特别多,我们目前只做微信小程序
    Yokin
        10
    Yokin  
    OP
       2021-03-22 09:05:07 +08:00
    @guorui112 uni-app 的性能貌似比原生好吧 轮子又多 开发效率比原生快
    Yokin
        11
    Yokin  
    OP
       2021-03-22 09:06:11 +08:00
    @auchan 对于 uniapp 的插件市场如果使用几个不同的插件会产生问题不?这方面的坑我 19 年就有过但当时没解决,现在还有这个问题吗
    whypool
        12
    whypool  
       2021-03-22 09:08:25 +08:00 via Android
    @Yokin 目前感觉没啥坑的,几个小程序项目都在用,其实主要是这个编译后非常小,毕竟有 2m 限制,微信自己出的 kbone 编译后都快 700kb 了,对比 mpvue60 多 kb
    encro
        13
    encro  
       2021-03-22 09:09:14 +08:00
    @Yokin
    这种问题肯定会存在。。。插件作者无法考虑其他插件的兼容性吧。
    loliyu
        14
    loliyu  
       2021-03-22 09:09:41 +08:00
    Taro
    PinkRabbit
        15
    PinkRabbit  
       2021-03-22 09:09:54 +08:00
    没有跨端需求就原生呗,跨端就 uni 和 taro
    CoCoMcRee
        16
    CoCoMcRee  
       2021-03-22 09:10:35 +08:00
    Uni-app 吧, vue 直接上手.
    BarZu
        17
    BarZu  
       2021-03-22 09:10:50 +08:00
    原生挺香的,不用愁框架的坑,而且体积小,我开发了 34 个模块,才 600 多 K
    whyso
        18
    whyso  
       2021-03-22 09:13:14 +08:00
    @Yokin uni-app 性能比原生的好?
    yahon
        19
    yahon  
       2021-03-22 09:14:13 +08:00
    原生的靠谱 第三方的不知道啥时候会遇到一个坑 然后浪费时间去填 特别是用第三方的 UI 库的时候
    52chinaweb
        20
    52chinaweb  
       2021-03-22 09:16:18 +08:00
    多平台小程序用 uni-app
    Yokin
        21
    Yokin  
    OP
       2021-03-22 09:16:45 +08:00
    sevenzhou1218
        22
    sevenzhou1218  
       2021-03-22 09:16:46 +08:00
    到最后你还是会觉得原生的香
    tangtanghong
        23
    tangtanghong  
       2021-03-22 09:18:15 +08:00
    原生大法好啊
    ccsulzf0627
        24
    ccsulzf0627  
       2021-03-22 09:18:16 +08:00
    目前 remax,react 可以直接上手,还没看到什么大坑
    ilovecqrwx
        25
    ilovecqrwx  
       2021-03-22 09:18:53 +08:00
    uniapp,vue 一把梭它不香吗
    anson2017
        26
    anson2017  
       2021-03-22 09:22:14 +08:00
    原生挺香的
    LiuJiang
        27
    LiuJiang  
       2021-03-22 09:22:21 +08:00
    建议用原生
    Desiree
        28
    Desiree  
       2021-03-22 09:26:39 +08:00
    原生吧,不用兼容太多东西,而且原生也有很多组件可以用的
    ly020044
        29
    ly020044  
       2021-03-22 09:29:23 +08:00
    原生+1
    anUglyDog
        30
    anUglyDog  
       2021-03-22 09:32:01 +08:00
    不是怎么爽怎么来,而是看有没有多小程序平台一起发布的需求。一个月前我纠结原生还是 uni-app 的时候选了原生。。
    proger
        31
    proger  
       2021-03-22 09:34:11 +08:00
    vue 用 uni-app
    react 用 taro
    tanranran
        32
    tanranran  
       2021-03-22 09:34:19 +08:00
    Uni-app,已经开发了 6 个项目了。目前没有发现有任何问题
    varzy
        33
    varzy  
       2021-03-22 09:37:54 +08:00 via iPhone
    还是用原生的吧,加一些自己需要的配置和插件
    TimeRain
        34
    TimeRain  
       2021-03-22 09:40:51 +08:00
    建议原生
    chenmobuys
        35
    chenmobuys  
       2021-03-22 09:48:19 +08:00
    不是跨平台,还是原生的好
    grewer
        36
    grewer  
       2021-03-22 09:50:05 +08:00
    remax 没用过
    taro 用过 做是没问题, 但是坑也挺多的
    qq1340691923
        37
    qq1340691923  
       2021-03-22 09:55:42 +08:00
    Uni-app 吧,毕竟跨平台
    C603H6r18Q1mSP9N
        38
    C603H6r18Q1mSP9N  
       2021-03-22 10:01:03 +08:00
    uniapp 可以线上用
    abcdGJJ
        39
    abcdGJJ  
       2021-03-22 10:01:21 +08:00 via Android
    不多端复用就原生
    oldhorse
        40
    oldhorse  
       2021-03-22 10:04:45 +08:00
    uni-app 还阔以。就是感觉那个 picker 好难用,然后插件市场各种插件,有时候也是略麻烦
    unco020511
        41
    unco020511  
       2021-03-22 10:11:23 +08:00
    小程序还需要框架吗?
    wxsm
        42
    wxsm  
       2021-03-22 10:12:24 +08:00
    小程序其实不存在所谓「原生」的概念。楼上所谓的「原生」与 uniapp taro 等开发框架的区别,从本质上来说更接近于 js 与 typescript 的区别。使用「原生」好处不见得有多少,但是问题却不少,比如学习成本,比如微信小程序至今不支持直接使用 npm (需要多一步「构建 npm 」操作),等等等等。所以我很难理解楼上那些推荐「原生」的人。
    peoren
        43
    peoren  
       2021-03-22 10:14:27 +08:00
    uniapp 吧,好上手
    xytest
        44
    xytest  
       2021-03-22 10:22:45 +08:00
    原生
    ch2
        45
    ch2  
       2021-03-22 10:23:15 +08:00
    推荐 react+taro+weui,这三个组合就够了
    gdrk
        46
    gdrk  
       2021-03-22 10:24:59 +08:00
    万一哪天领导让你把小程序移植到头条 /qq 等平台上时。。。 所以还是 uni 吧,效率第一
    kimiler
        47
    kimiler  
       2021-03-22 10:25:55 +08:00
    @Yokin taro 也支持 vue 语法
    baozi23
        48
    baozi23  
       2021-03-22 10:27:08 +08:00
    uniapp
    Felldeadbird
        49
    Felldeadbird  
       2021-03-22 10:37:18 +08:00
    我用有赞的 vant-weapp 。坑挺多,主要需要解决 一些类似跨域,传递数据的问题。 其余大多数用官方的。。嗯。。。
    sugars
        50
    sugars  
       2021-03-22 10:42:16 +08:00
    @wxsm 不知道你在说什么
    xiaofenyi
        51
    xiaofenyi  
       2021-03-22 10:45:23 +08:00
    我现在做是用原生的,因为框架必须再学框架的知识,配置也不是很会。
    runze
        52
    runze  
       2021-03-22 10:51:08 +08:00
    @wxsm 小程序本身就有很多坑+文档不完善+经常 XJB 改,各种小程序框架也都有不少坑而且资料特别少。
    加一起就是更多的坑,遇到问题首先不是解决问题,而需要先找出是框架还是小程序的问题,往往找不到相关资料。

    这与 JS/TS 关系不一样:
    JS 虽然有不少坑,但是大家都比较熟悉,而且文档、资料特别丰富,也很少乱改,有着顶尖的兼容性。
    TS 的用户也很多,编译产物简单易读,只增加了一些类型,可以避免而不是像小程序框架那样产生问题。
    overflow99
        53
    overflow99  
       2021-03-22 10:53:04 +08:00
    @wxsm
    为什么小程序没有原生的概念,原生在这里是约定俗成的一个词组,大概就是不使用框架,使用官方语法。大家理解这个事就可以了。
    引用「从本质上来说更接近于 js 与 typescript 的区别,使用「原生」好处不见得有多少,但是问题却不少。
    所以你认为的本质是什么,为什么更接近于 js 与 typescript 的情况下,使用好处不见得有多少,但是问题却不少。你这么总结就是在说 js 啊,js 是一门客户端语言,ts 是更严格的 js 。可以编译成 js 。仅此而已,更适合不同的使用场景罢了。你说很难理解使用原生开发小程序,我就想原生小程序怎么你了,不使用工具这个事在你认为那么难理解吗?
    LionMusician
        54
    LionMusician  
       2021-03-22 10:54:10 +08:00
    一直在做各种小程序,框架也用了不少。
    18 年开始用 mpvue,优点是 vue 技术栈基本无障碍上手,缺点是美团不维护了,跨平台支持基本为 0 。
    uniapp 也搭过两个小程序,优点是 vue 上手简单,UI 库丰富,缺点是 Hbuilder 很难用。
    开发支付宝小程序和云闪付小程序都是用的 taro,react 语法,优点是跨平台很友好,可以同时运行到多个端进行对比,缺点是 react 语法对题主上手有些费时间,同时 UI 库比较少。
    overflow99
        55
    overflow99  
       2021-03-22 10:54:12 +08:00
    @wxsm
    别再总结你对 JS 和 TS 那狭隘的偏见了
    LionMusician
        56
    LionMusician  
       2021-03-22 10:55:30 +08:00
    @LionMusician 补充一下,taro 我用的是 2.x 版本,现在 3.x 也支持 vue 语法了,但学习成本比其他两个要高。
    nbhaohao
        57
    nbhaohao  
       2021-03-22 10:57:43 +08:00
    1. 如果是长期维护的项目,没有跨端需求,还是建议原生比较靠谱一些,比如官方出一些新特性,用起来坑会少一些。
    2. 如果是小型项目或者跨端需求,taro 和 uni-app 本质差不多的,都是充当了把 react/vue 代码翻译成原生代码。所以推荐 remax,remax 的思路和这两个框架完全不一样,看上去是一条正确的道路。taro 用的人也蛮多的,如果 uni-app 和 taro 选一个的话,推荐 taro
    a1528026364
        58
    a1528026364  
       2021-03-22 10:58:46 +08:00
    @Felldeadbird uniapp 上的 ui 框架,推荐用 uView,这个框架组件全平台兼容性好,vant 特别蠢 H5 跟小程序不兼容
    ALVC666
        59
    ALVC666  
       2021-03-22 11:00:12 +08:00
    需要跨端 taro
    不需要原生
    sjhhjx0122
        60
    sjhhjx0122  
       2021-03-22 11:06:07 +08:00
    @nbhaohao 现在 taro 和 remax 实现思路差不多了,但是 taro 稍卡也没研究是为什么
    nbhaohao
        61
    nbhaohao  
       2021-03-22 11:09:06 +08:00
    @sjhhjx0122 哦哦,谢谢告知,那我之后会更优先考虑 taro 了,因为 remax 毕竟还是较新一些,taro 更新得更加频繁。也是因为我个人比较喜欢 react
    karnaugh
        62
    karnaugh  
       2021-03-22 11:14:03 +08:00   ❤️ 1
    没人推荐一下 Tina ?
    这个框架就相当于原生小程序,然后把原生小程序一个页面要写 4 个文件,整合成了像 vue 一样的一个文件,其他的话基本是原生写法
    HeyXiao
        63
    HeyXiao  
       2021-03-22 11:25:57 +08:00
    日经贴。。。作为一个前端我已经看到这种帖子好几次了
    sjhhjx0122
        64
    sjhhjx0122  
       2021-03-22 11:30:19 +08:00
    @nbhaohao 其实我觉得 remax 蛮好用的就是没什么社区,taro 想升级还得升级脚手架其实也挺烦的
    66beta
        65
    66beta  
       2021-03-22 11:32:16 +08:00
    看你的问题描述,原生
    Yokin
        66
    Yokin  
    OP
       2021-03-22 11:32:17 +08:00
    @tanranran 我真正经历过之前的老板为了节省前期成本找外包用 DCloud 做了一个一带三的 app,其中的 android 卡的没办法用,我接手之后不得已重新写了,就因为里面自动生成的代码完全无法使用,一半原生一半 webview,满满的吃屎的感觉。 出自知乎 https://www.zhihu.com/question/402489534/answer/1293438331

    这是真的吗
    chaucerling
        67
    chaucerling  
       2021-03-22 11:38:36 +08:00   ❤️ 2
    我是用 mpx 做跨平台小程序开发的,优点是编译出来的就是原生的代码,没有 uniapp 和 taro 运行时的兼容问题,性能也更好
    遇到的坑主要都是原生平台的问题,比较好定位和解决
    KeShandian
        68
    KeShandian  
       2021-03-22 11:45:11 +08:00
    推荐原生,可以自己用 webpack 加多一层打包处理,在小程序实现一些扩展功能,后期扩展也更方便。
    xutao881
        69
    xutao881  
       2021-03-22 11:54:14 +08:00
    用 taro 写了小程序,写完之后觉得还不如写原生
    wxsm
        70
    wxsm  
       2021-03-22 11:58:28 +08:00
    @overflow99
    @runze
    我将它类比为 js/ts,是因为 ts 编译以后得到了 js,实际的 runtime 也是 js 。小程序与框架的关系与此类似,uniapp 等框架编译以后得到了「原生」代码,仅此而已。因此它们这些框架虽然可能也存在自己的坑,但这种坑一般不难解决,因为这里不涉及到真正意义上的原生代码转换。从本质上来说,大家都是原生,这是我的看法。

    反例比如 ReactNative 这种 hybird app,这种框架与原生之间存在巨大的鸿沟,一旦出现了坑估计不懂原生的人是毫无头绪。
    wuhaoworld
        71
    wuhaoworld  
       2021-03-22 12:01:07 +08:00
    还是推荐原生
    wxsm
        72
    wxsm  
       2021-03-22 12:02:37 +08:00   ❤️ 1
    @overflow99 我不知道你为什么戾气这么重,一言不合就要开始人身攻击。我没有说用「原生」的人都有毛病,也没有阻止你们使用,我自己也用「原生」写了不少小程序。我只是提出了我自己的看法。
    jingcoco
        73
    jingcoco  
       2021-03-22 12:23:21 +08:00 via iPhone
    现在用原生也好多花样。。。。最近是学了个用 ts,scss 写,然后用 gulp 转成 js,wxss
    dong568789
        74
    dong568789  
       2021-03-22 12:24:36 +08:00
    原生 + vant
    runze
        75
    runze  
       2021-03-22 13:20:26 +08:00
    @wxsm
    1:“小程序与框架的关系与此类似,uniapp 等框架编译以后得到了「原生」代码,仅此而已。”
    很多小程序框架是运行时的,不存在“编译后的原生代码”,除非把它们编译后的那堆 js 当作“原生代码”

    2:“它们这些框架虽然可能也存在自己的坑,但这种坑一般不难解决”
    这种坑很难解决,尤其是对楼主这样不熟悉小程序的
    overflow99
        76
    overflow99  
       2021-03-22 13:40:45 +08:00   ❤️ 1
    @wxsm 不至于上升到人生攻击的程度,你太敏感了。语言本就是一种工具,没有高低贵贱之分。你很难理解使用原生开发的人,原生就是框架的基础啊,js 就是 ts 的基础,那使用基础,为什么很难理解?你可以有这种想法,但是你要知道这种想法是有偏见的。
    wtzwutianzhi
        77
    wtzwutianzhi  
       2021-03-22 13:44:21 +08:00
    肯定原生的。多端需求的可以 uni
    weixiangzhe
        78
    weixiangzhe  
       2021-03-22 13:52:30 +08:00 via iPhone
    原生才有学习成本 那玩意看都懒得看 上 taro 或者 remax 吧
    tanranran
        79
    tanranran  
       2021-03-22 14:00:30 +08:00
    @Yokin #66 复杂的需要用 NUVE 模式开发,简单的需要用 VUE 模式就行。
    其次我觉得它用的不是 uniapp 开发的
    1 、为了节省前期成本找外包
    2 、DCloud 是几年前的模式 [问题确实多] ,现在最新的是 uniapp
    3 、自动生成的代码?话说 uniapp 代码全都需要自己写
    flyslow
        80
    flyslow  
       2021-03-22 14:06:46 +08:00
    看需求
    简单的小程序,一般原生的会比较好一点,链路短,遇到问题好排查。
    复杂的小程序,涉及到需要架构或组织一下的,多人协作开发的,可以考虑 Taro,uni-app 没用过不做评论。
    不看需求就定技术栈属于耍流氓
    Martox
        81
    Martox  
       2021-03-22 14:12:16 +08:00   ❤️ 1
    推荐一下 mpx,用的是原生结合类 vue 语法,性能比 taro 更好一些吧,更新和修复 issue 也比较快。
    toacnme
        82
    toacnme  
       2021-03-22 14:14:17 +08:00
    Taro 用了大半年了,还不错
    mogutouer
        83
    mogutouer  
       2021-03-22 14:39:51 +08:00
    @whypool 不要误人子弟,mpvue 都停更 2 年了,bug 一大堆,数组更新视图都不更新的,属性里不能调方法
    54xavier
        84
    54xavier  
       2021-03-22 15:19:16 +08:00   ❤️ 1
    一开始用原生,写着不带劲儿,换了 uni-app 每次修改都要重新编译一次,代码多了就觉得挺卡的,报错了调试那些也都不方便,各种参数名、代码片段都是乱七八糟的,最后换回原生,就舒服了。

    强烈建议没有多端需求还是用原生开发,也就是没有数据双向绑定会稍微麻烦一点儿,习惯了还是觉得挺好的。
    vinsony
        85
    vinsony  
       2021-03-22 16:24:13 +08:00
    不管跨不跨端我都要用 uni,原生就是一坨屎
    timedivision
        86
    timedivision  
       2021-03-22 16:26:36 +08:00
    uniapp 吧,给你个搭好的 uniapp+ts 的架子,前提你愿意用 ts 的话
    timedivision
        87
    timedivision  
       2021-03-22 16:26:49 +08:00
    uniapp 吧,给你个搭好的 uniapp+ts 的架子,前提你愿意用 ts 的话
    @timedivision https://github.com/panghujiajia/uniapp-ts
    TomVista
        88
    TomVista  
       2021-03-22 16:55:46 +08:00
    性能: 原生约等于 uniapp taro 2.x 远大于 kbone taro 3.0 (我记得好像是一个数量级 100/1000,这个样子)

    没写过小程序建议用原生,写过的建议 用编译型的框架,不推荐运行时的主要还是性能问题,

    小程序原生有坑,然后其他框架都有坑上加坑的情况,程度不分先后

    总之,优先原生
    yang137162692
        89
    yang137162692  
       2021-03-22 18:25:17 +08:00
    uniapp 与 mpvue 二选一的话。

    单单对比长列表渲染表现:mpvue 渲染长列表有压力,一旦状态变化,在低端手机上会发生肉眼可见的卡顿。反观在 uniapp 上这种情况有做特别的优化。并且 uniapp 目前还在更新,mpvue 已经停更一两年了....

    之前使用的是 mpvue,因为部分应用场景渲染数目还是比较大的,尝试过将项目迁移到 uniapp 之后,应付这种场景就表现好多了。

    其他比较可以在官方在掘金上面发表的文章上看到 https://juejin.cn/post/6844904118901817351
    zhou01
        90
    zhou01  
       2021-03-22 20:14:05 +08:00
    用 Taro 用了好久了,感觉还可以
    go522000
        91
    go522000  
       2021-03-22 21:15:42 +08:00
    嗯。用 uniapp 遇到一个问题,我是用 uniapp+colorui 给客户开发 H5 端,过一年后客户要更新一点东西,改完成后新编译,colorui 的弹出框都不能用了,只能退后上一个版本再重新编译才能用。。。这事我不知道是 colorui 的坑,还是 uniapp 的坑,如果是长期维护的,我还是建议用小程序原生的语言去开发比较好。
    FightPig
        92
    FightPig  
       2021-03-22 21:45:15 +08:00
    uniapp 最大的问题就是说是开源,你提个 bug 或者 pr,n 久都不会有人理你
    weitch
        93
    weitch  
       2021-03-22 21:55:07 +08:00
    用 uniapp 的人已经版本上线了,那个用原生的还在编译。
    xream
        94
    xream  
       2021-03-22 22:16:43 +08:00
    有能力填坑的用 uniapp 非常完美
    luoway
        95
    luoway  
       2021-03-23 10:07:27 +08:00
    没有跨端需求可以考虑自己或自己公司大佬写框架
    Vue 技术栈推荐的只有 uniapp
    框架必须是静态编译以免后续迭代出现性能问题,排除 Taro 3,现在我已经不关注 Taro 的后续发展了
    Taro 2 是静态编译但只支持 React,不满足技术栈要求
    terryloto
        96
    terryloto  
       2021-03-23 10:18:52 +08:00
    原生
    inhal
        97
    inhal  
       2021-03-23 12:29:57 +08:00 via Android
    mpxjs
    genesischou
        98
    genesischou  
       2021-04-26 23:36:19 +08:00
    原生+vue-mini
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2936 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:02 · PVG 22:02 · LAX 06:02 · JFK 09:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.