VUE第三天知识点

  v-for
        v-for    列表渲染   指令可以渲染数组和对象   
        v-for="(item,index) in items" v-bind:key="index"
        v-for="(value,key,index) in object" 遍历对象 

        虚拟DOM   性能优化
        key  为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素
        你需要为每项提供一个唯一 key 属性
        
        Vue 识别节点的一个通用机制   一个组件添加 key key值更改 组件强制刷新 


        
        深浅拷贝    ...展开运算   JONS.stringify 递归 
        深浅复制
        深浅监听 


        数据类型 
        基本数据类型  String Number Boolean null undefined  (不可变对象 深拷贝 )
        引用数据类型  对象 数组     (可变对象 浅拷贝)  

        不可变对象   基本数据类型      immutable 修改不可变对象 响应式系统一定检测到数据更新
        可变对象     引用数据类型      mutable   修改可变对象 可能 响应式系统无法检测到数据更新

        Vue 响应式视图 可以检测 不可变对象的数据修改   可变对象  有的时候监测不到   (响应式视图系统会监测第一层的数据改变)
        修改 基本数据类型  会触发视图更新 
        修改 引用数据类型  可能触发视图更新 

        数组方法 
        push
        pop
        shift
        unshift
        splice
        sort
        reverse
        map
        reduce 
        forEach
        filter 
        find
        some 
        every 
        concat 
        slice

        Vue 将被侦听的数组的变异方法进行了包裹,所以它们也将会触发视图更新
        变异数组方法    这些方法直接修改原来的数组
        push
        pop
        shift
        unshift
        splice
        sort
        reverse

        非变异数组方法   这些方法不能改变原始数组 但可以返回一个新的数组 
        map
        reduce 
        forEach
        filter 
        find
        some 
        every
        reduce 
        concat 
        slice

        实例方法                            全局方法   
        vm.$set(array,index,newItem)       Vue.set         设置
        vm.$delete                         Vue.delete      删除 
 过滤器  filter 
        Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化  (日期格式 货币格式)
        过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 
        “管道”符号指示   |
         
        Vue.filter 全局过滤器 
        filters 局部过滤器 
     -->

    <!-- 
        v-on 监听DOM 事件 执行相关的函数 
        缩写  @   v-on:click @click 

        函数调用时候的参数 是 实参
        函数定义时候的参数 是 形参 

        事件修饰符
        event.preventDefault()  阻止浏览器的默认事件
        event.stopPropagation()  阻止事件冒泡 

        v-on 提供了事件修饰符 
        .stop     阻止单击事件继续传播  
        .prevent   阻止浏览器的默认事件  
        .capture   
        .self
        .once    这个事件只能触发一次 
        .passive


        按键修饰符   键盘事件 (键盘码)
        enter    13 
        right    37 
        left
        space     32 
        up
        down 

        v-on:click  @click 
        input 
        change
        click
        dbclick
        keyup
        keydown
        keypress
        mousemove
        mousedown
        mouseup
        mouseenter
        mouserleave 
        touchstart   后面再讲 手机端的触摸事件 
        touchmove
        touchend

        原生绑定事件 
        onclick="do()"  DOM0  
        document.getElementyById("box").onclick = fn;
        addEventListener("click",fn,false/true)  默认 false  false 冒泡   true 捕获   DOM2 
        removeEventListener("click")

        jquery 绑定事件 
        on  /  off
        bind  /  unbind
        click()

        事件委托===> 基于事件冒泡的原理 把子元素的触发 父元素代替子元素执行 (给未来元素绑定事件 把事件绑定到父元素上去)
        $(parent).on('click',child,fn);    
        $(parent).delegate(child,'click',fn);   // 委托 
        
        过滤器
 Vue 提供了 transition 的封装组件  任何元素和组件添加进入/离开过渡
        v-if
        v-show
        组件切换  (动态组件切换  子组件切换)

        transition

        过渡  (0-1)  
        在进入/离开的过渡中,会有 6class 切换
        v-enter  进入之前    开始帧 过渡
        v-enter-active 正在进入   animation
        v-enter-to  进入完成   结束帧

        v-leave  离开之前
        v-leave-active  正在离开
        v-leave-to   离开完成

        v-   transition 没有name 默认 v-
        transition 添加 name = fade  v 替换成 fade 


        初始化渲染 过渡 
        appear
        appear-active-class  动画 


        v-if / v-show 
 v-model  用于绑定 input 和 textarea 的 value  输入框 

        v-model 实现数据双向绑定
        view  视图层   修改视图(input 事件)  v-model 会自动去更新对应的 数据(model)
        model 数据层   修改数据  通过js修改数据 v-model 会自动的去更新 数据对应的 视图 (view)

        Vue 不是一个真正的MVVM模式的 框架 ,只是借鉴了 MVVM 部分精华和优点
        
        设计模式   
        MVC        angularJS  
        M  model 数据层
        V  view  视图层
        C  controller 控制器层   

        MVVM   
        M  model 数据层
        V  views 视图层
        VM viewmodel  数据视图对象  

        MVP  
        M  model 数据层
        V  views 视图层
        P  presenter  逻辑层  (js逻辑处理代码+方法)

        v-model 的底层原理   语法糖
        Object.defineProperty()  进行数据劫持  (监听数据改变 从而触发修改视图的逻辑函数)  (监听输入框输入事件 从而修改对应的数据)

        它会根据控件类型自动选取正确的方法来更新元素  
        v-model 本质上不过是语法糖 ( 包含大量逻辑代码块集合)
        负责监听用户的输入事件以更新数据
        
        text 和 textarea 元素使用 value 属性和 input 事件
        checkbox 和 radio 使用 checked 属性和 change 事件
        select 字段将 value 作为 prop 并将 change 作为事件   $("#select").prop()

        v-model 也有修饰符 
        lazy    input 变为 change 延迟触发 
        trim    去除首尾空格
        number  用户的输入值转为数值类型
 Vue 永远操作数据   而不是去操作DOM  
        操作 this.goods 

        深度监听 vs 浅度监听  
        [
            {
    
    
                []
            }
        ]
        如果修改数据(对象数组) 第一层数据 检测数据改变  
        如果修改数据 深层 数据  无法检测数据改变 

猜你喜欢

转载自blog.csdn.net/weixin_48651630/article/details/108271850