当前位置: 首页 > news >正文

vue2项目迁移vue3与gogocode的使用

#背景

公司有个项目使用vue2+js+webpack框架开发的,由于该项目内部需要安扫,导致很多框架出现了漏洞需要升级,其中主要需要从vue2升vue3,但是重新搭框架推翻重做成本太高,于是找到了gogocode。

#升级步骤踩坑

1. 安装 gogocode插件

pnpm install gogocode-cli -g

2. 使用迁移工具将代码从vue2转换到vue3

gogocode/packages/gogocode-plugin-vue at main · thx/gogocode · GitHub

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

./src为代码所在文件夹

3. 升级 Element 的引用代码

gogocode -s ./src -t gogocode-plugin-element -o ./src

4. 安装element-plus

pnpm install element-plus

5. 手动修改main.js 里引用

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'window.$vueApp = Vue.createApp(App) // 放在 import下第一行```
其他文件注册引用
...```window.$vueApp.mount("#app"); //放在最后一行

6. 依赖升级

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

7. 参照v-cli文档 迁移webpack相关配置

Migrate from v4 | Vue CLI

8. 升级eslint相关依赖版本及配置至支持vue3

https://eslint.vuejs.org/user-guide/ 
https://eslint.nodejs.cn/docs/latest/

9. 修复代码里的其他报错

a. 如在项目中引入了echarts依赖,在初始化时应使用markRaw

import { markRaw } from "vue";
var myChart = markRaw(echarts.init(DOM));

b. Util中的公用方法用export导出在main中引用

import { functionA } from '@/utils'
window.$vueApp.config.globalProperties.functionA = functionA

c. 替换不兼容组件

d. 根据报错提示修复代码

e. ts文件兼容js文件引入配置 (在tsconfig.json中配置,没有该文件就手动创建一个)

{"compilerOptions": {"allowJs": true, // 允许编译JS文件"outDir": "./dist" // 输出目录},"include": ["./src/**/*" // 包含源代码目录]}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 3C电子制造行业MES系统,提高企业生产效率
  • QCC5181 歌词歌曲名多国语言显示替代QCC5125 CSR8675
  • 基于springboot的一站式汽车服务系统-计算机毕业设计源码72697
  • AI在软件开发中的角色:助手还是替代者?
  • Centos7 安装老版本的chrome
  • GIT 使用相关技巧记录
  • 算法-常见数据结构设计
  • Idea新增Module报错:sdk ‘1.8‘ type ‘JavaSDK‘ is not registered in ProjectJdkTable
  • 阻塞赋值与非阻塞赋值
  • 功能强大的视频剪辑工具
  • 常用的工具
  • Arthas实战(4)- 线程死锁问题排查
  • C语言 -- 深入理解指针(二)
  • 前端面试题7(单点登录)
  • python爬虫入门(四)之Beautiful Soup库
  • HashMap剖析之内部结构
  • SpingCloudBus整合RabbitMQ
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 阿里云应用高可用服务公测发布
  • 深度学习入门:10门免费线上课程推荐
  • 算法之不定期更新(一)(2018-04-12)
  • 听说你叫Java(二)–Servlet请求
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​iOS实时查看App运行日志
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (a /b)*c的值
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (SERIES12)DM性能优化
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (含笔试题)深度解析数据在内存中的存储
  • (简单) HDU 2612 Find a way,BFS。
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (转)setTimeout 和 setInterval 的区别
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .net core Swagger 过滤部分Api
  • .Net mvc总结
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET多线程执行函数
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @Autowired和@Resource的区别
  • @DataRedisTest测试redis从未如此丝滑
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [Angular 基础] - 表单:响应式表单
  • [C++]: 模板进阶
  • [C++]AVL树怎么转
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [CTF夺旗赛] CTFshow Web1-12 详细过程保姆级教程~
  • [DP 训练] Longest Run on a Snowboard, UVa 10285