简单易懂的Vue知识

491 阅读2分钟

directives指令

自定义指令,访问到dom节点

案例:


<script>
    Vue.createApp({
        data() {
            return { flag: true }
        },
        // 自定义指令:操作dom
        directives: {
            // 指令的名称是focus
            "focus": {
                // mounted;定dom节点挂载后执行
                // beforeUpdate,更新前;
                beforeUpdate(el, binding) {
                    // el 指令所在的dom节点
                    // binding.value 指令的值
                    console.log(el, binding);
                    // 如果指令的值为真,则获取焦点,否则失去焦点
                    if (binding.value) {
                        el.focus()
                    }
                }
            }
        }

    }).mount("#app")
</script>

钩子函数

created:创建

beforeMount:父组件挂载前

mounted:挂载后

beforeUpdate:更新前

组件 (components)

组件:一个小的功能分区
意义:复杂项目拆分简单的组件;组件是可以重复使用的模块; 让团队开发更高效
理解:组件其实就是个小的Vue,具有data,methods,watch,computed

组件的定义:

 const steper = {template:`<span>...</span>`}

组件注册:

components:{steper}

组件的使用:

<steper></steper>

组件的参数传递

父传子(props)

<steper :value="5">
steper内部
props:{value:{type:Number,default:1}}
steper内部使用(只读,不能修改)
this.value 

子传父(emit事件)

在steper内部
this.$emit("numchange",this.num)
numchange事件名称,this.num 事件值
父组件
<steper @numchange="w1=$event">
$event 就是子组件通过numchange传递过来的值 this.num

案例:


<script>
    // 定义组件组件
    // 组件父传子 props (props值是只读的)
    // 组件子传父 事件emit
    // steper 数据变化了,通知父组件修改w1,w2
    const steper = {
        template: `<span>
        <button @click="num--">-</button>
        <input v-model.number="num"/>
        <button  @click="num++">+</button>
        </span>`,
        data() {
            return { num: this.value }
        },
        props: {
            value: {
                type: Number,  //value类型是数字
                default: 1 //默认值1
            }
        },
        watch: {
            "num": {
                handler: function (nval, oval) {
                    // 把num值同感emit发送出去
                    this.$emit("numchange", this.num)
                },
                deep: true,
            }
        }
    }

    Vue.createApp({
        // 注册组件
        components: { steper },
        data() {
            return {
                w1: 30,
                w2: 20
            }
        }
    }).mount("#app")
</script>

插槽

<step>嵌套内容</step> 可以通过<slot></slot>获取组件的嵌套内容

命名插槽

<step>
    <template v-slot:pre>
        pre插槽内容
    </template>
</step>
<slot name="pre">

插槽的作用域

子:  <slot item="item">
父:
<step>
    <template v-slot:default="scope">
        {{scope.item}}
    </template>
</step>

动画(transtion)

自动对显示与隐藏的元素添加类名
.v-enter-active
进入整个过程
.v-enter-from
进入开始状态
.v-enter-to
进入结束状态
.v-leave-active
离开的过程
.v-leave-from
离开开始状态
.v-leave-to
离开结束状态
<transition>
mode模式  in-out  out-in
name 名称	
自定义进入class名称  enter-active-class
自定义离开class名称  leave-active-class

案例:


<style>
    .fade-enter-active,
    .fade-leave-active {
        /* 整个进入的过程 */
        /* 整个离开的过程都拥有这两个类 */
        transition: all ease 1s;
    }

    /* 进入状态的class */
    .fade-enter-from {
        opacity: 0;
    }

    /* 进入到的class */
    .fade-enter-to {
        opacity: 1;
    }

    /* 离开开始状态 */
    .fade-leave-from {
        opacity: 1;
    }

    /* 离开结束状态 */
    .fade-leave-to {
        opacity: 0;
    }
</style>

    <div id="app">
        <button @click="flag=!flag">切换</button> <br>
        <transition name="fade">
            <img src="./images/sun.jpeg" alt="" v-if="flag">
        </transition>
    </div>
    <script>
        // 01 Vue动画是通过组件 transition实现的
        // 02 在显示离开产生动画 v-if v-show v-else v-else-if
        Vue.createApp({
            data() {
                return {
                    flag: true
                }
            }
        }).mount("#app")
    </script>

关键帧动画案例:

<style>
    @keyframes fadeIn {
        from {
            opacity: 0;
            transform: rotate(-180deg);
        }

        to {
            opacity: 1;
            transform: rotate(0);
        }
    }

    @keyframes fadeOut {
        0% {
            opacity: 1;
            transform: rotate(0);
        }

        100% {
            opacity: 0;
            transform: rotate(180deg)
        }
    }

    .fade-enter-active {
        animation: fadeIn ease 1s;
    }

    .fade-leave-active {
        animation: fadeOut ease 1s;
    }
</style>

    <div id="app">
        <button @click="flag=!flag">切换</button> <br>
        <transition name="fade">
            <img src="./images/sun.jpeg" alt="" v-if="flag">
        </transition>
    </div>
    <script>
        // 01 Vue动画是通过组件 transition实现的
        // 02 在显示离开产生动画 v-if v-show v-else v-else-if
        Vue.createApp({
            data() {
                return {
                    flag: true
                }
            }
        }).mount("#app")
    </script>

节点引用(ref)

<input ref="inp">
this.$refs.inp
 <btn ref="btn">
    this.$refs.btn.add() //访问组件的方法
    this.$refs.btn.num //访问组件的属性

cmd命令入门

1. win+R打开运行
2.输入cmd打开命令窗口
切换盘符:
c:
d:
f:
切换目录:
cd 目录地址
创建目录:
md 目录地址
删除目录:
rd 目录地址
rd /s /q 静默删除目录与目录内容
/ 根目录
./当前目录
../上一层目录
help 查看命令
help 命令  查看命令用法
首字母 + tab 提示当前目录的文件夹
↑上一个命令
↓下一个命令
其他:
	ipconfig 查看ip
        ping 主机/ip 查看与别的主机与ip的联通状态
	cls 清屏
	calc 打开计算器
	ctrl+c 结束当前运行命令