Day 17-Vue3 技术_其它

news/2024/11/20 13:25:40/

1.全局API的转移

  • Vue 2.x 有许多全局 API 和配置。例如:注册全局组件、注册全局指令等。
//注册全局组件
Vue.component('MyButton', {data: () => ({count: 0}),template: '<button @click="count++">Clicked {{ count }} times.</button>'
})//注册全局指令
Vue.directive('focus', {inserted: el => el.focus()
}

注意:在Vue3.0中不在提供大写 Vue的构造函数,那就导致原来的API 不能调用了!配置也没办法写了!

  • Vue3.0中对这些API做出了调整(做了一个转移):将全局的API,即:Vue.xxx调整到应用实例 app 上! 
// 引入的不在是 Vue 构造函数了, 引入的是一个名为 createApp 的工厂函数 
// 工厂函数的特点就是无需通过 new 关键字去调用
import { createApp } from 'vue'
import App from './App.vue'// 创建应用实例对象--app, (类似vue2中的vm, 但app比vm更`轻` )
createApp(App).mount('#app')  
2.x 全局 API(Vue3.x 实例 API (app)备注
Vue.config.xxxxapp.config.xxxx调整全局配置
Vue.config.productionTip移除关闭Vue的生产提示
Vue.componentapp.component注册全局组件
Vue.directiveapp.directive注册全局指令
Vue.mixinapp.mixin注册全局混入
Vue.useapp.use注册中间件
Vue.prototypeapp.config.globalProperties

往Vue的原型对象中添加全局属性;

vm、vc都可以访问

vm(ViewModel) 与 vc(VueComponent)  的区别:

  1. vm和vc在某种程度上确实有很多相像之处,但又有着本质的区别,vc差不多像是vm的小弟,可以理解为类似生活中的一对双胞胎,一个稍微早出生几分钟的是大哥,也就是vm,另外一个就是小弟vc,虽然会很像,但是还是有区别的。
  2. 总体上来说,vm身上有的,vc基本也有。
  3. data函数、methods中的函数、watch中的函数、computed中的函数在vm和vc里边都有,生命周期也都是一样的,以及相同的数据代理模式。
  4. vc有的vm都有,vm可以通过el决定为哪一个容器服务,但是vc是没有 el 的!且 vc 的data要写成函数式,在vm中的data写成对象或者函数都行

 2.其它改变 

2.1- data选项应始终被声明为一个函数。Vue3.0中对data校验更加严格了! 

2.2 - 过度类名的更改! 

  • Vue2.x写法
/* v-enter:代表来, v-leave-to:代表离开 */
.v-enter,
.v-leave-to {opacity: 0;
}
.v-leave,
.v-enter-to {opacity: 1;
}
  • Vue3.x写法(更语义化了)
.v-enter-from,
.v-leave-to {opacity: 0;
}
​
.v-leave-from,
.v-enter-to {opacity: 1;
}

2.3-移除keyCode作为 v-on 的修饰符,同时也不再支持config.keyCodes(因为依赖按键编码的兼容性比较差)

  • keyCode
注意: vue3.0中已经不能通过按键编码去指定按键了
@keyup.13 -- 回车键提起事件
  • config.keyCodes 
<div><input placeholder="按下回车提示输入" @keyup.huiche="showIfon"/>
</div>
<script>
/* 同时Vue3.0 也不再支持config.keyCodes */
vue.config.productionTip = false  // 阻止vue在启动时生成生产提示 
vue.config.keyCodes.huiche = 13   // 定义一个别名按键
export default {methods: {showIfon(e) {console.log(e.target.value)}}};
</script>

2.4 - 移除v-on.native修饰符(修饰这个事件是原生的事件,并不是自定义事件)

Vue3.0 中绑定原生事件

  • 父组件中绑定事件
<my-componentv-on:close="handleComponentEvent"v-on:click="handleNativeClickEvent"
/>
  •  子组件中声明自定义事件
<script>export default {// 声明事件:将close会解析成自定义事件, 不数组中声明 click 就会默认解析为原生事件emits: ['close']}
</script>

2.5 - 移除过滤器(filter)

过滤器虽然这看起来很方便,但它需要一个自定义语法,打破大括号内表达式是 “只是 JavaScript” 的假设,这不仅有学习成本,而且有实现成本!建议用方法调用或计算属性去替换过滤器。

回顾Vue2.0 中的过滤器:提示: vue过滤器在vue3中已经被弃用

过滤器 filter 分为全局过滤器和局部(私有)过滤器; 局部过滤器的权重高于全局过滤器! 

 全局过滤器的定义方法: 使用Vue.filter方法

//定义过滤器
Vue.filter('过滤器名', function(形参){操作返回所过滤的值
})// 在页面中使用过滤器
{{ 要被处理的文本 | 过滤器名 }} 

eg: 看一下例子

<div id="app"><p> message的值为{{ message | capi }}</p>
</div><script src="../lib/vue/vue.js"></script>
<script>// vue2全局过滤器(必须写在Vue实列的上面)Vue.filter('capi', function(val) {const first = val.charAt(0).toUpperCase();const other = val.slice(1);return first + other + ' 调用了全局过滤器';})const vm = new Vue({el: '#app',data: {message: 'hello vue.js!'},// vue2局部过滤器filters: {capi(val) {const first = val.charAt(0).toUpperCase();const other = val.slice(1);return first + other + ' 调用了局部过滤器';}}}) 
</script>


http://www.ppmy.cn/news/8677.html

相关文章

我的2022总结

博客记录 踏石留印 抓铁有痕 使用csdn写博客&#xff0c;发帖子&#xff0c;帮助网友回答问题。都是实实在在满足了学习&#xff0c;交流的需求 这是我自己使用 CSDN 各种功能记录&#xff1a; 工作方面&#xff1a; 年初参与了公司的一个产品&#xff0c;主要负责串口服务…

力扣(LeetCode)1801. 积压订单中的订单总数(C++)

优先队列模拟 根据题目描述模拟。 如果该订单是一笔采购订单 buy &#xff0c;则可以查看积压订单中价格 最低 的销售订单 sell 。提示我们&#xff0c;建立小根堆&#xff0c;维护价格最低的销售订单sell 。 反之亦然&#xff0c;如果该订单是一笔销售订单 sell &#xff0c;…

扩展欧几里得定理求ax + by = c 的通解

扩展欧几里得定理求ax by c 的通解&#xff1a; 前置条件&#xff1a; ax by c , gcd(a, b) d 计算&#xff1a; ad\frac{a}{d}da​x bd\frac{b}{d}db​y cd\frac{c}{d}dc​ &#xff1b; 设ad\frac{a}{d}da​ a1 , bd\frac{b}{d}db​ b1 ; 原式变为 a1x b1y c…

CleanMyMac4.12.3全新版本Mac清理优化工具

CleanMyMac X是一款超好用的Mac清理优化工具&#xff0c;可以帮助用户删除系统垃圾、不需要的应用程序和恶意软件&#xff0c;并调整您的 Mac 以获得最大速度&#xff01; CleanMyMac X作为一款知名的系统清理软件&#xff0c;深受广大用户们的喜爱。它操作简洁&#xff0c;能够…

Java-String 类·下

Java-String 类下5. 字符, 字节与字符串5.1 字符与字符串5.2 字节与字符串5.3 小结6.字符串常见操作6.1 字符串比较6.2 字符串查找6.3 字符串替换6.4 字符串拆分6.5 字符串截取6.6 其他操作方法7. StringBuffer 和 StringBuilder补充大家好&#xff0c;我是晓星航。今天为大家带…

Docker+Nginx打包部署前后端分离项目

DockerNginx打包部署前后端分离项目1、问题描述2、项目打包2.1 前端项目打包2.1.1 修改vue.config.js文件2.1.2 router配置中添加base属性2.1.3 打包前端项目2.2 后端项目打包2.3 将前端和后端的打包文件上传到服务器3 nginx反向代理配置4、后端通过Dockerfile打包成docker镜像…

pip一键升级所有包

pip一键升级所有包 当你的电脑安装了太多的包又好久没升级了怎么办? 使用 pip install --upgrade 包名称一个一个升级太麻烦,下面介绍一种简单快捷的方式. 设置镜像源加快安装速度 由于 Python 服务器在国外,直接按照非常慢,还容易因为网络原因导致安装不成功,所以我们一般…

Qt音视频开发08-ffmpeg内核优化(极速打开/超时回调/实时响应)

一、前言 最初编写这套视频解析组件的时候&#xff0c;面对的场景是视频监控行业&#xff0c;对应设备都是网络监控摄像机&#xff0c;传过来的都是rtsp这种视频流&#xff0c;做过这一块的人都知道&#xff0c;打开某个视频流默认耗时比较大&#xff0c;基本上在2s左右&#…