vue2项目升级到vue3经历分享

依据vue官方文档,vue2在2023年12月31日终止维护。因此决定将原来的岁月云记账升级到vue3,预计工作量有点大,于是想着把过程记录下来。
原系统使用的技术栈

"dependencies": {
    "axios": "^0.21.1",
    "babel-plugin-lodash": "^3.3.4",
    "babel-plugin-transform-remove-console": "^6.9.4",
    "clipboard": "^2.0.6",
    "core-js": "^3.6.5",
    "echarts": "^5.0.1",
    "element-china-area-data": "^5.0.2",
    "element-ui": "^2.15.2",
    "file-saver": "^2.0.5",
    "js-cookie": "2.2.0",
    "js-md5": "^0.7.3",
    "jsencrypt": "^3.2.1",
    "less": "^4.1.0",
    "less-loader": "^7.2.1",
    "moment": "^2.24.0",
    "nprogress": "0.2.0",
    "pinyin-match": "^1.2.2",
    "postcss-plugin-px2rem": "^0.8.1",
    "resize-detector": "^0.2.2",
    "uuid": "^8.3.2",
    "vue": "^2.6.11",
    "vue-router": "^3.0.7",
    "vuex": "3.0.1",
    "xlsx": "^0.17.0"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "~4.5.0",
    "@vue/cli-plugin-eslint": "~4.5.0",
    "@vue/cli-plugin-router": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "babel-eslint": "^10.1.0",
    "compression-webpack-plugin": "^5.0.0",
    "crypto-js": "^4.1.1",
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^6.2.2",
    "file-loader": "^6.2.0",
    "fingerprintjs2": "^2.1.4",
    "image-webpack-loader": "^7.0.1",
    "lodash-webpack-plugin": "^0.11.6",
    "mini-css-extract-plugin": "^1.5.0",
    "quill-image-extend-module": "^1.1.2",
    "url-loader": "^4.1.1",
    "vue-quill-editor": "^3.0.6",
    "vue-template-compiler": "^2.6.11"
  },

新系统使用的技术栈如下,可以看到至少有下面几点变化

  1. 代码编译从webpack调整为vite
  2. 前端界面框架从element-ui升级到element-plus
  3. 状态管理从vuex调整为pinia
  4. 支持typescript
"dependencies": {
    "@element-plus/icons-vue": "^2.1.0",
    "@tinymce/tinymce-vue": "5.0.0",
    "axios": "^1.6.1",
    "codemirror": "5.65.5",
    "cropperjs": "^1.6.1",
    "crypto-js": "4.1.1",
    "docx-preview": "^0.3.0",
    "echarts": "^5.4.3",
    "element-china-area-data": "5.0.2",
    "element-plus": "2.2.32",
    "js-cookie": "^3.0.5",
    "js-md5": "^0.8.3",
    "lodash": "^4.17.21",
    "moment": "^2.29.4",
    "nprogress": "^0.2.0",
    "pinia": "^2.1.7",
    "pinyin-match": "1.2.2",
    "resize-detector": "0.2.2",
    "sortablejs": "^1.15.0",
    "tinymce": "6.3.2",
    "uuid": "^9.0.1",
    "vue": "^3.3.8",
    "vue-router": "^4.2.5",
    "xlsx": "^0.18.5"
  },
  "devDependencies": {
    "@types/node": "18.11.11",
    "@vitejs/plugin-vue": "^3.2.0",
    "@vitejs/plugin-vue-jsx": "^3.1.0",
    "less": "^4.2.0",
    "less-loader": "^11.1.3",
    "postcss-plugin-px2rem": "^0.8.1",
    "tailwindcss": "^3.4.3",
    "typescript": "^4.9.3",
    "unplugin-auto-import": "^0.16.7",
    "unplugin-icons": "^0.17.4",
    "unplugin-vue-components": "^0.25.2",
    "vite": "^3.2.3",
    "vite-plugin-compression": "^0.5.1",
    "vite-plugin-html": "3.2.0",
    "vue-tsc": "^1.0.11"
  }

1 element-plus相关
1.1 slot插槽
slot-scope="scope" 批量更改为#default="scope"
v-slot="scope"统一调整为#default="scope"
1
2 api请求
看到下面这个结果真是头大,工程师是不是在摸鱼,复制、粘贴不用动脑,为何不写一个指令来实现。只能一个个改。这个里面的工作量非常之大,得耐心去调整。
新的api
1
看看原来的store方式调用api,写法确实冗余拖拉,没有新的方式简洁
1
1
新方式,一句话定义完了,不用搞那么多绕绕。
1
有一些人并不是直接用dispatch模式,例如这样的,是直接引用了api里面的方法
1
另外需要注意加上async
1
还有人在页面直接写了axios调用,这些也需要统一调整过来,真是一个修行的过程,花了我一天的时间,将256处直接用axios的请求调整过来。
1
继续重构代码,发现还有这样打开界面的,通过window.open直接打开界面,这样的代码都属于比较隐蔽的。
1

3 存储相关
可以参考我之前写的文档多租户平台前端存储结构的选择,工程师采用vuex存储状态,肯定不合理,结果就是多租户被架空。像这类问题估计99%的前端开发工程师面试一定能答上来,但是实际应用就只能呵呵了。
1

4 页面组件依赖
待补充。。。。

相关推荐

  1. 【前端】项目Vue2升级Vue3注意事项

    2024-04-23 20:16:01       33 阅读
  2. vue2升级vue3的一些使用注意事项记录(二)

    2024-04-23 20:16:01       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 20:16:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 20:16:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 20:16:01       82 阅读
  4. Python语言-面向对象

    2024-04-23 20:16:01       91 阅读

热门阅读

  1. Redis雪崩

    2024-04-23 20:16:01       38 阅读
  2. python多线程详解

    2024-04-23 20:16:01       30 阅读
  3. Ubuntu搭建RP2040开发环境-1

    2024-04-23 20:16:01       38 阅读
  4. Springboot2.7解决静态资源302问题

    2024-04-23 20:16:01       39 阅读
  5. LeetCode 42. 接雨水 - PHP

    2024-04-23 20:16:01       32 阅读
  6. 2023年图灵奖揭晓

    2024-04-23 20:16:01       31 阅读