vue笔记整理

Vue
    渐进式的JS前端框架

    Vue Core 核心模块 只负责页面的显示,时间的格式化

    主要是做SPA类型的项目

Vue的核心
    1,MVVM模式
    2,组件化开发


Vue基础
    1,创建Vue实例
        new Vue({
            el: "#app",
            data:{

            },
            methods:{

            }    
        });
    2,模板语法 (写在<div id="App">{{aa}}</div>里)
        2.1 插值语法 ,插入文本处
            {{"aaa"}}
        <input type="text" value="{{aa}}"> //错误
        <span>{{Math.random()}} {{"aaa".indexOf("a")}}</span>
            可以写
                常量
                data中的变量(不需要this)
                表达式  1+1  true?"OK":"NoOK"
                方法(自定义方法,js函数)
            不可以写
                if
        2.2 指令
            系统指令
            1,v-bind 给任意属性绑定vm中的数据模型(单向绑定)
                简写  :
            2,v-model 给value属性定vm中的数据模型(双向绑定)
            3,v-once 只渲染一次,如果以后值发生改变,加上v-once之后就不会变了
            4,v-on   给元素绑定事件,不光可以调用方法,也可以直接写代码
                简写 @
            5,v-html 写在标签中,会解析html标签放置文本中
            6,v-text 写在标签中,不会解析html标签放置文本中
            7,v-if   控制标签的显示和隐藏,true显示,false消失
            8,v-else 与v-if成对出现,取反
            9,v-show 控制标签的显示和隐藏,根据css display属性控制元素隐藏和显示
            10,v-for 循环遍历
            11,v-cloak 能够解决模板闪烁问题
            自定义指令

    3,Class 与 Style 绑定
        <input :class="{'样式名',true/false}">
        - 语法:`<div :class="{类名:是否添加该类名,...}"></div>`
        - 例如:`<div :class="{btn:true,red:false}"></div>`
            
        - :style="{csss属性:css属性值,...}"`
        - `:style="[{csss属性:css属性值,...}]"`
        - css属性值最好遵循驼峰命名,或者用引号包起来。


    4,过滤器
        4.1 定义全局过滤器
            //定义全局过滤器
            Vue.filter("formatDate",function(val){
                console.log(val);
            });
        4.2 定义局部过滤器
            const vm = new Vue({
            el: "#app",
            data: {
            },
            methods: {  
            },
            filters: {
                'formatDate':function(val){
                    const myDate = new Date(val)
                    return myDate.getFullYear()+"-"+(myDate.getMonth()+1)+"-"+myDate.getDate();
                }
            }
        });
        4.3 使用过滤器
            {{brand.createTime | formatDate}} 

        小结:
        总结:

        - 全局的  `Vue.filter(过滤器名称,处理函数)`
        - 局部的 `new Vue({filters:{过滤器名称:处理函数}})`
        - 如果有参数处理 `num|formatNum(20)`   
            Vue.filter("formatNum",function(val,num){ //num = 20
                console.log(val);
            });
        - 处理函数里面一定要return  

过滤器,函数的区别
    过滤器:一般用来做字符格式的转换
    函数:处理复杂业务逻辑
    插值语法{{}}:显示数据,或者简单的表达式

    5,vue操作dom
        1,首先,给你想获取dom的容器上加上一个ref属性
            <input ref="txt1" type="text" >     
        2,在vm实例对象中有一个 $refs 属性,该属性包含了所有定义了 ref 属性的标签
             const txt1 = this.$refs.txt1; 
            可以获得Dom实例对象
    
    6,自定义指令  
        6.1,定义自定义指令
            定义全局自定义指令  
            // 全局自定义指令
            // Vue.directive('focus',{
            //     inserted(el){
            //         el.focus();
            //     }
            // });
            定义局部自定义指令 directives 是与 data,el,methods,filters同级
            directives:{
                'focus': {
                    inserted(el){
                        console.log(el);
                        el.focus();
                    }
                }
            }
        6.2 使用自定义指令
            定义的时候不需要`v-`,但是使用的时候加上`v-`    
            <input v-focus ref="txt1" type="text" > 
    7,计算属性
        语法: //计算属性 与el,data,methods,filters,directives,平级
        computed: {
            msgComputed : function(){
                console.log("计算属性...");
                return this.msg.split('').reverse().join('');
            }
        },
        使用:
        {{msgComputed}}

        计算属性和方法的区别
        - 函数也可以实现数据逻辑处理得到新数据,但是多没使用一次执行一次逻辑,性能不优。
        - 计算属性,在多次使用的时候,会走缓存,性能更好。
        - 将来对数据进行(较为复杂)逻辑处理,建议使用计算属性。

    8,侦听器  
        语法: 与el,data,methods,filters,directives,平级
        // 该侦听器是对count对象进行侦听,当值发生改变时会触发该方法的执行
        watch: {
            count: function(newVal,oldVal){
                console.log("count的值从"+oldVal+"变成了"+newVal);
            }
        }

    9,事件修饰符
        ①.stop:阻止冒泡
        --对于嵌套的两级,如果子父级元素都存在click事件,点击子级元素会触发父级元素的事件;如果子级元素设置@click.stop的话就不会触发父级的click事件
        ②.prevent:阻止默认行为
                --对于如<a href="www.baidu.com" @click.prevent="linkMethod">百度</a>自带事件的,添加prevent事件后,href跳转路径将不会触发
        ③.self:仅绑定元素自身触发,防止事件冒泡
                --对于嵌套的两级,如果子父级元素都存在click事件,点击子级元素会触发父级元素的事件;如果父级元素设置@click.self的话就不会被子级元素的click事件影响
        ④.once: 事件只触发一次(常用表单提交)
        ⑤.passive: 滚动事件的默认行为 (即滚动行为) 将会立即触发,不能和.prevent 一起使用,浏览器内核线程在每个事件执行时查询prevent,造成卡顿,使用passive将会跳过内核线程查询,进而提升流畅度
        ⑥.capture: 对于冒泡事件,且存在多个冒泡事件时,存在该修饰符的会优先执行,如果有多个,则从外到内执行
        ⑦.native: 将vue组件转换为一个普通的HTML标签,如果该修饰符用在普通html标签上是不起任何作用的

    10,Vue生命周期
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java攻城狮1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值