本质:一种架构模式(编写代码的方式)。
理解:不需要操作dom的代码编写方式。
特点:(需要记忆)
本质:一个.vue文件,就是一个组件
特点:由三部分组成
作用: 给标签设置内容
语法:{ { 表达式 } }
三个特点:
作用:给标签设置属性
语法:v-bind:属性名="表达式"
推荐::属性名="表达式"
说明:任意的属性想实现js环境就可以通过v-bind:属性=’js环境表达式‘
作用:绑定事件
语法:v-on:事件名="..."
推荐:@事件名="..."
// 函数通过形参获取
123 < /button>
// 通过$event传入事件对象
123
作用:给事件增强功能
语法:@鼠标事件.修饰符="..."
种类(常用):
.prevent
:阻止默认行为.stop
:阻止事件冒泡作用:给事件增强功能
语法:@键盘事件.修饰符="..."
种类:
.enter
:监听回车按键触发.esc
: 监听Esc按键触发作用:控制标签的显示和隐藏
语法:v-if="布尔值"
。 布尔为true
,标签显示。 为false
,标签不显示
区别:
v-show
:通过样式display:none
控制隐藏v-if
:通过创建或销毁, 控制显示与隐藏场景:
v-show
,节省性能v-if
语法:
v-if="布尔值"
v-else-if="布尔值"
v-else
注意:
v-if
、 v-else-if
、 v-else
三者之间,不能放入其它标签作用: 数据双向绑定
语法: v-model="变量名"
双向绑定:
场景:
语法:v-model.修饰符="变量名"
种类:
作用:创建多个标签
口诀:需要生成多个谁,就写在谁身上
语法:
v-for="item in 数组" :key="数据.id"
v-for="(item, index) in 数组" :key="数据.id"
作用: 提高dom更新效率
口诀: 有id用id,没id用唯一,没唯一用索引
作用:给标签添加样式
语法::class="{类名:布尔值}"
为ture
添加类名, 为false
去除类名
语法: style="{css属性名: 值, 小驼峰属性名:值, '连字符属性名': 属性值}"
作用: 根据其它的数据, 计算得来一个新的值
优势:
注意:计算属性名称,不能和data数据 methods方法 其它的计算属性成名
语法:
computed: {
xxx(){
return ... // 必须有返回值
}
}
Vue 单项数据流:
本质::value和@input,两个指令二合一
作用:1获取dom; 2获取组件实例对象
步骤:
1.绑定ref
属性: <标签名 ref="xxx">标签名>
2.通过$refs.xxx
获取: this.$refs.xxx
作用:等dom更新结束, 再执行某些代码
语法:
js
this.$nextTick(() => {
// dom更新后, 回调函数自动执行
})
1
2
3
4
5
作用:在同一个位置,动态切换,显示不同的组件
步骤:
场景:当组件内, 有不确定的标签时, 使用插槽.
种类3种:
场景: 组件内, 只有一处有不确定的标签时, 使用匿名插槽
步骤:
语法:
子组件.vue
vue
// 1. 子组件内, 使用slot标签占位
默认值(如果父组件不传任何内容,默认值将显示)
1
2
父组件.vue
vue
// 2. 父组件内,子组件标签夹着的内容区域, 传给`slot`内容
你要传给slot区域的内容
1
2
3
4
场景:组件内, 有多处有不确定的标签时
简写:v-slot:xxx
可以简化成#xxx
步骤:
语法:
示例:
子组件.vue
:
vue
默认值1
默认值2
1
2
3
4
父组件.vue
:
vue
你要传给slot-xxx区域的内容
你要传给slot-zzz区域的内容
1
2
3
4
5
6
7
8
9
作用:组件内的数据,可以传给父组件使用
步骤:
语法:
注意:
种类:
语法:
js
new VueRouter({
mode: "history" // 不写mode为hash路由
})
1
2
3
了解-导航种类:
跳转方式
js
this.$router.push("/路径")
this.$router.back() // 返回上一页
this.$router.go(-1) // 返回上一页
1
2
3
4
5
js
// 传查询字符串: ?keyword=123&name=xxx
this.$router.push({path: "/路径名", query: { 属性名: 值}})
// 传动态路由: 路径传值
this.$router.push('/路径名/' + 参数值)
1
2
3
4
5
本质:前端脚手架是一个npm包
作用:一键生成一个空的项目,已配置好需要的环境,提高程序员开发效率。
问题:
本质:一种架构模式(编写代码的方式)。
理解:不需要操作dom的代码编写方式。
背景:现代前端项目,代码量非常大,需要分不同的文件管理代码。
本质:
优势:
扩展问题:
参数位置:
ES6入门指南
面试题:
设计目的: 比较新旧虚拟节点,找出需要更新的节点,从而最小化DOM操作的次数,提高页面的性能。
策略:
常用:四大阶段、8个钩子函数
增加使用场景
本质:某个时机,会自动执行的函数
常用的钩子函数:
computed: {
xxx: {
get() { // 必须有返回值
return ...
},
set(val) { // 形参val,是计算属性接收到的值
}
}
}
js
watch:{
被监听的数据名(){
}
}
watch: {
被监听的数据名: {
immediate: true
deep: true,
handler(){
}
}
}
1
2
3
4
5
6
7
8
9
10
11
规范:
HmButton
hm-button.vue
HmButton.vue
组件名称
变量
占位slot
的内容
占位,并给
设置不同的name属性
,传给slot
内容
与 内容
与 内容
#xxx="对象变量"
,接收数据
和
和
标签范围内使用$route.params
?aa=xx&bb=yy
$route.query
比较同级根元素:
比较同级兄弟节点: