vue2.6+ant-design-vue1.7.3 升级 Vue3.0.11 + antd-vue2.1.2

起因:

最近要搭建一个项目,由于之前在极客时间买过唐金州老师的课,所以技术选型为vue+antdv,但是课程 中用的版本为vue2.x + antv1.x版本,所以想搞下升级 踩了一些坑,记录一下哈哈 网上搜出很多vue2升3,实际上升级的是vueCLI版本,

过程:

  1. 首先第一步肯定是npm uninstall ant-design-vue,然后npm install ant-design-vue@next(装最新版),并期待好用(笑),但是那是不可能的。。。

  2. 发现报了一个peer的错,具体的忘了大概是这样:“ant-design-vue@2.1.2 requires a peer of @vue/compiler-sfc@>=3.0.9 but none i”,经过搜索是antdv对应的应该是vue3版本,本机还是2.6.。。。所以 **npm uninstall vue,npm install vue@next

3.然后报vue/compiler-sfc相关的错误(具体记不清了见谅),经搜索:npm install @vue/compiler-sfc
,npm uninstall 接着又解决了如下依赖的版本问题(全uninstall后再npm install xxx@next安装最新版本,下图左面是更新后的 右面是原来的,这是最终的package文件,依赖的版本问题不是再这一步全解决的)
在这里插入图片描述

4.然后报main.js文件中 can’t find vue in vue,所以查看官方文档:
https://v3.vuejs.org/guide/migration/global-api.html#a-new-global-api-createapp
发现都要要更换为v3版本的写法
在这里插入图片描述
经更改:上旧下新(productionTip看v3文档中已经remove,忘了管他)

	旧main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import i18n from '@/locale/i18n'

import {
  Button,
  Layout,
  Icon,
  Drawer,
  Radio,
  Menu,
  Notification,
  Form,
  Input,
  Select,
  LocaleProvider,
  Dropdown,
  DatePicker
} from 'ant-design-vue'
import Authorized from './components/Authorized'
import Auth from './directives/auth'

Vue.config.productionTip = false
Vue.use(Button)
Vue.use(Layout)
Vue.use(Icon)
Vue.use(Drawer)
Vue.use(Radio)
Vue.use(Menu)
Vue.use(Notification)
Vue.use(Form)
Vue.use(Input)
Vue.use(Select)
Vue.use(LocaleProvider)
Vue.use(Dropdown)
Vue.use(DatePicker)

//函数式组件不用Vue.use
Vue.component('Authorized', Authorized)
Vue.use(Auth)

new Vue({
  router,
  store,
  i18n,
  render: (h) => h(App)
}).$mount('#app')


 	新main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import i18n from '@/locale/i18n'

import {
  Button,
  Layout,
  Icon,
  Drawer,
  Radio,
  Menu,
  Notification,
  Form,
  Input,
  Select,
  ConfigProvider,
  Dropdown,
  DatePicker,
  Checkbox
} from 'ant-design-vue'
import Authorized from './components/Authorized'
import Auth from './directives/auth'

const app = createApp(App)

app.config.productionTip = false
app
  .use(Button)
  .use(Layout)
  .use(Icon)
  .use(Drawer)
  .use(Radio)
  .use(Menu)
  .use(Notification)
  .use(Form)
  .use(Input)
  .use(Select)
  .use(ConfigProvider)
  .use(Dropdown)
  .use(DatePicker)
  .use(Checkbox)
  .use(Auth)
  .use(store)
  .use(router)
  .component('i18n', i18n)
  .component('Authorized', Authorized)
  .mount('#app')

5.npm run serve成功 但是初始化的时候,路由没有正常跳转到user/login,发现console里面有路由报错,然后找到了这个帖子:

https://blog.csdn.net/shishuai4206/article/details/114867257

升级vue-router版本:
在这里插入图片描述
然后通过此贴发现vue-router4的写法有了改变:
https://stackoverflow.com/questions/64039363/export-default-imported-as-vue-was-not-found-in-vue

vue-router官方文档:
https://next.router.vuejs.org/guide/migration/index.html

更改后(上旧下新)import中主要关注vue和vue-router:

旧router:
import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

const routes = [...
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})


export default router

新router
import { createRouter, createWebHistory } from 'vue-router'


const routes = [
]

const router = createRouter({
  history: createWebHistory(),
  base: process.env.BASE_URL,
  routes
})


export default router

期间解决了404 path的星号问题:

  /* 404page */
  {
    path: '/:catchAll(.*)',
    name: '404',
    hideInMenu: true,
    component: NotFound
  }

6.i18n报错。。。查文档。。。更新i18n版本和配置的写法

文档:https://vue-i18n.intlify.dev/guide/migration/breaking.html

上旧下新:

import Vue from 'vue'
import VueI18n from 'vue-i18n'

//第三方库解析URL
import queryString from 'query-string'
let enUS = require('./enUS')
let zhCN = require('./zhCN')
Vue.use(VueI18n)

const messages = {
  zhCN: zhCN,
  enUS: enUS
}
const i18n = new VueI18n({
  locale: queryString.parse(location.search).locale || 'zhCN',
  messages
})

export default i18n

import App from '@/App.vue'
import { createApp } from 'vue'
import { createI18n } from 'vue-i18n'

//第三方库解析URL
import queryString from 'query-string'
let enUS = require('./enUS')
let zhCN = require('./zhCN')

const messages = {
  zhCN: zhCN,
  enUS: enUS
}
const i18n = createI18n({
  locale: queryString.parse(location.search).locale || 'zhCN',
  messages
})
const app = createApp(App)
app.use(i18n)

export default i18n

至此能正常跳转路由了,剩下的就是一些组件的升级弃用报错了。。。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在Vue3中使用Ant Design Vue的样式,可以按照以下步骤进行操作: 1. 首先,在你的项目中安装Ant Design Vue组件库。你可以通过npm或者yarn进行安装,具体的安装命令可以在Ant Design Vue的官方文档中找到。 2. 在你的Vue组件中引入Ant Design Vue的样式文件。你可以在组件所在的Vue文件中使用import语句引入Ant Design Vue的样式文件。 例如,在你的Vue文件中添加以下代码: ```javascript <style lang="less" scoped> @import '~ant-design-vue/dist/antd.less'; </style> ``` 这将会导入Ant Design Vue的样式文件,并使它只在当前组件中生效。 3. 接下来,你可以根据需要自定义你的组件样式。你可以在style标签中使用普通的CSS语法来定义和修改组件的样式。 例如,你可以在style标签中添加以下代码来自定义一个按钮组件的样式: ```javascript <style lang="less" scoped> .my-button { border-radius: 10px; } </style> ``` 这将会给按钮组件添加一个圆角为10px的边框样式。 通过以上步骤,你就可以在Vue3中使用Ant Design Vue的样式了。记得按照官方文档中的指引导入需要的组件,并在模板中使用它们。如果你需要更多示例和帮助,可以参考官方文档或者Ant Design Vue的开源项目。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3+ant design vue+ts实战【ant-design-vue组件库引入】](https://blog.csdn.net/XSL_HR/article/details/127396384)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue3+ant-design-vue按需加载组件](https://blog.csdn.net/qq_42263570/article/details/130143934)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vue3+element-plus的后台管理系统模板 和 vue3+ant-design-vue的后台管理系统模板](https://blog.csdn.net/qq_61233877/article/details/131008600)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值