跟随时代的浪潮,把vue这个渐进式JavaScript框架,熟悉使用起来吧
目的: 在dom标签中, 直接插入内容
又叫: 声明式渲染/文本插值
语法: { { 表达式 }}
{
{ msg }}
{
{ obj.name }}
{
{ obj.age > 18 ? '成年' : '未成年' }}
目标: 给标签属性设置vue变量的值
vue指令, 实质上就是特殊的 html 标签属性, 特点: v- 开头
每个指令, 都有独立的作用
语法:v-bind:属性名="vue变量"
简写::属性名="vue变量"
我是a标签
目标: 给标签绑定事件
语法
v-on:事件名="要执行的==少量代码=="
v-on:事件名="methods中的函数"
v-on:事件名="methods中的函数(实参)"
简写: @事件名="methods中的函数"
你要买商品的数量: {
{count}}
目标: vue事件处理函数中, 拿到事件对象
语法:
无传参, 通过形参直接接收
传参, 通过$event指代事件对象传给事件处理函数
目的: 在事件后面.修饰符名 - 给事件带来更强大的功能
语法:
@事件名.修饰符="methods里函数"
.stop - 阻止事件冒泡
.prevent - 阻止默认行为
.once - 程序运行期间, 只触发一次事件处理函
.capture 添加事件侦听器时使用事件捕获模式
.self 只当事件在该元素本身(比如不是子元素)触发时触发回调
目标: 给键盘事件, 添加修饰符, 增强能力
语法:
@keyup.enter - 监测回车按键
@keyup.esc - 监测返回按键
更多修饰符
目标: 把value属性和vue数据变量, 双向绑定到一起
语法: v-model="vue数据变量"
双向数据绑定
数据变化 -> 视图自动同步
视图变化 -> 数据自动同步
用户名:
密码:
来自于:
爱好:
抽烟
喝酒
写代码
性别:
男
女
自我介绍
目标: 让v-model拥有更强大的功能
语法:
v-model.修饰符="vue数据变量"
.number 以parseFloat转成数字类型
.trim 去除首尾空白字符
.lazy 在change时触发而非inupt时
年龄:
人生格言:
自我介绍:
目的: 更新DOM对象的innerText/innerHTML
语法:
v-text="vue数据变量"
v-html="vue数据变量"
注意: 会覆盖插值表达式
目标: 控制标签的隐藏或出现
语法:
v-show="vue变量"
v-if="vue变量"
原理
v-show 用的display:none隐藏 (频繁切换使用)
v-if 直接从DOM树上移除
高级
v-else使用
v-show的盒子
v-if的盒子
未成年
成年
老年
作用:基于源数据多次渲染元素或模板块
语法
v-for="(值, 索引) in 目标结构"
v-for="值 in 目标结构"
目标结构:
可以遍历数组 / 对象 / 数字 / 字符串 (可遍历结构)
注意:
v-for的临时变量名不能用到v-for范围外
学生姓名
-
{
{ index }} - {
{ item }}
学生详细信息
-
{
{ obj.name }}
{
{ obj.sex }}
{
{ obj.hobby }}
老师信息
{
{ key }} -- {
{ value }}
序号
{
{ i }}
例子:
口诀:
-
{
{ val }}
这些方法会触发数组改变, v-for会监测到并更新页面
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
key属性 (key的值只能是唯一不重复的, 字符串或数值 ),id用id, 无id用索引
推荐:使用 v-for 的时候提供 key 属性,以获得性能提升。
说明:使用 key,VUE会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素
把类名保存在vue变量中赋予给标签
语法:
:class="{类名: 布尔值}"
动态class
给标签动态设置style的值(行内式)
语法
:style="{css属性: 值}"
动态style
目的:转换格式, 过滤器就是一个函数, 传入值返回处理后的值
过滤器只能用在, 插值表达式和v-bind表达式
语法:
Vue.filter("过滤器名", (值) => {return "返回处理后的值"})
filters: {过滤器名字: (值) => {return "返回处理后的值"}
例子:
全局定义字母都大写的过滤器
局部定义字符串翻转的过滤器
//main.js文件中 定义全局过滤器
// 全局过滤器 Vue.filter(过滤器的名字,callback)
Vue.filter('reverse', val => val.split("").reverse().join(""))
// 全局过滤器 传参
Vue.filter('reverse1', (val, str) => val.split("").reverse().join(str))
原来的 样子:{
{ msg }}
翻转后的样子:{
{ msg | reverse }}
鼠标悬停 提示文字
大写的样子{
{ msg | toUp }}
翻转后的样子:{
{ msg | reverse1("&") }}
语法:
过滤器传参: vue变量 | 过滤器(实参)
多个过滤器: vue变量 | 过滤器1 | 过滤器2
鼠标长停
作用:一个数据, 依赖另外一些数据计算而来的结果
语法:
computed: {
"计算属性名" () {
return "值"
}
}
{
{ num }}
使用场景:计算属性也是变量, 如果想要直接赋值, 需要使用完整写法
语法:
computed: {
"属性名": {
set(值){
},
get() {
return "值"
}
}
}
姓名:
作用:可以侦听data/computed属性值改变
语法:
watch: {
"被侦听的属性名" (newVal, oldVal){
}
}
作用:侦听复杂类型, 或者立即执行侦听函数
语法:
watch: {
"要侦听的属性名": { //变量名对应值改变这里自动触发
immediate: true, // 立即执行(网页打开handler执行一次)
deep: true, // 深度侦听复杂类型内变化
handler (newVal, oldVal) {
}
}
}