Vue学习

devtools/2024/9/25 8:28:28/

概述

Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定组合的视图组件

特点

Vue的核心是一个响应的数据绑定系统,它通过把标签和数据绑定来简化用户的操作,Vue会在我们标签和数据任何一方进行改变时对双方进行数据的修改来保证数据的一致性。Vue还可以使用各种各样的简单的指令来完成原本使用dom非常复杂的操作。

基本操作

通过script进行添加Vue
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js"></script>
绑定

在新建Vue对象时可以根据html中的id或样式对指定的样式进行绑定。

    <div id="app"></div>
</body>
<script>new new Vue({el:"#app",data() {return {}}})
</script>
文本渲染

只要在{{}}中添加data中的数据名称就行了,{{}}中可以是对象或表达式但不能是语句。(例如for)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js"></script>
</head>
<body><div id="app"><p>{{message}}</p></div>
</body>
<script>new new Vue({el:"#app",data() {return {message:"123"}}})
</script>
</html>
指令
1. v-for 指令
  • 用法: v-for="(todo, i) in todos" :key="todo.id"
  • 功能: 用于在模板中循环遍历数组或对象。i 是索引,todo 是数组中的每一个元素。:key 是一个唯一的标识符,用于帮助 Vue 跟踪每一项,从而优化渲染性能。
2. v-model 指令
  • 用法: v-model="text"v-model="sum"
  • 功能: 用于在表单控件元素(如输入框)和 Vue 实例的数据之间进行双向绑定。当数据发生变化时,视图会更新,反之亦然。
3. v-bind 指令
  • 用法: v-bind:href="link":src="img":style="{width: w}"
  • 功能: 用于绑定 HTML 元素的属性。v-bind 可以用于绑定 hrefsrcstyle 等属性,使它们与 Vue 实例的数据动态绑定。可以使用简写 : 替代 v-bind:
4. v-html 指令
  • 用法: v-html="html"
  • 功能: 将 HTML 字符串插入到元素中,渲染成 HTML 元素。注意,这可能会引入 XSS 攻击的风险,因此要确保插入的 HTML 是安全的。
5. v-if 指令
  • 用法: v-if="flag"
  • 功能: 条件渲染。只有当 flagtrue 时,这个元素才会被渲染到 DOM 中。如果 flagfalse,这个元素及其子元素都不会被渲染。
6. v-show 指令
  • 用法: v-show="flag"
  • 功能: 根据条件显示或隐藏元素。即使 flagfalse,元素仍然会被渲染到 DOM 中,只是通过 CSS 的 display 属性进行隐藏。
7. v-else 指令
  • 用法: v-else
  • 功能: 用于与 v-if 配合使用,作为 v-if 的“else”分支。当 v-if 的条件为 false 时,这个元素会被渲染。
8. 事件监听指令 (v-on@)
  • 用法: v-on:click="addNumber"@click="number -= 1"@click="addtodo"
  • 功能: 用于监听 DOM 事件,并在事件触发时调用 Vue 实例中的方法。v-on 可以简写为 @
9. v-for 的简写
  • 用法: v-for="todo in todos" :key="todo.id"
  • 功能: v-for 的简写形式,适用于简单的遍历。省略了索引 i 的情况,仅遍历数组的每一项 todo
10. : 的简写
  • 用法: :src="img":style="{width: w}"
  • 功能: :v-bind: 的简写,用于绑定属性的值。

这些指令共同实现了 Vue.js 的数据绑定、条件渲染、循环渲染和事件处理等功能,使得 Vue.js 在构建动态、响应式用户界面时变得非常高效和简便。

总示例
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body><div id="app"><ul><p>{{message}}</p>                  <!-- 纯文本渲染 --><li v-for="(todo,i) in todos":key="todo.id">        <!-- 数组遍历,i为索引,可以简写改为v-for="todo in todos":key="todo.id" -->    <input type="checkbox">                         <!-- 当操作中对对应数据进行标记时,如果增加数据会发生标记不会变的情况, --><!-- 如果加上:key="每一个数据为一的键值"那么标记就会跟着数据位置的改变而改变 -->索引为:{{i}},数据为:{{todo.id}},{{todo.text}}</li></ul><input type="text" v-model="text">                      <!-- 对数据进行双向绑定,input数据改变可以影响vue中的数据,vue数据改变也可以影响input中的数据 --><button @click="addtodo">添加</button><p v-html="html"></p><a v-bind:href="link">{{message}}</a>       <!-- 属性绑定 --><img :src="img" :style="{width:w}" >        <!-- 可简写v-bind --><p>{{number+1}}</p>                         <!-- 可以写数据表达式或者变量但是不可以写语句(例如for) --><span>{{number}}</span><button v-on:click="addNumber">+1</button>  <!-- 使用Vue对按钮添加点击方法 --><button @click="number-=1">-1</button>      <!-- 可简写v-on: --><p v-if="flag">v-if:true</p>                <!-- 如果为false这个标签都不会被创建 --><p v-show="flag">v-show:true</p>            <!-- 无论如何标签都会被创建只会被使用css样式中的display进行隐藏 --><button @click="flag=!flag">改变flag</button><input v-model="sum">   <span v-if="sum>=5">你输入的数字>=5</span>  <!-- if else的使用 --><span v-else>你输入的数字<5</span><p v-text="allToDos"></p></div>
</body>
<script>new Vue({el: '#app',data() {return {message:"123",todos:[{id:1,text:"你好"},{id:2,text:"我不好"},{id:3,text:"真的吗?"}],nextid:4,text:"",html:"<p>123</p>",link:"http://www.baidu.com",img:"值日名单.png",w:'100px',number:1,flag:true,sum:1,}},methods: {addNumber(){this.number+=1;},addtodo(){this.todos.unshift({id: this.nextid,text:this.text});       //创建一个todos数组样式的数据并插入到数组的最前面this.nextid++;this.name="";}},computed:{allToDos(){let temp=this.todos.reduce((sum,item)=>sum+item.text,"");return temp;}}})
</script>
</html>
Vue对象中的属性

在 Vue 对象中,你可以定义以下几个主要部分:

1. data:
    • 用于存储组件的响应式数据。
    • 数据会被 Vue 观察,当数据变化时,视图会自动更新。
    • 例如:
data() {return {message: 'Hello, Vue!',count: 0};
}
2. methods:
    • 用于定义组件的方法,可以在模板中调用这些方法,或在组件内部进行逻辑处理。
    • 例如:
methods: {increment() {this.count++;},greet() {alert(this.message);}
}
3. computed:
    • 用于定义计算属性,它们是基于 Vue 实例的响应式数据的计算值。
    • 计算属性会缓存,只有在相关数据发生变化时才会重新计算。
    • 例如:
computed: {doubledCount() {return this.count * 2;}
}
4. watch:
    • 用于观察数据的变化,并在数据变化时执行相应的代码。
    • 可以用于数据变化时执行异步操作或其他副作用。
    • 例如:
<body><div id="app"><p>{{message}}</p><button @click="message--">-1</button><button @click="message++">+1</button></div>
</body>
<script>new new Vue({el:"#app",data() {return {message:0}},watch:{message(newValue,oldValue){alert(newValue+","+oldValue);}}})
</script>
5. props:
    • 用于定义组件可以接收的属性(即从父组件传递给子组件的数据)。
    • 例如:
props: {title: String,age: {type: Number,default: 18}
}
6. components:
    • 用于注册局部组件,使其在当前组件模板中可用。
    • 例如:
components: {ChildComponent
}
7. directives:
    • 用于注册自定义指令,扩展 HTML 元素的功能。
    • 例如:
directives: {myDirective: {bind(el, binding, vnode) {el.style.color = binding.value;}}
}
8. filters (在 Vue 3 中不再推荐使用,建议使用计算属性或方法):
    • 用于定义自定义的格式化函数,可以在模板中使用。
    • 例如:
filters: {uppercase(value) {return value.toUpperCase();}
}
9. mixins:
    • 用于在多个组件之间共享逻辑。定义了 mixin 对象后,可以将其混入到组件中。
    • 例如:
mixins: [myMixin]
10. 生命周期钩子:
    • 用于在 Vue 实例的不同生命周期阶段执行代码。
    • 常用钩子包括 created, mounted, updated, destroyed
    • 例如:
created() {console.log('Component is created');
},
mounted() {console.log('Component is mounted');
}

这些部分构成了 Vue 组件的基础,使其能够灵活地管理组件的状态、逻辑和模板。


http://www.ppmy.cn/devtools/105566.html

相关文章

域名证书,泛域名证书,sni

文章目录 前言一、证书1.全域名证书2.泛域名证书 二、域名证书的使用1、浏览器请求域名证书流程对全域名证书的请求流程对泛域名证书的请求流程ssl client-hello携带server name 报文 2、浏览器对证书的验证流程 三、域名证书和sni 前言 本文介绍了泛域名证书和全域名证书的区别…

Spring Boot 入门

1.1.1 什么是Spring Boot Spring Boot是一个开源的Java应用框架&#xff0c;由Pivotal团队提供&#xff0c;旨在简化Spring应用的初始搭建以及开发过程。‌ Spring Boot通过使用特定的配置方式&#xff0c;使得开发人员不再需要定义样板化的配置&#xff0c;从而在快速应用开发…

使用 Pandas 进行数据可视化:全面指南(六)

在数据分析的过程中,数据的可视化是一个至关重要的环节。通过图形展示数据,不仅能够帮助我们直观地理解数据,还能够揭示数据背后的规律和趋势。Pandas 作为 Python 生态系统中强大的数据分析库,不仅提供了数据处理和分析的功能,还内置了方便易用的可视化方法。本文将详细介…

k8s-pod 实战六 (如何在不同的部署环境中调整startupprobe的参数?)

在不同的部署环境中(如开发、测试、生产环境),你可能希望对 startupProbe 的参数进行调整,以适应不同的需求和条件。以下是几种常见的方法和实践: 方法一:使用 Kustomize 1. 目录结构 假设你的项目目录结构如下: my-app/ ├── base/ │ └── deployment.yaml …

C++单例模式

文章目录 设计模式单例模式饿汉模式懒汉模式 设计模式 设计模式&#xff08;Design Pattern&#xff09;是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的&#xff1a;为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模…

音视频解码 AVIO内存输入模式

原因 根据下文&#xff0c;我们已经学会了如何从本地文件读取数据&#xff0c;对音视频进行解码操作得到原始数据。 ffmpeg 音视频解码-CSDN博客 现在有一个需求&#xff0c;网络读取到的数据&#xff0c;也就是内存数据如何直接进行解码操作&#xff1f; 本文就是介绍解决…

Linux Kernel 6.12版预计将支持在崩溃后显示二维码 后续可以解码排查错误

7 月份时红帽工程师基于 systemd 255 版的全屏显示错误消息功能为 Linux Kernel 开发崩溃后显示二维码选项&#xff0c;这与微软在 Windows 10/11 蓝屏死机后显示二维码有异曲同工之妙。 不过 Linux 与 Windows 在崩溃时显示的二维码内容则有本质区别&#xff0c;因为 Window…

景联文科技:专业视频标注服务助力计算机视觉应用升级

视频标注是指对视频内容进行分析&#xff0c;并在视频中的特定对象、行为或事件上添加标签的过程。 视频标注包括&#xff1a; 1. 对象检测与跟踪 •对象检测&#xff1a;在每一帧中识别并定位特定的对象&#xff0c;如人、车、动物等。 •对象跟踪&#xff1a;跟踪这些对象…