动力节点老杜Vue视频笔记——第二章 Vue核心技术

基于mybatis-jsp-bootstrap-servlet-mysql-maven的Javaweb课程设计--刷题后台管理系统(考试题目管理系统) 第一章 需求分析 计算机技术没有应用到考试上时,组织一次考试只是要经过五步:人工出题,考生考试,人工阅卷,成绩评估和试卷分析,这是一项十分繁琐和容易出错的工作,教师的工作量非常的大。很明显,传统的考试方式已经不再适应现代考试的需要。如今,信息技术的迅猛发展,应用不断扩大,教学和虚拟大学等相继出现,这些应用正逐步深入到千家万户,人们迫切要求利用这些技术来进行在线考试,以减少教师的工作负担并提高工作效率,同时提高考试的质量,从而使考试更趋于公正,客观,更加激发学生的兴趣。例如,目前许多国际著名的计算机公司所举 阅读详情

动力节点Vue笔记第二章 Vue核心技术
20/100
发布文章
assdfgdfgjhtdo
未选择任何文件
new

2 Vue核心技术

2.1 事件处理

2.1.1 事件处理的核心语法

  1. 指令的语法格式:<标签 v-指令名:参数=”表达式”></标签>
  2. 事件绑定的语法格式:v-on:事件名。例如鼠标单击事件的绑定使用v-on:click。
  3. 绑定的回调函数需要在Vue实例中使用methods进行注册。methods可以配置多个回调函数,采用逗号隔开。
  4. 绑定回调函数时,如果回调函数没有参数,( )可以省略。
  5. 每一个回调函数都可以接收一个事件对象event。
  6. 如果回调函数有参数,并且还需要获取事件对象,可以使用$event进行占位。
  7. v-on:click可以简写为@click。简写的语法格式:@事件名
  8. 回调函数中的this是vm。如果回调函数是箭头函数的话,this是window对象,因为箭头函数没有自己的this,它的this是继承过来的,默认这个this是箭头函数所在的宿主对象。这个宿主对象其实就是它的父级作用域。而对象又不能构成单独的作用域,所以这个父级作用域是全局作用域,也就是window。
  9. 回调函数并没有在vm对象上,为什么通过vm可以直接调用函数呢?尝试手写Vue框架。
  10. 可以在函数中改变data中的数据,例如:this.counter++,这样会联动页面上产生动态效果。

2.1.2 事件修饰符

.stop - 调用 event.stopPropagation()。

*<div** @click="san"**>**  
3.     **<div** @click.stop="er"**>**  
4.         **<button** @click="yi"**>**{
   
   {
   
   name}}**</button>**  
5.     **</div>**  
6. **</div>**  

.prevent - 调用 event.preventDefault()。

 **<a** href="http://www.bjpowernode.com" @click.prevent="yi"**>**  
3. {
   
   {
   
   name}}  
4. **</a>** 

.capture - 添加事件侦听器时使用 capture 模式。

**<div** @click.capture="san"**>**  
3.     **<div** @click.capture="er"**>**  
4.         **<button** @click="yi"**>**{
   
   {
   
   name}}**</button>**  
5.     **</div>**  
6. **</div>**

注意:只有添加了capture修饰符的元素才会采用捕获模式。(或者说带有capture修饰符的优先触发)

.self - 只当事件是从侦听器绑定的元素本身触发时才触发回调。

 **<div** @click="san"**>**  
 1.     **<div** @click.self="er"**>**  
 2.         **<button** @click="yi"**>**{
   
   {
   
   name}}**</button>**  
 3.     **</div>**  
 4. **</div>**  

.once - 只触发一次回调。
5.

**<button** @click.once="yi"**>**  
 6.     {
   
   {
   
   name}}  
 7. **</button>** 

.passive - (2.3.0) 以 { passive: true } 模式添加侦听器
1.无需等待,直接继续(立即)执行事件默认行为。(对wheel事件有效果)
2. .passive 和 .prevent 修饰符不能共存。

2.1.3 按键修饰符

常用的按键修饰符包括:
.enter
.tab (只能配合keydown使用)
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right

可以直接将 KeyboardEvent.key 暴露的任意有效按键名转换为 kebab-case 来作为修饰符。

<input type=”text” @keyup.page-down=”getInfo”>

可以通过全局 config.keyCodes 对象自定义按键修饰符别名

Vue.config.keyCodes.huiche = 13

2.1.4 系统修饰键

系统修饰键包括4个
.ctrl
.alt
.shift
.meta
系统修饰键在使用时应注意:

  1. 只有当系统修饰键和其他键组合使用,并且组合键释放时,才会触发keyup事件。

  2. 只要按下系统修饰键,就会触发keydown事件。

小技巧 <input type=”text” @keyup.ctrl.c=”getInfo”/>

2.2 计算属性

  1. 案例:用户输入信息,然后翻转用户输入的字符串。
  2. 插值语法可以实现,但是有三个问题
    1. 代码可读性差
    2. 代码不可复用
    3. 代码难以维护
  3. 可以使用methods方式实现,存在1个问题
    1. 效率低,即使数据没有发生变化,但每一次仍然会调用method。
  4. 使用计算属性可以解决以上问题。
  5. 什么是计算属性?

data中的是属性。用data的属性经过计算得出的全新的属性就是计算属性。

  1. 计算属性的使用
**<div** id="app"**>**  
3.     **<h1>**{
   
   {
   
   msg}}**</h1>**  
4.     输入的信息:**<input** type="text" v-model="info"**><br>**  
5.     反转的信息:{
   
   {
   
   reversedInfo}} **<br>**  
6.     反转的信息:{
   
   {
   
   reversedInfo}} **<br>**  
7.     反转的信息:{
   
   {
   
   reversedInfo}} **<br>**  
8.     反转的信息:{
   
   {
   
   reversedInfo}} **<br>**  
9. **</div>**  
10. **<script>**  
11.     const vm = new Vue({
   
     
12.         el : '#app',  
13.         data : {
   
     
14.             msg : '计算属性-反转字符串案例',  
15.             info : ''  
16.         },  
17.         computed : {
   
     
18.             reversedInfo:{
   
     
19.                 get(){
   
     
20.                     console.log('getter被调用了');  
21.                     return this.info.split('').reverse().join('')  
22.                 },  
23.                 set(val){
   
     
24.                     //this.reversedInfo = val // 不能这样做,这样会导致无限递归  
25.                     this.info = val.split('').reverse().join('')  
26.                 }  
27.             }  
28.         }  
29.     })  
30. **</script>**
  1. 计算属性需要使用:computed
  2. 计算属性通过vm. d a t a 是无法访问的。计算属性不能通过 v m . data 是无法访问的。计算属性不能通过vm. data是无法访问的。计算属性不能通过vm.data访问。
  3. 计算属性的getter/setter方法中的this是vm。
  4. 计算属性的getter方法的调用时机:
    1. 第一个时机:初次访问该属性。
    2. 第二个时机:计算属性所依赖的数据发生变化时。
  5. 计算属性的setter方法的调用时机:
    1. 当计算属性被修改时。(在setter方法中通常是修改属性,因为只有当属性值变化时,计算属性的值就会联动更新。注意:计算属性的值被修改并不会联动更新属性的值。)
  6. 计算属性没有真正的值,每一次都是依赖data属性计算出来的。
  7. 计算属性的getter和setter方法不能使用箭头函数,因为箭头函数的this不是vm。而是window。
  8. 计算属性的简写形式

只考虑读取,不考虑修改时,可以启用计算属性的简写形式。

computed : {
   
     
2.     reversedInfo(){
   
     
3.         console.log('getter被调用了');  
4.         **return** **this**.info.split('').reverse().join('')  
5.     }  
6. }  

2.3 侦听属性的变化

  1. 侦听属性的变化其实就是监视某个属性的变化。当被监视的属性一旦发生改变时,执行某段代码。
  2. 监视属性变化时需要使用watch配置项。

使用watch实现:比较数字大小的案例

**<div** id="app"**>**  
2.     **<h1>**{
   
   {
   
   msg}}**</h1>**  
3.     数值1:**<input** type="text" v-model="number1"**><br>**  
4.     数值2:**<input** type="text" v-model="number2"**><br>**  
5.     比较大小:{
   
   {
   
   compareResult}}  
6. **</div>**  
7. **<script>**  
8.     const vm = new Vue({
   
     
9.         el : '#app',  
10.         data : {
   
     
11.             msg : '侦听属性的变化',  
12.             number1 : 1,  
13.             number2 : 1,  
14.             compareResult : ''  
15.         },  
16.         watch : {
   
     
17.             number1 : {
   
     
18.                 immediate : true,  
19.                 handler(newVal, oldVal){
   
     
20.                     let result = newVal - this.number2  
21.                     if(result **>** 0){
   
     
22.                         this.compareResult = newVal + '**>**' + this.number2  
23.                     }else if(result **<** **0**){
   
     
24.                         this.compareResult = newVal + '**<**' + this.number2  
25.                     }else{
   
     
26.                         this.compareResult = newVal + '=' + this.number2  
27.                     }  
28.                 }  
29.             },  
30.             number2 : {
   
     
31.                 immediate : true,  
32.                 handler(newVal, oldVal){
   
     
33.                     let result = this.number1 - newVal  
34.                     if(result **>** 0){
   
     
35.                         this.compareResult = this.number1 + '**>**' + newVal  
36.                     }else if(result **<** **0**){
   
     
37.                         this.compareResult = this.number1 + '**<**' + newVal  
38.                     }else{
   
     
39.                         this.compareResult = this.number1 + '=' + newVal  
40.                     }  
41.                 }  
42.             }  
43.         }  
44.     })  
45. **</script>** 

运行效果:


  1. 如何深度监视:
    1. 监视多级结构中某个属性的变化,写法是:’a.b.c’ : {}。注意单引号哦。
    2. 监视多级结构中所有属性的变化,可以通过添加深度监视来完成:deep : true
  2. 如何后期添加监视:
    1. 调用API:vm.$watch(‘number1’, {})
  3. watch的简写:
    1. 简写的前提:当不需要配置immediate和deep时,可以简写。
    2. 如何简写?
      1. watch:{ number1(newVal,oldVal){}, number2(newVal, oldVal){} }
    3. 后期添加的监视如何简写?
      1. vm.$watch(‘number1’, function(newVal, oldVal){})
  4. computed和watch如何选择?
    1. 以上比较大小的案例可以用computed完成,并且比watch还要简单。所以要遵守一个原则:computed和watch都能够完成的,优先选择computed。
    2. 如果要开启异步任务,只能选择watch。因为computed依靠return。watch不需要依赖return。
  5. 关于函数的写法,写普通函数还是箭头函数?
    1. 不管写普通函数还是箭头函数,目标是一致的,都是为了让this和vm相等。
    2. 所有Vue管理的函数,建议写成普通函数。
    3. 所有不属于Vue管理的函数,例如setTimeout的回调函数、Promise的回调函数、AJAX的回调函数,建议使用箭头函数。

2.4 class与style绑定

数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式。因为 class 和 style 都是 attribute,我们可以和其他 attribute 一样使用 v-bind 将它们和动态的字符串绑定。但是,在处理比较复杂的绑定时,通过拼接生成字符串是麻烦且易出错的。因此,Vue 专门为 class 和 style 的 v-bind 用法提供了特殊的功能增强。除了字符串外,表达式的值也可以是对象或数组。

2.4.1 class绑定

2.4.1.1 绑定字符串

适用于样式的名字不确定,需要动态指定。

. <!DOCTYPE html**>**  
2. **<html** lang="en"**>**  
3. **<head>**  
4.     **<meta** charset="UTF-8"**>**  
5.     **<title>**class绑定字符串形式**</title>**  
6.     **<script** src="../js/vue.js"**></script>**  
7.     **<style>**  
8.         .static{
   
     
9.             border: 1px solid black;  
10.             background-color: beige;  
11.         }  
12.         .big{
   
     
13.             width: 200px;  
14.             height: 200px;  
15.         }  
16.         .small{
   
     
17.             width: 100px;  
18.             height: 100px;  
19.         }  
20.     **</style>**  
21. **</head>**  
22. **<body>**  
23.     **<div** id="app"**>**  
24.         **<h1>**{
   
   {
   
   msg}}**</h1>**  
25.         **<div** class="static" :class="c1"**></div>**  
26.     **</div>**  
27.     **<script>**  
28.         const vm = new Vue({
   
     
29.             el : '#app',  
30.             data : {
   
     
31.                 msg : 'class绑定字符串形式',  
32.                 c1 : 'small'  
33.             }  
34.         })  
35.     **</script>**  
36. **</body>**  
37. **</html>** 

运行效果:

使用vue开发者工具修改c1的small为big:

通过测试可以看到样式完成了动态的切换。

2.4.1.2 绑定数组

适用于绑定的样式名字不确定,并且个数也不确定。

 <!DOCTYPE html**>**  
2. **<html** lang="en"
动力节点老杜Vue框架教程【一】Vue程序初体验 Vue.js是一个渐进式 MVVM 框架,目前被广泛使用,也成为前端中最火爆的框架Vue可以按照实际需要逐步进阶使用更多特性,也是前端的必备技能动力节点老杜的Vue2+3全家桶教程已经上线咯!学习地址:https://www.bilibili.com/video/BV17h41137i4/视频将从Vue2开始讲解,一步一个案例,知识点由浅入深,然后很自然的过度到Vue3版本。每一个Vue的知识点讲解的非常通透,不但举例告诉你怎么用,还会告诉你底层实现原理。 阅读详情

相关推荐

动力节点老杜Vue3视频笔记——Vue程序初体验

可以先不去了解Vue框架的发展历史、Vue框架有什么特点、Vue是谁开发的,对我们编写Vue程序起不到太大的作用,更何况现在说了一些特点之后,我们也没有办法彻底理解它,因此我们可以先学会用,使用一段时间之后,回头来熟悉一下Vue框架以及它的特点。以上程序执行原理:Vue编译器对template进行编译,遇到胡子{{}}时从data中取数据,然后将取到的数据插到对应的位置。第二:虽然是直接写到HTML代码当中的,但以上程序中第3~6行已经不是HTML代码了,它是具有Vue语法特色的模板语句。

A_coding的博客 457

2023最新版老杜Vue2+3实战教程(二)Vue核心技术

函数式:// element 是真实dom对象(可以通过 element instanceof HTMLElement 判断)// binding 是绑定的对象函数调用时机:第一时机:模板初次解析时(元素与指令初次绑定)。第二时机:模板重新解析时。对象式:可以使用对象式完成更加细致的功能。// 元素与指令初次绑定时自动调用。// 元素已经被插入页面后自动调用。// 模板重新解析时被自动调用。自定义指令的函数中的this是window。

qaswedpl的博客 844

动力节点|老杜Vue2+3全家桶教程,快速通关前端主流框架

而Vue3是Vue.js框架的最新版本,Vue3相对于Vue2来说,性能有了大幅度的提升,同时拥有更好的 TypeScript 支持和更好的开发体验。•024.Vue数据代理时对属性名的要求.avi.baiduyun.uploading。•026.手写Vue框架数据代理的实现.avi.baiduyun.uploading。•022.数据代理机制的实现.avi.baiduyun.uploading。•032.Vue的事件绑定.avi.baiduyun.uploading。

qaswedpl的博客 291

动力节点老杜Vue框架教程【三】Vue组件化

传统方式开发的应用一个网页通常包括三部分:结构(HTML)、样式(CSS)、交互(JavaScript)关系纵横交织,复杂,牵一发动全身,不利于维护。代码虽然复用,但复用率不高。组件化方式开发的应用每一个组件都有独立的js,独立的css,这些独立的js和css只供当前组件使用,不存在纵横交错。更加便于维护。代码复用性增强。组件不仅让js css复用了,HTML代码片段也复用了(因为要使用组件直接引入组件即可)。什么是组件?组件:实现应用中局部功能的代码和资源的集合。

2301_76637473的博客 589

动力节点老杜Vue课程笔记——三、Vue组件化

click、keydown、keyup,这些事件都是内置事件。Vue也支持给组件添加自定义事件。包括两种方式:第一种方式:直接在组件标签上绑定事件第二种方式:通过代码来给组件绑定事件所有从父向子传递函数的位置,都可以修改为自定义事件方式。主要改造子向父传数据的功能。

Java_Leo12的博客 562

动力节点老杜Vue笔记第三章 Vue组件化

click、keydown、keyup,这些事件都是内置事件。Vue也支持给组件添加自定义事件。包括两种方式:第一种方式:直接在组件标签上绑定事件第二种方式:通过代码来给组件绑定事件所有从父向子传递函数的位置,都可以修改为自定义事件方式。主要改造子向父传数据的功能。

weixin_54585403的博客 418

动力节点|Vue3实用教程,一套搞定前端框架Vue2+3

•024.Vue数据代理时对属性名的要求.avi.baiduyun.uploading。•026.手写Vue框架数据代理的实现.avi.baiduyun.uploading。•034.关于事件回调函数中的this.avi.baiduyun.uploading。•028.Vue框架源代码解读.avi.baiduyun.uploading。•022.数据代理机制的实现.avi.baiduyun.uploading。•032.Vue的事件绑定.avi.baiduyun.uploading。

java_yydsyyds的博客 459

2023最新版老杜Vue2+3实战教程(三)Vue组件化

传统方式开发的应用一个网页通常包括三部分:结构(HTML)、样式(CSS)、交互(JavaScript)关系纵横交织,复杂,牵一发动全身,不利于维护。代码虽然复用,但复用率不高。组件化方式开发的应用每一个组件都有独立的js,独立的css,这些独立的js和css只供当前组件使用,不存在纵横交错。更加便于维护。代码复用性增强。组件不仅让js css复用了,HTML代码片段也复用了(因为要使用组件直接引入组件即可)。什么是组件?组件:实现应用中局部功能的代码和资源的集合。

qaswedpl的博客 704

动力节点老杜Vue框架教程【五】Vuex

vuex是实现数据集中式状态管理的插件。数据由vuex统一管理。其它组件都去使用vuex中的数据。只要有其中一个组件去修改了这个共享的数据,其它组件会同步更新。一定要注意:全局事件总线和vuex插件的区别:全局事件总线关注点:组件和组件之间数据如何传递,一个绑定on,一个触发on,一个触发on,一个触发emit。数据实际上还是在局部的组件当中,并没有真正的让数据共享。只是数据传来传去。vuex插件的关注点:共享数据本身就在vuex上。其中任何一个组件去操作这个数据,其它组件都会同步更新。

2301_76637473的博客 240

2023最新版老杜Vue2+3实战教程(一)Vue程序初体验

学习の地止:https://www.bilibili.com/video/BV17h41137i4。

qaswedpl的博客 297

汽车LED驱动芯片TPS92682-Q1 SPI接口配置与调试实战指南

SPI(串行外设接口)作为一种高速、全双工的同步串行通信总线,广泛应用于微控制器与外围设备之间的数据交换。其工作原理基于主从架构,通过时钟、数据线和片选信号实现设备间的精准时序控制。在汽车电子和工业控制领域,SPI因其简单高效、易于扩展的特性,成为配置复杂电源管理芯片、传感器和存储器的关键技术。通过SPI接口,工程师能够动态调整设备参数、实时读取状态信息,并实现复杂的故障诊断与保护策略,极大地提升了系统的灵活性与可靠性。本文以汽车级双通道LED恒流驱动器TPS92682-Q1为例,深入解析如何通过SPI接口

weixin_29185493的博客 287

2025年北京市职工职业技能大赛第六届信息通信行业网络安全技能大赛复赛CTF部分WP-哥斯拉流量分析

题目没有任何提示,附件gzl.pcap解题哥斯拉流量300多KB包很多,没啥经验只能挨个看回来之后又狠狠得撸了一把哥斯拉流量分析我这里用的是哥斯拉4.0.1测试链接这里发了两个包,我们进行分析。

深耕网络安全领域,聚焦护网行动(HW)、渗透测试、等级保护(等保)、CTF 竞赛四大核心方向,提供技术干货、实战经验与行业洞察。 1810

SAP面试全过程(已拿offer)

周五打电话给我说过了SAP第一轮面试,第二轮要在下周四北京,这几天终于体会到了什么叫做重压下的感觉,越复习越虚,看别人的面经都感觉卧槽这问题也巨难了吧...连去北京可以见妹子这种事情都感觉一点心情都没有。面前准备固然是要有的,但关键是平时就要有料,多想想自己做的项目。当作一个给自己的提醒吧!

cloudray8580的专栏 4万+

嵌入式存储入门:Emmc控制器与设备工作原理全解析(附Synopsys/Arasan架构图)

本文深入解析了嵌入式系统中Emmc控制器与设备的工作原理,重点剖析了其作为CPU与存储设备桥梁的核心架构。通过对比Synopsys和Arasan两家主流IP厂商的控制器设计,详细阐述了DMA引擎与FIFO缓冲模块如何协同工作以提升数据传输效率,并提供了从硬件PCB布局到驱动调试的实战指南,帮助硬件工程师与开发者优化系统性能。

weixin_29248653的博客 145

CH340以及CH系列USB转串口驱动下载

在之前使用USB转串口时,很多时候大家可能会不知道去哪下载驱动,然后百度随便下载一个,但往往鱼龙混杂且版本不一,所以今天特意整理一下CH340驱动以及CH系列的官方驱动下载地址,方便大家进行下载也方便自己后期查找,所有链接皆指向官方下载链接,每次下载都可获取官方当前最新驱动。 CH340/CH341 Windows驱动下载链接:CH341SER.EXE下载链接 Linux驱动下载链接:CH341SER_LINUX.ZIP下载链接 Andr...

OIDCAT的博客 4万+

100天精通Python(爬虫篇)——第122天:基于selenium接管已启动的浏览器(反反爬策略)

100天精通Python(爬虫篇)——第122天:基于selenium接管已启动的浏览器(反反爬策略)

努力让自己发光,对的人才能迎着光而来 13万+

大模型——Dify:知识库与外部知识库

摘要 Dify的知识库功能为开发者提供了动态知识管理解决方案,超越了大模型静态预训练数据的限制。知识库支持多种文档格式(如txt、pdf、docx等),通过文档分段、索引设置和检索优化机制提升LLM的响应准确性。系统提供高质量和经济两种索引模式,前者采用向量化检索技术,后者使用关键词匹配以降低成本。知识库支持元数据管理,包括自动生成的内置元数据和用户自定义元数据,便于内容分类和检索。对于高级需求,Dify还支持连接外部知识库,通过API实现跨平台数据共享和检索优化,满足企业级知识管理需求。

726

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: 动力节点老杜Vue3视频笔记——Vue程序初体验
下一篇: 动力节点杜老师Vue课程笔记第三章Vue组件化
老杜铁杆粉丝儿
博客等级 码龄5年 28粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值