手把手教你使用Vue2代码改成Vue3(图文详解)

之前的文章《一招教你使用vscode中插件搞定整个项目的代码替换(收藏)》中,给大家介绍了怎么使用vscode中插件搞定整个项目的代码替换。下面本篇文章给大家介绍怎么使用Vue2代码改成Vue3,伙伴们过来看看吧。

手把手教你使用Vue2代码改成Vue3(图文详解)

Vue3已经出来有一段时间了,很多朋友早已熟读了文档,写了好几个Demo,馋Composition API等新特性已久了。无奈,在实际工作中,大部分朋友还是不得不守着成千上万行的Vue2老项目过日子,做一次框架升级就像给老房子装修——念头总是充沛,决心总是匮乏。

其实Vue团队已经尽可能地减少了破坏性更新,还提供了一份细致的迁移指南,条数不少,但定睛一看,大部分都是体力活,有些很简单,比如异步组件要多包上一层:

迁移指南的地址:https://v3.cn.vuejs.org/guide/migration/array-refs.html

微信截图_20210916104748.png

立即学习“前端免费学习笔记(深入)”;

还有一些就改起来有点麻烦,比如自定义指令生命周期的更名,和传入参数的一些细微变化:

微信截图_20210916104824.png

看到这种变化后,作为厌恶重复的程序员,已经开始盘算着能不能写个代码帮我们把这些规则批量给改好了,当然,写转换代码的代码要比写网页难上不少,还好我们之前已经有了一个趁手的工具:GoGoCode的地址https://github.com/thx/gogocode

于是我们梳理了迁移指南里提到的,附带上vue-router vuex升级的一些API变化,配合GoGoCode书写了近30条转换逻辑,涵盖了Vue2到Vue3代码break change的大部分场景,这个程序可以帮助你一键把Vue2的代码转换成Vue3的代码。

迁移指南的地址:https://v3.cn.vuejs.org/guide/migration/array-refs.html

上面提到的两条Vue2到Vue3的差异对比中,右侧Vue3的代码就是通过这个工具根据左侧Vue2代码原片直出的,效果还不错吧 ^_^,我们来一起试一下!

尝试一下

全局安装gogocode-cli

npm install gogocode-cli -g

登录后复制

在终端(terminal)中跳转到需要升级的Vue项目路径。如果需要升级src路径下的Vue代码,执行如下命令

gogocode -s ./src -t gogocode-plugin-vue -o ./src-out

登录后复制

转换操作执行完毕后新的Vue3代码会被写入到src-out目录中

我们拿Vue2的官方示例项目vue-hackernews-2.0试了一下,发现在转换的基础上只要稍作改动再改一下构建流程就能跑起来了,一些转换的Diff如下:(查看完整Diff)

 Vue2 的官方示例项目 vue-hackernews-2.0地址:https://github.com/vuejs/vue-hackernews-2.0

查看完整Diff地址:https://github.com/thx/gogocode/commit/6506a0e693aff1896da6c8863fa7e7c72d89610f?branch=6506a0e693aff1896da6c8863fa7e7c72d89610f&diff=split

微信截图_20210916105303.png

微信截图_20210916105330.png

这里只是简单地介绍,完整的方案请参考:https://gogocode.io/zh/docs/specification/vue2-to-vue3

实现比预想的要简单很多

为了达成转换目的,GoGoCode新增支持了对。vue文件的解析,我们可以轻松地获取到解析好的template和scirpt AST节点,并利用 GoGoCode方便的API进行处理。

一些简单的规则,比如前面介绍的异步组件转换直接进行类似字符串的替换即可,由于是基于AST的,所以无需关心代码格式,工作量是很小的:

script  .replace('() => import($_$)', 'Vue.defineAsyncComponent(() => import($_$))')  .replace(    `      () => ({        component: import($_$1),        $$$      })`,    `    Vue.defineAsyncComponent({      loader: () => import($_$1),      $$$    })      `  );

登录后复制

这次项目也检验了GoGoCode对复杂情况的处理,就像前面提到的自定义指令生命周期的变化,也很轻松地做到!

推荐学习:JS视频教程

以上就是手把手教你使用Vue2代码改成Vue3(图文详解)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3019672.html

(0)
上一篇 2025年3月13日 05:29:55
下一篇 2025年2月24日 11:57:00

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vuejs怎么取消冒泡

    vuejs取消冒泡的方法:1、打开相应的vue文件;2、通过“…”方式取消事件冒泡。 本文操作环境:windows7系统、vue2.5.17版、DELL G3电脑。 vuejs怎么取消冒泡? vue.js阻止事件冒泡和默认事件 …

    2025年3月13日
    200
  • vuejs query 传参失败怎么办

    vuejs query传参失败的解决办法:1、打开相应的代码文件;2、查看需要传的数据类型;3、将数据转换为json格式传过去即可。 本文操作环境:windows7系统、vue2.5.17版、DELL G3电脑。 vuejs query 传…

    2025年3月13日
    200
  • vuejs对开发有啥好处

    vuejs对开发的好处有:1、体积小;2、有更高的运行效率;3、让开发者不用再去操作DOM对象,把更多的精力投入到业务逻辑上;4、生态丰富;5、学习成本低。 本文操作环境:windows7系统、vue2.5.17版、DELL G3电脑。 v…

    2025年3月13日 编程技术
    200
  • vuejs创建项目失败怎么办

    vuejs创建项目失败的解决办法:1、卸载nodejs;2、删掉npm-cache等文件夹删掉;3、重新下载nodejs安装;4、输入“npm config list”命令;5、使用“vue init  webpack”创建项目即可。 本文…

    2025年3月13日
    200
  • vuejs el有什么用

    在vuejs中,el的作用为:指明Vue实例的挂载目标,会提供一个在页面上已存在的DOM元素作为Vue实例的挂载目标;在实例挂载之后,元素可以使用“vm.$el”访问。 本教程操作环境:windows7系统、vue2.9.6版,DELL G…

    2025年3月13日 编程技术
    200
  • vuejs如何全局自定义变量

    方法:设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用“export default”暴露出去,在“main.js”里面使用“Vue.prototype”挂载到vue实例上面或者在其它地方需要使用时,引入该模块便可。 本教…

    2025年3月13日
    200
  • vuejs中prop什么意思

    在vuejs中,prop是父组件用来传递数据的一个自定义属性。子组件需要显示的地用props选项声明“prop”;当使用非字符串模板时,prop的名字形式会从camelCase转为kebab-case(短横线隔开)。 本教程操作环境:win…

    2025年3月13日
    200
  • vuejs模板什么用

    vuejs模板从根本上规定了一个系统应当以怎样的交互形式和UI风格面向使用者,而遵循这套模板进行设计和完善功能;其作用为:1、担负XSS的防范;2、支持片段的复用;3、支持数据输出是的处理;4、支持动态数据;5、与异步流程严密结合。 本教程…

    2025年3月13日
    200
  • vuejs的两个核心是什么

    vuejs的两个核心是数据驱动和组件系统。数据驱动也就是数据的双向绑定,用于保证数据和视图的一致性。组件系统能够把页面抽象成多个相对独立的模块;可以实现代码重用,提高开发效率和代码质量,便于代码维护。 本教程操作环境:windows7系统、…

    2025年3月13日
    200
  • vuejs怎么修改背景色

    vuejs修改背景色的方法:1、在index.html中引入公用的css样式;2、通过添加“beforeCreate () {…}”代码修改单个组件的背景色即可。 本文操作环境:windows7系统、vue2.5.17版、Del…

    2025年3月13日
    200

发表回复

登录后才能评论