《Vue3 基础知识》 使用 GoGoCod 升级到Vue3+ElementPlus 适配处理
此篇为 《Vue2+ElementUI 自动转 Vue3+ElementPlus(GoGoCode)》 的扩展!
Vue3 适配
Vue3 不兼容适配
Vue 3 迁移指南 在此,本章只讲述项目或组件库中遇到的问题;
-
Vue3CSS 深度选择器 有变化,有警告[@vue/compiler-sfc] the >>> and /deep/ combinators have been deprecated. Use :deep() instead./* Vue2 写法一 */ .a >>>.b /* Vue2 写法二 */ .a /deep/ .b/* Vue3 写法*/ .a :deep(.b) -
Vue props 多个类型,不要用 | ,用数组 []。否则报错
expected "indent", got "eos"expandLevel: {// type: Number | String,// vue2 可以,vue3 报错type: [Number, String], // vue2/vue3 正确default: 1, }
GoGoCode 自动升级适配
-
v-model:value报错,全局搜v-model:value并全局替换为v-model。其实Vue2和Vue3都不加:value,不知为何转换时加上了…
-
插槽报错
Duplicate slot names found发现重复的插槽名称 。仅两个 slot 在一块报错… -
HTML元素上的方法,例如@click=中有多个表达式仅换行没分号 ; ,这是语法错误。建议多个表达式就写在方法里
Webpack 转 Vite 适配
动态加载文件 Webpack 用 require.context, Vite 用 import.meta.glob
- src\params.js
- src\store\index.js
Webpack 用 require.context
const modulesList = require.context("./src/components", true, /\.vue$/);
const modules = modulesList.keys().reduce((obj, modulePath) => {// 文件名const moduleName = modulePath.replace(/^\.\/(.*)\/(.*)\.\w+$/, "$2");// 模块对象let moduleObj = modulesList(modulePath);// 放入模块obj[moduleName] = moduleObj.default;return obj;}, {});
Vite 用 import.meta.glob
// 注意加在 `eager: true` 是同步处理
const modulesList = import.meta.glob('./src/components/**/*.vue', { eager: true });
const modules = Object.keys(modulesList).reduce((obj, path) => {// 文件名const moduleName = path.replace(/(.*\/)*([^.]+).*/ig, "$2");// 放入模块obj[moduleName] = modulesList[path].default;return obj;
}, {})
const modulesFiles = import.meta.glob('./funcs/**/*.vue')let modules = {};
for (const path in modulesFiles) {modulesFiles[path]().then((mod) => {// 文件名const moduleName = path.replace(/(.*\/)*([^.]+).*/ig, "$2");// 放入模块modules[moduleName] = mod.default;})
}
Element Plus 适配
- el-button 警告
[props] [API] type.text is about to be deprecated in version 3.0.0, please use link instead.
解决: 官网中 el-button type=“text” 用于链接按钮已在 v3.0.0 废除
// 原
<el-button type="text">文字按钮</el-button>// 改为
<el-button type="primary" link>文字按钮</el-button>
- el-input 警告
Invalid prop: validation failed. Expected one of ["", "default", "small", "large"], got value "mini".
解决: 属性 size 在 ElementUI 和 ElementPlus 之间有差异
- Element UI 用
medium / small / mini - Element Plus 用
large / default / small
- el-tabs 方法 tab-click 返回值 ElementUI 和 ElementPlus 不一样
差异: ElementUI el-tabs 和 ElementPlus el-tabs

- el-input ElementUI 和 ElementPlus 有点差异,ElementPlus 多嵌套了一层
el-input__wrapper
解决: 改造 src\assets\scss\elements\input.scss,设置 padding:0 !important

- Element Icon 图标 警告
voided by marking the component withmarkRawor usingshallowRefinstead ofref.
解决: 以转换后一张图系统文件 src\components\mode-refreshing\head.vue 为例。代码第 10 行 ElIconSetting,放在 data() 中,做了深度响度,会有必要的开销。
// 修改前
import {Setting as ElIconSetting,DataAnalysis as ElIconDataAnalysis,SwitchButton as ElIconSwitchButton,
} from '@element-plus/icons-vue'
export default {data() {return {ElIconSetting,ElIconDataAnalysis,ElIconSwitchButton}},
}
提示加上 markRaw 不被代理 或 shallowRef 浅层响应。如代码 2,11-13 行
// 修改后
import { shallowRef } from 'vue'
import {Setting as ElIconSetting,DataAnalysis as ElIconDataAnalysis,SwitchButton as ElIconSwitchButton,
} from '@element-plus/icons-vue'
export default {data() {return {ElIconSetting: shallowRef(ElIconSetting),ElIconDataAnalysis: shallowRef(ElIconDataAnalysis),ElIconSwitchButton: shallowRef(ElIconSwitchButton),}},
}
相关文章:
《Vue3 基础知识》 使用 GoGoCod 升级到Vue3+ElementPlus 适配处理
此篇为 《Vue2ElementUI 自动转 Vue3ElementPlus(GoGoCode)》 的扩展! Vue3 适配 Vue3 不兼容适配 Vue 3 迁移指南 在此,本章只讲述项目或组件库中遇到的问题; Vue3 移除 o n , on, on&#…...
c#string方法对比
字符串的截取匹配操作在开发中非常常见,比如下面这个示例:我要匹配查找出来字符串数组中以“abc”开头的字符串并打印,我下面分别用了两种方式实现,代码如下: using System; namespace ConsoleApp23{ class Progra…...
Electron实战(一):环境搭建/Hello World/打包exe
文章目录 Electron安装Node.jsNodeJs推荐配置开始Electron项目创建index.js文件创建src目录运行打包生成exe生成安装包踩坑 下一篇Electron实战(二):将Node.js和UI能力(app/BrowserWindow/dialog)等注入html Electron Electron是一个使用JavaScript, HT…...
【C++】运算符重载详解
💗个人主页💗 ⭐个人专栏——C学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读 1. 为什么需要运算符重载 2. 运算符重载概念 3. 运算符重载示例 3.1 运算符重载 3.2 >或<运算符 4. 运算符重…...
评论区功能的简单实现思路
评论区功能是社交类项目中的核心组成部分,它涉及到前端的交云和后端的数据处理。基于你的技术栈(前端 Vue3,后端 Java),下面是一个具体的实现思路和数据库设计建议,并探索一下知乎的评论系统。 数据库设计…...
Java自救手册
目录 访问地址 访问地址,发现不通,无法访问: 网络不通一般有两种情况: Maven 拿Maven 拿到Maven以后 Maven单独的报红 Git git注意: 目录 访问地址 访问地址,发现不通,无法访问&…...
ASM-HEMT参数提取和模型验证测试
参数提取程序 直流I-V参数提取 DC模型参数提取流程对于ASM-GaN-HEMT模型可以总结在下图中。 以下步骤描述了该流程: 在模型中设置物理参数,如L(沟道长度)、W(沟道宽度)、NF(栅指数…...
浅压缩、深压缩、双引擎、计算机屏幕编码……何去何从?
专业视听领域尤其显示控制和坐席控制领域,最近几年最激动人心的技术,莫过于分布式了。 分布式从推出之日就备受关注:担心稳定性的,质疑同步性能的,怀疑画面质量的…… 诚然,我们在此前见多了带着马赛克的…...
2020年通信工程师初级专业实务真题
文章目录 一、第1章 现代通信网概述:信令网、同步网、管理网。第10章 通信业务:通信产业链,通信终端的分类,通信业务的定义及分类二、第3章 接入网:无线接入网的优点,接入网的接口(UNIÿ…...
Linux常见面试题汇总
Linux上如何查询某个端口是否被占用? 在Linux上,你可以使用以下几种方法来查询某个端口是否被占用: 使用netstat命令: netstat -tuln | grep <端口号>这个命令会列出当前正在运行的所有TCP和UDP端口,并过滤出指…...
C语言小游戏:贪吃蛇(游戏开发的环境和功能介绍)
❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载,请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主,代码兴国!❤❤❤ 生命不停,学习不止。铁汁们,我是大伟,欢迎来到大伟的游戏时间,…...
ElementUI Form:InputNumber 计数器
ElementUI安装与使用指南 InputNumber 计数器 点击下载learnelementuispringboot项目源码 效果图 el-radio.vue (InputNumber 计数器)页面效果图 项目里el-input-number.vue代码 <script> export default {name: el_input_number,data() {re…...
apk反编译修改教程系列---修改apk的默认颜色 布局颜色 手机电脑同步演示【十】
往期教程: apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 apk反编译修改教程系列-----修改apk中的图片 任意更换apk桌面图片【三】 apk反编译修改教程系列---简单…...
响应式开发如何设置断点,小屏幕界面该如何显示(有动图)
Hi,我是贝格前端工场,本期分享响应式开发,如何设置屏幕断点,pc页面布局到了移动端之后该如何布局的问题,微软也提供了设置屏幕断点的动图演示,非常直观。 一、什么是响应式开发,为何要设置屏幕断…...
Java基础 集合(二)List详解
目录 简介 数组与集合的区别如下: 介绍 AbstractList 和 AbstractSequentialList Vector 替代方案 Stack ArrayList LinkedList 前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界…...
UE4运用C++和框架开发坦克大战教程笔记(十七)(第51~54集)
UE4运用C和框架开发坦克大战教程笔记(十七)(第51~54集) 51. UI 框架介绍UE4 使用 UI 所面临的问题以及解决思路关于即将编写的 UI 框架的思维导图 52. 管理类与面板类53. 预加载与直接加载54. UI 首次进入界面 51. UI 框架介绍 U…...
GaussDB新体验,新零售选品升级注入新思路【华为云GaussDB:与数据库同行的日子】
选品思维:低频VS高频 一个的商超,假设有50个左右的品类,每个品类下有2到10个不等的商品。然而如此庞大的商品,并非所有都是高频消费品。 结合自身日常的消费习惯,对于高频和低频的区分并不难。一般大型家电、高端礼盒…...
C语言问题汇总
指针 #include <stdio.h>int main(void){int a[4] {1,2,3,4};int *p &a1;int *p1 a1;printf("%#x,%#x",p[-1],*p1);} 以上代码中存在错误。 int *p &a1; 错误1:取a数组的地址,然后1,即指针跳过int [4]大小的字节…...
QT 的 blockSignals(true) 的作用范围
在 Qt 中,blockSignals 是一个用于控件的方法,它用于阻止控件发出的信号。如果你在一个 MainWindow 对象上调用 blockSignals(true),它会阻止该 MainWindow 对象发出的所有信号。 这意味着,如果 MainWindow 上有任何子控件&#…...
【C++私房菜】类和对象万字详解
目录 一、类与对象 1、类是什么 二、类和对象的基础知识 2.1 定义类:成员变量和成员函数 2.2 创建对象:实例化一个类的对象。 2.3对象的生命周期:构造函数和析构函数。 a. 构造函数 b. 析构函数 c.小结: 三、成员变量和…...
北外滩餐饮新店突围战:揭秘AI大模型如何让搜索流量“精准上门”
如果你是北外滩一位新开业的餐厅老板,是否正面临这样的困境:店铺装修精美、菜品独具匠心,但门口罗雀,预期的客流迟迟不来?你试过在平台买推广、请达人探店,效果却如昙花一现,成本居高不下&#…...
微软老员工称部分“被更新损坏“的电脑实际早已注定失败
据微软资深工程师雷蒙德陈表示,微软的系统更新并非总是客户设备损坏的罪魁祸首。有时这些设备早已存在问题,只是客户在补丁星期二重启尝试导致系统无法启动之前没有注意到。更新背后的真相陈在文章中写道:"我在企业产品支持部门的同事们…...
暖心指南:儿童心理医院真实案例分享
行业痛点分析当前长沙地区儿童心理健康服务面临多重技术挑战。数据显示,2023年长沙市0-18岁青少年中,约有18.6%存在不同程度的情绪或行为问题,其中焦虑障碍、注意力缺陷多动障碍(ADHD)及学习困难占比超六成,…...
驱动模块的加载与卸载机制
昨天调板子又遇到个怪事:insmod加载驱动一切正常,但rmmod死活卸载不掉,内核日志里只留下一行“Device or resource busy”。查了半小时才发现,原来是有个用户态进程没关,一直占着驱动文件。这种问题在嵌入式开发里太常…...
告别官方解锁后,我们还能怎么玩?深挖华为荣耀解BL的三种野路子与工具链
华为荣耀设备解锁技术深度解析:原理、工具与风险规避 在移动设备定制化需求日益增长的今天,安卓系统的Bootloader解锁成为技术爱好者绕不开的话题。特别是对于华为和荣耀设备用户而言,自2018年官方关闭解锁服务后,这一过程变得更…...
Keil魔术棒设置详解:为什么你的printf在STM32上不工作?
Keil魔术棒设置详解:为什么你的printf在STM32上不工作? 调试STM32项目时,printf输出功能突然失效是许多开发者遇到的经典问题。明明代码逻辑正确,串口硬件也正常,为什么控制台就是一片寂静?这通常与Keil开…...
UE5 C++ 新手避坑指南:从零搭建汽车交互项目(含PhysXVehicles模块配置)
UE5 C 汽车交互开发实战:从模块配置到物理驾驶系统 第一次打开UE5的C项目时,那种既兴奋又忐忑的心情至今记忆犹新。作为一个从蓝图转向C开发的"半路出家"程序员,我清楚地记得在配置PhysXVehicles模块时踩过的那些坑——莫名其妙的编…...
AI辅助开发新体验:让快马智能模型为你的动漫应用增添推荐引擎
AI辅助开发新体验:让快马智能模型为你的动漫应用增添推荐引擎 最近在开发一个动漫推荐小应用时,尝试了用AI来增强功能体验,整个过程比想象中顺利很多。这个项目主要实现了四个核心功能:动漫展示、智能问答、简介生成和友好交互。…...
为什么很多实时图表方案会失败?
在监控系统、IoT设备平台、金融行情等场景中,“实时数据可视化”已经成为前端的核心能力之一。很多开发者在 React 项目中尝试实现实时图表时,往往会遇到卡顿、延迟甚至内存增长的问题。在 React 中实现实时图表,推荐使用 Highcharts…...
从“只会聊天“到“全能员工“:2026年你需要了解的AI黑话(收藏版:小白程序员必备)
AI不再是一个聊天框。它已经进化成你的数字化同事。而你需要学会和它相处的"行话"。 引言:你的AI同事已经到岗还记得2023年人们第一次用ChatGPT的时候吗?大家的反应是:"哇,AI能写诗和画画!"然后就…...
