props,filter,directive,slot

props属性验证,过滤器,自定义指令,插槽

1. props属性验证
  • 常用形式:
props: {
key: keyType // key是从父组件获得的自定义属性, 值是我们期望得到的数据类型
}

//当我们需要满足某个条件才输出时,可以使用validateor( val )函数,函数内返回满足条件的

props: {
    key: {
    validator( value ){
         return value 的条件value是接收到的属性的值
    }
    }
}
  • 不常用形式
props: {
    propA: [],里面的类型都可以
    propB: {//
        type: String,
        require: true//require是必须有的
    },
    propC: {
        type:String,
        default: 'yyb'//default是默认值
    },
    propD: {
        type: String,
        default: function(){
            return 'yyb'
        }
    }
}
  • 有时候有的项目总也会使用一个叫做 vue-validate validate这些第三方库
2. 过滤器
  • vue 1.x版本一共提供了10个过滤器, 但是不满足人们使用,vue2.x全部不提供了, 交给开发者自己写
  • 但是vue提供饿了定义过滤器的方式
  • 过滤器: 对数据进行格式化的一个函数
  • 过滤器可以用在两个地方:双花括号插值和 v-bind 表达式
  • 过滤器用给一个 ’ | ’ 表示, 我们称之为 ‘管道符’
html代码
<body>
    <div id="app">
        <div>
            {{ msg | yuan("¥") }}<!--通过 \ 这个符号来连接-->
            {{ bian | bi }}
        </div>
    </div>
</body>


Vue.filter('bi',function(value){//全局过滤器
    var tes=/0-9/
        if(tes.test(value)){//大小写转换
            value.toLowerCase()
        }else{
            value.toUpperCase()
         }
    // var a=value.toUpperCase()
    // return a
})
new Vue({
    el:'#app',
    data:{
        msg:9999,
        bian:'asf'
    },
    filters:{//filters局部过滤器
        yuan (value,type) {//第一个参数是绑定这个过滤器的元素的值,后面的参数是自己传的参数,需要什么传什么
        return type+value//要把值返回出去
        }
    }
})


3. 自定义指令

自定义指令分为:全局自定义指令和 局部自定义指令

  • 指令的钩子函数(一共有5个) //一般都只会用前面两个
    • bind : 指令和元素第一次绑定的时候调用//无论什么时候都会调用的
    • inserted : 指令绑定的元素插入父节点的时候调用
    • update : 指令绑定的元素自身, 或是他的内容(子节点)发生改变的时候出发
    • componentUpdated : 指令绑定的组件自身, 或是他的内容(子节点)发生改变的时候出发
    • unbind : 指令和元素第一次解绑是调用
  • 指令的钩子函数的参数
    • el 当前元素
    • binding 前端指令的所有信息
    • vNode 当前指令绑定的虚拟节点
    • oldVnode 指令绑定前的虚拟节点
  1. 渲染函数 和 jsx
  2. 渲染函数 render函数 — 》 createElment
  3. jsx( javascript + xml )
    • xml 就是一种标签化的数据格式
    • jsx语法浏览器无法解析, 必须靠babel来解析
    • jsx语法出现的原因是为了解决,render函数频繁使用createElement来创建节点
  4. 过渡 & 动画

过渡指的是 用 css3 的transition来实现动画效果
动画指的是用 js来实现动画效果

  • Vue中一共给了四种解决方案, 但是我们常用的只有一种
    • 在 CSS 过渡和动画中自动应用 class
    • 可以配合使用第三方 CSS 动画库,如 Animate.css 【推荐】
    • 在过渡钩子函数中使用 JavaScript 直接操作 DOM
    • 可以配合使用第三方 JavaScript 动画库,如 Velocity.js
  1. slot 插槽

<body>
    <div id="app">
        <Hello>//这是模板标签,只要下面写了slot,这个标签里面就可以写标签了
            <div> 这是组件内直接写的 </div>
        </Hello>
    </div>
    <template id="hello">
        <div>
            <h3> 骏哥, 被伤了 </h3>
            <slot></slot>//这里写个slot,上面就可以写标签了,写多少都可以
        </div>
    </template>
</body>


具名插槽,具名插槽在vue的3.0中将会有大作用

<body>
    <div id="app">
        <Hello>//这里是模板标签
        <header slot = 'header'>头部</header><!--这里按照slot的名字可以放在具体的位置-->
        <section slot = "content"> 内容 </section>
        <footer slot = "footer"> 底部 </footer>
        </Hello>
    </div>
    <template id="hello">
        <div>
            <slot name = 'header'></slot>//这里slot给个名字,上面就可以通过这个名字排位置了
            <h3> 骏哥, 被伤了 </h3>
            <slot name = "content"></slot>
            <slot name = "footer"></slot>
        </div>
    </template>
</body>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值