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

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

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

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

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

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

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

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

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

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

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

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

    总之,优先原生
    yang137162692
        89
    yang137162692  
       311 天前
    uniapp 与 mpvue 二选一的话。

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

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

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