vue

111 阅读3分钟

内部指令

  1. v-once 该指令能让元素只渲染开头一次,用于性能优化
  2. v-text 用于元素内插入文本
  3. v-html 可以插入html
  4. v-pre 跳过元素和它的子元素的编译过程,显示原始值
  5. v-cloak 这个使mustache标签直到组件实例化完毕得配合属性选择器和display:none 一起使用

image.png

  1. v-bind 绑定属性

可以动态绑定多个属性 image.png

  1. v-on 绑定事件

  2. v-if、v-else、v-else-if

  3. v-show

  4. v-for

虚拟dom的作用可以做跨平台

key的作用是进行虚拟dom的diff算法对比dom

如果没key的话,则是将变化的dom及后续dom元素进行替换算法,有key则不用只是渲染改变变化部分,其他dom则不 动

image.png

image.png

v-if与v-show区别

v-if是直接销毁dom元素,v-show则是将元素设置display:none进行隐藏, 频繁切换则建议使用v-show。不频繁切换则使用v-if(因为v-show一开始无论真假都会被渲染)

不建议v-if与v-for一起使用

因为v-for优先级高于v-if,所以元素无论v-if条件如何都会首先渲染,再进行判断真假后销毁假的dom元素,比较消耗性能,可以采取computed做法

数组更新检测

image.png

computed

计算属性可以依赖响应式进行缓存,相对于method来说性能比较节省

image.png

image.png

watch 侦听器

可以用做侦听数据变化而进行对应地操作

几种写法

watch:{
    info(newval, oldValue){
        console.log(newval, oldValue)
    },
    
    'info.name':function(newval, oldValue){
        console.log(newval, oldValue)
    },
    
    info:{
       handler(newVal,oldval){
           console.log(newval, oldValue)
       },
       deep:true,
       immediate:true
    },
    
    
}

image.png

v-model

image.png

修饰符

  1. .lazy(是将input事件修改为change)
  2. .trim (是将前后空格去除)
  3. .number(是将字符串数字转换为数字型数字)

组件化

全局注册组件

import { createApp } from 'vue'

import HomeApp from '@/views/home.vue'

const app = createApp(根组件)

app.component('home-app', HomeApp)

app.mount(#app)

局部注册组件

import HomeApp from './HomeApp.vue'
export default{
    components:{
        HomeApp
    }
}

组件名称

image.png

项目目录

image.png

Babel 是一个 JavaScript 编译器,它能让开发者在开发过程中,直接使用各类方言(如 TS、Flow、JSX)或新的语法特性,而不需要考虑运行环境,因为 Babel 可以做到按需转换为低版本支持的代码;Babel 内部原理是将 JS 代码转换为 AST,对 AST 应用各种插件进行处理,最终输出编译后的 JS 代码。

组件prop和emit

prop两种写法(数组和对象)

数组

image.png

对象

image.png

非prop属性为根组件继承

image.png

image.png

emit

image.png

image.png

插槽slot

image.png

具名插槽

image.png

image.png

作用域插槽

image.png

事件总线

image.png

image.png

image.png

provide和inject

image.png

image.png

image.png

生命周期

image.png

$refs

image.png

image.png

动态组件

image.png

image.png

keep-alive

image.png

image.png

image.png

webpack分包操作及异步组件(了解)

image.png

image.png

组件v-model(了解)

image.png

image.png

image.png

mixin

image.png

image.png

image.png

composition api 和 options api

vue2 采用options api选项式思想,会使逻辑过于分散,加深组件维护和理解的困难性

image.png

setup函数

参数props跟context

image.png

image.png

image.png

reactive 与 ref

ref适合拿来接受接口返回的值

const refVal = ref({})

refVal.value = {......}

image.png

image.png

image.png

image.png

readonly

image.png

image.png

image.png

toRefs与toRef

image.png

image.png

setup中ref获取dom

<template>
    <div ref="divRef"></div>
</template>

<script>
import { onMounted } from 'vue'
    export default{
        setup(){
            const divRef = ref(null)
            onMounted(()=>{
                console.log(divRef)
            })
            return{
                divRef
            }
        }
    }
</script>

生命周期钩子

image.png

vue3中的provide和inject

image.png

image.png

image.png

watch和watchEffect

watch追踪指定明确响应数据源

image.png

image.png

image.png

image.png

watchEffect追踪回调函数里面的响应数据源(一开始会执行回调收集侦听对象)

image.png

手动停止侦听器避免内存泄漏

image.png

setup语法糖

image.png

image.png