V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LeeReamond
V2EX  ›  问与答

有没有前端带佬讲一下 Vue3 现在值不值得迁移, ts 支持相关的轮子完善了吗?

  •  
  •   LeeReamond · 2021-06-10 16:46:19 +08:00 · 4596 次点击
    这是一个创建于 1291 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前折腾过 vue2 的 ts,感觉不太行。最近看了一下 vue3 介绍,说是支持监听深层对象的改动,还有支持 ts 啥的,略心动。目前 vue2 需要使用 router/vuex/axios 这些基础组件,进阶的需要服务端渲染 /组件库之类的支持,请问 vue3 在这些方面目前能无痛迁移了吗?

    把现有 vue2 项目迁移到 3 需要多少功夫?

    47 条回复    2021-06-15 09:30:10 +08:00
    2kCS5c0b0ITXE5k2
        1
    2kCS5c0b0ITXE5k2  
       2021-06-10 16:47:54 +08:00
    自己的项目可以搞. 公司就算了.
    TomVista
        2
    TomVista  
       2021-06-10 16:53:13 +08:00
    不能,需要手动改一些不兼容的语法和骚操作。工作量主要看你 不兼容的语法和骚操作 用的多不多,

    然后 vue3 全家桶仍然和 ts 不搭
    PinkRabbit
        3
    PinkRabbit  
       2021-06-10 16:54:48 +08:00
    没法无痛,如果项目挺大迁移起来还挺麻烦的,如果你里面有用一些组件库之类的基本没兼容
    lqfxz520
        4
    lqfxz520  
       2021-06-10 18:02:53 +08:00
    @TomVista >> 然后 vue3 全家桶仍然和 ts 不搭
    为什么不搭啊
    timedivision
        5
    timedivision  
       2021-06-10 18:12:08 +08:00
    不完善的直接 any 完事
    belin520
        6
    belin520  
       2021-06-10 18:20:12 +08:00
    迁移不推荐,也没有必要
    新开项目已经 OK 了,生态组件慢慢在跟上
    VDimos
        7
    VDimos  
       2021-06-10 18:37:43 +08:00 via Android
    写到最后成了 anyscript
    releaseme
        8
    releaseme  
       2021-06-10 19:58:03 +08:00
    非要迁移的话整个微前端慢慢套吧
    LeeReamond
        9
    LeeReamond  
    OP
       2021-06-10 19:59:07 +08:00
    @belin520 慢慢跟上意思是现在还不行?
    66beta
        10
    66beta  
       2021-06-10 20:14:41 +08:00
    vue 强大之处就是自己维护了一套生态,不用烦恼选什么 router 之类的问题

    公司项目就没必要了,不如直接换 react
    anguiao
        11
    anguiao  
       2021-06-10 20:17:41 +08:00 via Android
    没有必要迁移啊,后面还有 2.7,到时候迁移到 2.7 就行了。
    2.x 的项目还是留在 2.x 吧,比较稳妥。
    bojackhorseman
        12
    bojackhorseman  
       2021-06-10 20:21:55 +08:00 via iPhone   ❤️ 2
    公司的项目被我引入了 composition-api,上上上周心血来潮周末尝试迁移了一下,累吐血了,一堆坑。要改的地方太多了,我已经放弃了🙃
    IvanLi127
        13
    IvanLi127  
       2021-06-10 20:24:58 +08:00 via Android
    不值得吧,觉得 vue3 不够好,如果你不满意 vue2,可以考虑 react
    belin520
        14
    belin520  
       2021-06-10 20:54:56 +08:00
    @LeeReamond #9 基本够用,但是生态跟 vue2 还是差很多的
    vinsony
        15
    vinsony  
       2021-06-10 21:05:16 +08:00
    我试了一下,吐了。大项目要迁移的话改动非常多,Element 现在也不少 bug,再改 ts 的话更困难,费力不讨好。等 2.7 或是 3.1 再看吧
    TomVista
        16
    TomVista  
       2021-06-10 21:11:07 +08:00 via Android
    @lqfxz520 比如 vuex +ts,写起来超级恶心,vuerouter 就没 ts,然后新的 proxy+setup 能写吐
    EPr2hh6LADQWqRVH
        17
    EPr2hh6LADQWqRVH  
       2021-06-10 22:00:03 +08:00 via Android
    vue 和 ts 不兼容,见一次说一次
    lupkcd
        18
    lupkcd  
       2021-06-10 22:49:05 +08:00   ❤️ 1
    新项目可以上 迁移不建议
    LS 一大堆说 ts 不兼容的 不知道他们怎么用的
    mxT52CRuqR6o5
        19
    mxT52CRuqR6o5  
       2021-06-10 22:49:10 +08:00 via Android
    新项目你要是想用,把问题都想明白了,可以上 vue3,老的 vue2 项目就保持着 vue2
    matrix67
        20
    matrix67  
       2021-06-10 22:53:29 +08:00
    perl5 perl6
    python2 python3
    vue2 vue3
    wunonglin
        21
    wunonglin  
       2021-06-10 23:53:48 +08:00
    vue 和 ts 搭配太恶心了 2 、3 都是
    walpurgis
        22
    walpurgis  
       2021-06-11 02:25:28 +08:00 via Android
    公司项目配置了下,可以混用,感觉还行,ts 本身也是有渐进式理念的,跟 vue 一样,按需逐步替换,一些复杂业务逻辑非常适合用 ts,不然数据对象多嵌套几层就晕了,组件展示层用老写法也完全没问题
    chouchoui
        23
    chouchoui  
       2021-06-11 08:00:24 +08:00 via iPhone
    composition api + ts 毫无问题
    murmur
        24
    murmur  
       2021-06-11 08:10:13 +08:00   ❤️ 1
    vue3 其实没啥太亮眼的特性,主要是 vue2 做的太好了,没啥痛点
    ALVC666
        25
    ALVC666  
       2021-06-11 09:00:37 +08:00
    新项目 vue3 + tsx 真的体验很爽 类型推导和智能提示都有了 嗖嗖的
    旧项目的很难 自己的还好 如果使用的第三方库没有支持
    那就蛋疼了
    DOLLOR
        26
    DOLLOR  
       2021-06-11 09:25:51 +08:00
    组合式 API+响应式对象,写起来像 React 的 hook 。
    缺点仍然是模板代码里的提示仍然不够智能。
    acthtml
        27
    acthtml  
       2021-06-11 09:46:04 +08:00
    公司的项目不建议升,生态还没准备好。
    vuex 对 ts 的支持很变扭,vue3 dev tools 还没有支持 vuex 的插件。
    uen
        28
    uen  
       2021-06-11 10:18:32 +08:00
    1. 不建议迁移
    2. vue3+ts 体验还是待提升; vue3+tsx 会好很多
    joe237
        29
    joe237  
       2021-06-11 10:40:35 +08:00
    直接迁移不建议。但是在 vue2 里用 composition api 还是很舒服的,特别是一些体态臃肿的组件,逻辑拆分开来相对全怼在 Options 中舒服太多了
    mumaniu
        30
    mumaniu  
       2021-06-11 10:43:12 +08:00
    不迁移。vue2 挺好的。新项目不面对 C 端,可以直接上 vue3.
    mongodb
        31
    mongodb  
       2021-06-11 11:16:38 +08:00
    不行。

    Vue3 自己没问题。

    周边生态没跟上。
    abersheeran
        32
    abersheeran  
       2021-06-11 11:31:18 +08:00
    确实。Vue3 相对于 Vue2 来说,我觉得是败笔。升级没解决什么痛点问题,反而乱抄函数式设计搞得自己四不像。我一直觉得 Vue2 的 OOP 设计挺好,现在不发展自己的优势实在不知道 youyuxi 咋想的。以前我都是 Vue 和 React 想起来哪个用哪个,现在我基本只用 React 了。

    另外,Vue3 的 AnyScript 早就不是新闻了吧?
    abersheeran
        33
    abersheeran  
       2021-06-11 11:35:23 +08:00
    https://github.com/sveltejs/svelte 另外前段时间被大佬安利了这个,如果是自己的项目,可以试试看。
    hedwi
        34
    hedwi  
       2021-06-11 11:48:49 +08:00
    建议换 angular
    love
        35
    love  
       2021-06-11 11:52:55 +08:00
    @abersheeran svelte 这种动用编译器的也太重了,万一人家放弃项目了比别的框架都要惨几倍,感觉对于打算做长远的项目不利
    Terry05
        36
    Terry05  
       2021-06-11 12:24:41 +08:00
    composition api 对于写组件、模块、业务抽象等内容相比 vue2 强也不是一点,如果平时只是做业务功能、增删改查,自然感觉 vue3 相对 vue2 并没有什么提升,反而增加了很多学习成本
    ZhiyuanLin
        37
    ZhiyuanLin  
       2021-06-11 13:43:57 +08:00
    喜欢 TypeScript 还是 Angular 最爽,用 Angular 你想不用 TypeScript 都不行了。
    leelz
        38
    leelz  
       2021-06-11 13:45:53 +08:00
    vue3 全家桶已经在生产环境用上了。
    1 、ts 兼容不是很好
    2 、vuex 没法使用 vue2 的 mapGetter 、mapAction
    3 、dev-tool 不能使
    John60676
        39
    John60676  
       2021-06-11 14:23:48 +08:00
    composition api 不香吗

    https://github.com/AttoJS/vue-request
    yunyuyuan
        40
    yunyuyuan  
       2021-06-11 15:07:54 +08:00
    应该很难
    belin520
        41
    belin520  
       2021-06-11 15:21:49 +08:00
    @leelz #38 2 一直可以吧,3 已经可以了,升级下 vuex
    sjhhjx0122
        42
    sjhhjx0122  
       2021-06-11 16:53:53 +08:00
    vuex 支持 ts 一直都烂,上次看到一个 pinia,感觉不错下次准备用用
    Jaosn
        43
    Jaosn  
       2021-06-12 11:06:49 +08:00
    我司新项目全部 Vue3
    abersheeran
        44
    abersheeran  
       2021-06-14 22:37:04 +08:00
    @love 你这话说的,只要用的人多这项目哪里会被放弃?如果按照这个思维方式来考虑,那么 Linux 可能就不会出现在世界上了——用别人的操作系统太重了,万一 Linus 不维护了换系统怎么办?

    或者换个更符合中国中层领导的说法——用别国的操作系统太不靠谱了,万一别人卡我们脖子怎么办?
    abersheeran
        45
    abersheeran  
       2021-06-14 22:43:40 +08:00
    @love 开源是一种共产主义运动,你不能拿旧的私有制思维来考虑这件事。

    什么是旧的私有制思维?“人家放弃项目了”。他确实是创造者,却没有所有权,以 MIT 协议放出来的开源代码属于全世界。

    “所有人都放弃这个项目了”这才是需要考虑的风险。而我觉得,这项目至少比大部分公司的网站要活的久,没必要杞人忧天。如果真的担忧,可以打钱、贡献代码等方式支持。

    当然,你也可以选择不用,这是你的权利。回复这些只是交流一下思想。
    love
        46
    love  
       2021-06-15 08:55:01 +08:00
    @abersheeran web 项目远到不了 linux 这种几乎不太可能被放弃的程度,特别是 js 界,荒废的 js 项目多了去了,连 jquery 和 backbone 以前这么流行的都不行了,js 的技术演化很快,而这类靠编译器来魔改 JS 语法的恰恰是危险的方向,且不象 backbone 这类只是纯 JS 管理者不维护了也能用,编译器这种和工具绑定的不维护了非常难受,连带一堆东西可能没法升级了如 babel 等。

    另外别觉得公司的项目活不久,公司老项目多了去了,我自己的几个项目都有十年了,技术选择也要考虑点未来方向风险。

    当然了自己玩玩的项目随便怎样都行。
    Colorful
        47
    Colorful  
       2021-06-15 09:30:10 +08:00
    自己的项目,随便你玩,公司的项目别动。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2212 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 00:03 · PVG 08:03 · LAX 16:03 · JFK 19:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.