首页 > 其他分享 >iview升级vue2 -> vue3

iview升级vue2 -> vue3

时间:2022-09-22 14:59:10浏览次数:57  
标签:vue3 升级 webpack vue2 使用 gogocode iview

基于gogocode, 需要如下步骤:
升级vue2 → 3
升级webpack 3 → 5
升级gulp 4 → 5
启用gogocode转换 
修改不兼容部分

升级webpack

vue3使用@vue/compiler-sfc 替换原有的 vue-template-compiler, 依赖webpack@4
所以直接将webpack相关升级到最新版本, 添加webpack-cli命令行工具
image
image

webpack配置主要改动就是将loaders改为use,
另外处理些不兼容情况, 如autoprefixer-loader改为使用postcss-loader/autoprefixer插件,
image

升级gulp

gulp3依赖低版本node, 所以也需要升级到@4版本

使用方式也发生了改变
gulp@4使用组合式api, 默认任务改为export.defaul来定义, 通过series/串行, parallel/并行, 组合起来
另外调整一些插件升级带来的配置变化, 如autoprefixer将使用package.json中的browserslist设置, 而不用单独设置
image
image

使用gogocode转换

npm install gogocode-cli -g
gogocode -t gogocode-plugin-vue -s ./examples -o ./examples
gogocode -t gogocode-plugin-vue -s ./src -o ./src

vue3不兼容问题

1.全局api改为实例api

Vue.use(iview)
Vue.property.$IVIEW = {}

// 改为
let app = createApp({})
app.use(iview)
app.config.globalProperties.$IVIEW = {}

window.$IVIEW = {} // 用于props, 也可挂在到provide
2. props不支持获取this
prop用到this使用inject, 所以可以通过使用inject()或者挂载到全局来获取

image

3.component使用is属性, 导致button卡死
因为iview将注册了Button组件,  component组件的is属性使用button时,  会渲染Button组件, 导致循环渲染
排查发现只有button组件循环加载, 将component改为div, 虽然eslint报错, 但是已经正常渲染.
image
image

目前button组件先不使用component:is来切换标签
image

4.slot使用函数方式来引用

vue3中, 移除了$scopedSlots, 统一使用$slots, 并且, 访问组件是通过$slots.default(), 这种函数方式去访问

iview中, 使用到$slots的方式, 是两种,
一种是判断$slots是否存在, 这种不需要更改
image

一种是获取此slot, 这种需要改为函数方式去获取
image

其他需要兼容的
如使用到Vue.property.$isServer来判断允许环境的, 因为目前没有在SSR中使用, 先将使用的地方都设为false
如使用到this.$createElement改为引用h函数

标签:vue3,升级,webpack,vue2,使用,gogocode,iview
From: https://www.cnblogs.com/LiangHuang/p/16719260.html

相关文章

  • vue3+ts+elementui中的手动上传至服务器
    <el-uploadclass="inline"ref="uploadImgRef":http-request="uploadImg":auto-upload="false":accept="'.jpg,.png'"><template#trigger><el-butto......
  • vue3中watch监听ref reactive响应式数据写法及注意点
    watch函数与vue2中watch配置一致两个小坑监视reactive定义的响应式数据时,oldvalue无法正确获取,强制开启了深度监视(deep配置失败)监视reactive定义的响应式数据中某个......
  • vue3 基础-动态组件 & 异步组件
    之前学习的都是父子组件传值的话题,一句话总结就是,常规数据通过属性传,dom结构通过插槽slot来传.而本篇则关注如何通过数据去控制组件的显示问题,如咱经常用到的......
  • Vue3 Echarts 省地图
    一、效果 二、echarts的安装npminstallecharts三、echarts各省份地图js导入以下是别人下载好的各省份的数据,可以直接下载使用,放在项目js文件夹下,在页面内引入。......
  • vue3源码学习11-编译two-AST内部转换
    在编译one中,template经过解析最终返回了一个AST节点对象,它是对模板的完整描述,但是还是不能用于生成代码,因为语义化还不够,没有包含编译优化相关的属性,vue内部还进行了进一步......
  • 【Vue项目实践】套用github 上的项目运行 electron + vite + vue3
    最终版gitclonehttps://gitee.com/mywink/vite-electron.gityarnyarnbuildyarndev从github上下载这个项目,运行,就得到了electron桌面版的项目,采用vue3来......
  • 2022年vue3 10大开源后台管理系统模板
    当你写项目的时候,如何快速的完成一个项目的搭建,这个时候就需要借助到一些模板了,前端开发的一个好处就是,各类UI模板都是相当的齐全的,直接拿来用就可以了,脱离了一行又一行垒......
  • 【Vue项目实践】创建一个 electron+vue3 的项目
    采用vite来创建一个vue项目,然后在项目中加入electron的配置参考链接:Vite+Electron快速构建一个VUE3桌面应用(一)创建项目1.安装viteyarncreatevite2.创......
  • vue +iview Select省市区联动
    因为需要保存的表里只有City_id一个字段,所以这边只保存"区"的值<Rowtype="flex"justify="start"class="code-row-bg"v-show="loginName=='admin'"><Cols......
  • Vue3:Teleport
    TeleportVue鼓励我们通过将UI和相关行为封装到组件中来构建UI。我们可以将它们嵌套在另一个内部,以构建一个组成应用程序UI的树。然而,有时组件模板的一部分逻辑上属......