技术标签: 前端 Vue2升级Vue3 vue.js javascript
npm install gogocode-cli -g // 安装工具
gogocode -s ./src -t gogocode-plugin-vue -o ./src-out // 升级代码
gogocode -s package.json -t gogocode-plugin-vue -o package.json // 升级配置文件
npm install // 安装升级
1.可能存在转化停顿情况,需要排查转换卡住的文件并暂时删除从而转化成功;
2.代码转换将根据gogocode内置的风格进行转换,可能改变原有代码的代码风格;
3.同时因为gogocode仍处于迭代过程中,不同版本会造成升级的效果有差异;
语法转换 | 优点 | 缺陷 |
---|---|---|
v-model | 父组件绑定: v-model => v-model:value 子组件触发: input => update:value |
- |
生命周期 | beforeDestroy => beforeUnmount destroyed => unmounted |
- |
\$listener | v-bind="\$listener" => v-bind="\$attrs" | - |
事件API | 生成代理文件代理事件API并引入 Bus.\$emit('') => \$emit(Bus,'') |
子组件触发事件错误转换 this.\$emit('') => \$emit(this,'') |
emit选项 | 子组件触发事件写入选项中 | 事件API事件也写入选项中 |
异步组件 | () => import('') 转化 Vue.defineAsyncComponent(() => import('')) |
仍需手动引入defineAsyncComponent 并去掉Vue |
slot插槽 | slot="name" => v-slot:name | slot-scope未转换 |
// 创建Vue实例移动到头部
window.$vueApp = Vue.createApp(App)
window.$vueApp.use(router) // router在挂载之前,否则无法渲染
window.$vueApp.mount('#app')
window.$vueApp.use(store)
// 兼容就this.$http调用方法
// Vue2语法转化:Vue.use(v => { v.prototype.$http = axios })
window.$vueApp.config.globalProperties.$http = axios
window.$vueApp.use(less)
window.$vueApp.use(Antd)
window.$vueApp.use(Contextmenu)
window.$vueApp.component('draggable', draggable)
window.moment = moment
// 404页面路径调整
path: '*' => path: '/:catchAll(.*)'
// 与 2.x 不同,loader 函数不再接收 resolve 和 reject 参数
component: (resolve) => {
require.ensure([], () => {
return resolve(require('@views/login/Index.vue'))
}, 'login')
}
=>
component: () => import('@views/login/Index.vue'),
总结:
1.使用该工具能够减少一定的升级工作量,但是同时会产生其他一些未知的隐患,使用过程中需要对转换后的代码进行排查。目前针对大型项目还是优先手动升级
2.若不采用该工具进行一键转换,该工具有单独可取之处,比如:自动生成的事件API代理文件以及package.json变更等(该文件执行命令转换后仍有问题,将在vue3变更中进一步说明)
本题目来源于UC Berkeley 2021春季 CS188 Artificial Intelligence Project2上的内容。
MyBatis-Plus中解决表名或字段名不一致
1. 头文件和源文件到跳转: gf如果.h 和.cpp在同一目录下,直接在头文件上使用gf快捷键,如果不在,在.vimrc在中设置set path+=headPathheadPath为头文件目录2. 局部变量跳转: gd3. ctags生成数据库:参看 omnicppcomplete 提供的ctags生成语句:ctags -R --c+
今天在安装celery billboard版本 的时候,竟然报了这样的错误: “Versions of Python before 2.7 are not supported” 意思是python2.7之前的版本是都不支持的,因此我果断决定将python升级到python2.7。 升级的过程中还是遇到了一些问题,后来参考了这篇博文顺利地实现了升级: Centos 6.x 升级python到
对ArcMap 及Arcpro中的prj投影文件和gtf投影变换关系文件进行了路径说明和内容解析
1 概述本文档是在学习<>MFC过程中临时写的一篇文档,并没有真正的深入。本文档结合VC9单文档程序来写的。2 MFC六大技术对应<>的第三章。2.1 MFC程序的初始化过程2.1.1 _tWinMain_tWinMain(…){returnAfxWinMain(…);}从代码可以看到,该函数仅调用了AfxMain函数。_tWinMain是被C/C++运行期函数调用的,这里...
根据网上的Blog的解释: 当dispatchTouch()返回true,move、up手势能够被执行,当返回false时,只执行一次down事件。 而根据源码: if (mFirstTouchTarget == null) { // No touch targets so treat this as an ordinary view. ...
局域网(Local Area Network)是在一个局部的地理范围内(如一个学校、工厂和机关内),将各种计算机。外部设备和数据库等互相联接起来组成的计算机通信网,简称LAN。局域网共享如何设置呢?局域网共享设置步骤如下:1.更改不同的计算机名,设置相同的工作组!2.我的电脑右键-管理-计算机管理-本地用户和组-用户:更改管理员用户名3.手动设置IP,将ip设置在同一个网段,子网掩码和DNS解析相...
公众号内容拓展学习笔记(2022.1.20) 今日要点谷歌MaskGIT|双向Transformer,图像生成新范式! ️️Abstract: 谷歌MaskGIT|双向Transformer,图像生成新范式Paper: MaskGIT: Masked Generative Image TransformerTips: MaskGIT的核心思想,就是参考人的作画逻辑,先生成一部分token,再逐渐去完善。基于深度学习的多目标跟踪(MOT)技术一览
文章目录一。简介二。数据库准备三。项目搭建四。项目运行五。总结一。简介MyBatis-Plus(opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特性:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Serv
uGUI3.0 VC6.0的移植1 .移植的准备 1).到[http://embeddedlightning.com/ugui/]下载uGUI3.0。 2).安装一个VC6.0 3).EasyX图形工具,下载地址链接:[https://pan.baidu.com/s/1A-i3w0tKeR8iSpnb9wxWEg] 提取码:zwam 复制这段内容后打开百度网盘手机App,操作更方便哦...
ServletServlet是sun公司开发的动态web的一门技术sun在这些API中提供了一个接口叫做 Sevlet 如果你想开发一个Servlet程序,只需要完成两个小步骤:编写一个类,实现servlet接口把开发好的java类部署到web服务器中 把实现了Servlet接口的java程序叫做ServletHelloServlet...