目录
十四.v-if和v-for哪个优先级更高?如果两个同时出现,应该怎么优化得到更好的性能?
十五、vue组件data为什么必须是一个函数,而vue的根实例则没有此限制?
一.插值表达式{{}}
二.计算属性computed,get和set.
三.watch监听器
//监听基本类型
export default{
data(){
return{
name:'ztt',
info:{
hobby:'zyf',
}
}
watch: {
name(newValue,oldValue){
console.log('name',newValue,oldValue)
}
info:{
handler:function(newValue,oldValue){
console.log('info',newVaule,oldVaule)
}
//深度监听
deep:true;
}
}
}
四.绑定class和style
动态绑定类名 :class="{'active':isActive}" 或 :class="['active']" isActive
style :style="styleData" styleData:{backgroundColor:"red",color:"white"};
五.v-if和v-show的区别
v-show会把不显示的内容也会显示出来。
如果状态不断变化,使用v-show
六.v-for列表循环
遍历数组:v-for="(item,index) in array” :key="item.id"
遍历数组:v-for="(value,key,index) in object" :key="key"
***v-if和v-for不能一起使用,v-for优先级比v-if高;
七.父子组件通信
父组件向子组件传值:props
子组件向父组件传值:$emit
八.组件基本的生命周期
九.父子组件的生命周期
created,before update先父后子,
update,destory,mounted是先子后父;
十.slot插槽
十一.动态组件
<component :is="item.type"></component>
<template>
<div id="app">
<div v-for="item in productData" :key="item.id">
<component :is="item.type"></component>
</div>
</div>
</template>
<script>
import Video from './components/Video';
import Text from './components/Text';
export default {
name: "App",
data(){
return{
productData:[
{
id:1,
type:'Video'
},
{
id:2,
type:'Text'
}
]
}
},
component:{
Video,
Text
}
}
</script>
<style scoped>
</style>
十二.异步组件
页面首次渲染的时候,不去加载某部分代码,需要的时候再去加载,提升了性能;
compents:{
Test:()=>import('./compents/Test')
//组件加载的时候起名字
Test:()=>import(/*webpackChunkName:"Test"*/,'./compents/Test')
}
十三.keep-alive实现组件的缓存
在组件外面套一层<keep-alive></keep-alive>,组件不会被销毁,会被缓存起来
如果组件比较简单,可以使用v-show,如果比较复杂,使用keep-alive;
十四.v-if和v-for哪个优先级更高?如果两个同时出现,应该怎么优化得到更好的性能?
1.v-for优先于v-if被解析;
2.如果同时出现,每次渲染都会先执行循环再判断条件,无论如何循环都不可避免,浪费了性能;
3.要避免出现这种情况,则在外层嵌套template,在这一层进行v-if判断,然后在内部进行v-for循环;
十五、vue组件data为什么必须是一个函数,而vue的根实例则没有此限制?
vue组件可能存在多个实例,如果使用对象形式定义data,则会导致他们公用一个data对象,那么状态变更将会影响所有组件实例,这是不合理的。采用函数形式定义,在initData时将其作为工厂函数返回全新data对象,有效规避多实例之前状态污染问题。而在vue根实例创建过程中则不存在该限制,也是因为根实例只能有一个,不需要担心这种情况。
十六.vue中key的作用和工作原理?
key的作用主要是为了搞笑的更新模拟dom,其原理是vue在patch过程中通过key可以精准判断两个节点是否是同一个,从而避免频繁更新不同元素,使得证跟patch过程更加高效,减少DOM操作量,提高性能;
十七.vue组件化的理解
思路:组件化定义,优点,使用场景和注意事项等方面展开陈述,同时要强调vue中组件的一些特点。
组件时独立和可复用的代码组织单元。组件系统时vue核心特性之一,他使开发者使用小型、独立和通常可复用的组件构建大型应用;
组件化开发能大幅提高应用开发效率、测试性、复用性等;
组件按使用进行分类有:页面组件、业务组件、通用组件;
vue中常见组件化技术有:属性prop,自定义事件,插槽等,他们朱永用于组件通信、扩展等;
高内聚,低耦合;
十八、VUE性能优化方法:
1.路由懒加载
2.keep-alive缓存页面
3.使用v-show复用DOM
4.v-for避免同时使用v-if,使用计算属性
5.事件销毁
vue组件销毁时,会自动解绑它的全部指令及事件监听器,但是仅限于组件本身的事件;
6.图片懒加载
对于图片过多的页面,为了加速页面加载的速度,所以我们需要将页面内未出现在可视区域内的图片先不做加载,等到滚动到可视区域后再去加载;
7.第三方插件按需引入