首页 > 其他分享 >Vue2 到 Vue3 升级插件gogocode-plugin-vue

Vue2 到 Vue3 升级插件gogocode-plugin-vue

时间:2023-05-23 13:04:10浏览次数:42  
标签:src 插件 vue plugin 升级 Vue3 gogocode 链接

配合gogocode-cli使用

开始迁移

​Vue3的到来为我们带来了许多惊喜的变化,但是由于Vue3对于Vue2在Api层面存在诸多兼容问题,并不能做到平滑升级。所以我们根据v3迁移指南利用gogocode这个代码转换利器,利用它操作AST,开发了一套Vue2升级工具。利用这套工具能够快速地把你的Vue2代码升级到Vue3。​

这套工具使用非常简单,只需要执行简单的命令就可以了。

安装工具

全局安装最新的 gogocode-cli

npm install gogocode-cli -g
 

迁移源文件

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

注意:-s 后面是原文件的目录/文件名,-o 后面是输出的目录/文件名,如果两者相同,转换插件会覆盖你的代码,在此操作前请做好备份。

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

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

指定应用规则

添加参数 -p include-rules=xxx,yyy,举例只应用 vModel 及 customDirectives 规则:

gogocode -s ./src -t gogocode-plugin-vue -o ./src-out -p include-rules=vModel,customDirectives
 

规则名称请参看 rules.js 里面的 name 字段。

排除应用规则

添加参数 -p exclude-rules=xxx,yyy,举例只排除 vModel 及 customDirectives 规则:

gogocode -s ./src -t gogocode-plugin-vue -o ./src-out -p exclude-rules=vModel,customDirectives
 

规则名称请参看 rules.js 里面的 name 字段。

依赖升级

除了升级源码,我们还需要升级 Vue3 相关依赖,这一点也可以自动完成,在终端(terminal)中跳转到需要升级的Vue项目路径,执行如下命令:

gogocode -s package.json -t gogocode-plugin-vue -o package.json
 

这条命令会帮你把 package.json 里面的 Vue/Vuex/Vue-router/Vue 编译工具 升级到适配 Vue3 的版本

npm install
 

即可完成Vue3相关依赖的安装​

注意:如果你是使用老版本的 vue-cli 生成的项目,需要自行升级 vue-cli 以确保 Vue3 项目能成功被构建,可参考:vue-cli2的项目升级到vue-cli4做了哪些事情Migrating from v3

需要关注的地方

​我们尽可能让工具自动化,但有些问题还是需要你注意一下。

全局 App

​由于 Vue3 全局对象变成 createApp()创建。转换工具将 createApp() 返回对象传递给 window.$vueApp。此时使用者需要将window.$vueApp = Vue.createApp(App) 代码块移动到调用 window.$vueApp 代码的最前面。避免window.$vueApp 为 undefined 的情况出现。image.png

依赖的 Vue2 组件库需自行升级

​一些依赖于 Vue2 开发的组件库也推出了 Vue3 的版本,它们的 API 发生了一些变化,这需要你手动升级。

做好检查和测试

另外,由于是静态的代码转换,可能你的代码里会有些我们没想到的写法导致转换出乱子,转换后请做好人工比对和测试!发现转换的问题可以提交给我们。​

其他项目

其它项目升级请参考Vue官方链接

转换规则覆盖

规则 转换支持 文档
v-for 中的 Ref 数组 链接
异步组件 链接
attribute 强制行为 链接
$attrs包含class&style 链接
$children ✖️ 链接
自定义指令 链接
自定义元素交互 无需转换 链接
Data 选项 链接
emits选项 链接
事件 API 链接
过滤器 链接
片段 链接
函数式组件 链接
全局 API 链接
全局 API Treeshaking 链接
内联模板 Attribute ✖️ 链接
keyattribute 链接
按键修饰符 链接
移除$listeners 链接
挂载API变化 链接
propsData 开发中 链接
在 prop 的默认函数中访问this 无需转换 链接
渲染函数 API 链接
插槽统一 链接
Suspense 无需转换 链接
过渡的 class 名更改 链接
Transition 作为 Root 开发中 链接
Transition Group 根元素 链接
移除v-on.native修饰符 链接
v-model 链接
v-if 与 v-for 的优先级对比 链接
v-bind 合并行为 链接
VNode 生命周期事件 开发中 链接
Watch on Arrays 链接
vuex 链接
vue-router 链接

 

参考

https://github.com/thx/gogocode/tree/main/packages/gogocode-plugin-vue

标签:src,插件,vue,plugin,升级,Vue3,gogocode,链接
From: https://www.cnblogs.com/miangao/p/17424087.html

相关文章

  • Vue计算器实例练习
    计算器实例常用的加减乘除,点击=显示计算结果X2、1/x:输入任意的数字,点击X2、1/x计算出结果点击C清空当前内容点击✖删除末尾的字符点击结果栏,可以直接输入运算表达式源码X2使用v-html在网页中显示点击特定的位置,执行特定的功能str.substring(参数1,参数2)参数1......
  • 【UE4】插件与模块
    一、什么是插件与模块模块是实现某一个或一类功能的集合,当模块足够独立和庞大、复杂之后,可以将其提升为插件。UE4引擎就是由众多模块组成,而插件也可以包含一个或多个模块,但模块却不能包含插件。相对于模块来说,插件具有更高的独立性,除使用引擎模块外,一般不使用其它插件或模块......
  • UE4插件与一些编辑器扩展总结
    前言:.uplugin与.uproject前面的版本号、版本名、插件名等在编辑器下创建插件就会有对应生成。值得一提的是"module"与"Plugins":比如我做的UCharts插件,这里头Type可填写的值范围:(此处参考【UE4】插件与模块-知乎(zhihu.com)namespaceEHostType{enumType{......
  • vueh5实现双指操作图片或者内容放大缩小拖动 (hammerjs插件)
    可在mounted钩子直接使用通过使用Hammer.js库来实现手势操作,包括缩放、拖动和双击重置功能1.在模板中添加了一个<div>元素,并为其设置了ref属性,以便在代码中引用该元素。2.在mounted生命周期钩子函数中,通过this.$refs.main获取之前设置的<div>元素。3.创建了一个新的Hammer实例,传入......
  • Authentication plugin ‘caching_sha2_password‘ cannot be loaded
    用navicate登录mysql8.0时报错如下:Authenticationplugin‘caching_sha2_password‘cannotbeloade原因是mysql8之前的版本中加密规则是mysql_native_password,而mysql8之后,加密规则是caching_sha2_password。解决问题方法有两种,一种是升级navicat驱动,另一种是把mysql用......
  • 聊聊如何利用spring插件来实现策略模式
    前言偶然的机会发现spring有个spring-plugin,官网对它的介绍是SpringPluginprovidesamorepragmaticapproachtoplugindevelopmentbyprovidingthecoreflexibilityofhavingpluginimplementationsextendingacoresystem'sfunctionalitybutofcoursenotdel......
  • Jenkins实战-钉钉构建提醒插件的二次开发
    本篇我们来讨论下关于jenkins社区中钉钉提醒这个插件的二次开发过程。为什么需要二次开发呢,很简单,这个插件只是提供了最基本的构建后的提醒,有时候,我们需要一些额外的功能。例如,我们在打完app的包后,利用这个插件是可以发送提醒,但是点击标题,这个插件默认跳转的是jenkins上当前构......
  • webpack-安装html-webpack-plugin
    安装html-webpack-plugin运行如下的命令,即可在项目中安装此插件:npminstallhtml-webpack-plugin-D配置html-webpack-plugin//导入html插件,得到一个构造函数constHtmlPlugin=require('html-webpack-plugin')//创建HTML插件的实例对象consthtmlPlugin=newHtmlPlug......
  • webpack-安装和配置webpack-dev-server这个插件
    webpack插件的作用通过安装和配置第三方的插件,可以拓展webpack的能力,从而让webpack用起来更方便。最常用的webpack插件有如下两个:webpack-dev-server类似于node.js阶段用到的nodemon工具每当修改了源代码,webpack会自动进行项目的打包和构建html-webpack-pluginwebpack......
  • FL Studio21教程之如何插入第三方插件
    FLStudio21是一款非常容易上手同时又特别强大的编曲软件,FLStudio21拥有一些内置插件,如Soundgoodizer,也可以插入第三方插件。本文将介绍在FLStudio21使用过程中如何插入第三方插件的方法过程,感兴趣的一定要关注哦。首先,打开FLStudio21软件,在通道列表中任意选择一个通道,右击,......