vue - vue2 升级到 vue3的步骤
访问量: 933
refer to :
原则:
1. 能不动就别动
2. 一定要动的话,改动比较大。
3. 看:npm run dev 看能否能跑起来, 看报的是什么错
重新安排package.json
如果是大项目的话,建议慎重操作 如果是小项目的话,pacakge.json需要重新安排。否则会包莫名其妙的错误。基本都是由于第三方包版本不兼容造成的。
vue-router需要做改动
import Vue from 'vue' import Router from 'vue-router'
改成:
import { createRouter, createWebHistory } from 'vue-router' routes = [] // 这里是路由 const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes }) export default router
VueResource 不要用了,使用Axios
import VueResource from 'vue-resource'
修改vue的初始化入口和方式
new Vue({ el: '#app', router, template: '<App/>', components: { App } })
改成形如这样的形式:
import { createApp } from 'vue' import App from './App.vue' import router from './router' import store from './vuex/store' createApp(App).use(store).use(router).mount('#app')
不再暴露全局的Vue对象。
参考:https://v3.vuejs.org/api/application-config.html#errorhandler
例如,Vue2.x
import vueConfig from './vue-config' const configs = { api: 'http://shopweb.sweetysoft.com/interface/' } Vue.use(vueConfig, configs)
Vue3.x
.... const app = createApp({}) app.config.globalProperties.api = 'http://shopweb.sweetysoft.com/interface/'
Vuex的使用发生了变化。不但声明要改(src/vuex/store.js) ,其他代码也要改(使用vuex的地方)
import Vue from 'vue' import Vuex from 'vuex' export default new Vuex.Store({ ... })
vue3:
import { createStore } from 'vuex' import { INCREASE } from '@/vuex/mutation_types' export default createStore({
使用的页面,都要有 store: useStore(), 的声明
修改http的使用方式
vue2.x
this.$http.get
vue3:
const axios = require('axios'); axios.get('/api/interface/blogs/all').then((response) => { response.data ...
检查router, 看是否有重名的内容
vue2中可以重名,vue3中不可以重名,否则报错:
[Vue Router warn]: No match found for location with path "/"解决办法: 不要让name 重名
const routes = [ { path: '/', name: 'Root', // 这里不可以重名 component: Index },