1vue 常用特性

1vue 常用特性

1.1自定义指令

除了核心功能默认内置的指令,Vue 也允许注册自定义指令。有的情况下,对普通DOM元素进行

底层操作,这个时候就会用到自定义指令绑定到元素上执行相关操作。

自定义指令分为:

全局 指令和 局部 指令,当全局指令和局部指令同名时以局部指令为准。

自定义指令常用钩子函数有:

  • bind:在指令第一次绑定到元素时调用

  • inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)

  • update:数据更新时调用

请注意:不管在定义全局还是局部自定义指令时,所提及的指令名均是不带 v- 前缀的名称

全局自定义指令定义

// 无参(v-once/v-cloak)
Vue.directive('指令名',{ 
  钩子函数名: function(el[,....]){ 
  // 业务逻辑 
  // el参数是挂载到元素的DOM对象 
	} 
}
// 传参(v-text/v-html/v-model) v-model="username"
Vue.directive('指令名',{ 
  钩子函数名: function(el,binding[,....]){ 
  	let param = binding.value  // param 其实就时 username 的值
    // 业务逻辑
    },
    .... 
} 

局部自定义指令定义

可以在 new Vue 的时候添加 directives 以注册局部自定义指令,局部自定义指令只能在当前组件中使用:

directives: { 
  指令名: { 
    // 指令的定义 
    钩子函数名: function (el,binding) { 
      // 业务逻辑 
    } 
  } 
}

5.2 计算属性-computed

计算属性定义在Vue对象中,通过关键词 computed 属性对象中定义一个个函数,并返回一个值,使用计算属性时和 data 中的数据使用方式一致。

任何复杂的业务逻辑,我们都应当使用计算属性 - 计算属性具有依赖性,只有依赖的值发生改变,才会重新计算

5.3 监听器 - watch

使用watch来侦听data中数据的变化,watch中的属性一定是data 中已经存在的数据。

**使用场景:**数据变化时执行异步或开销比较大的操作。

**典型应用:**http://www.pinyinzi.cn/

computed 和 watch 区分使用场景

computed: 是计算属性,依赖其它属性值,并且 computed 的值有缓存,只有它依赖的属性值发生改变,下一次获取 computed 的值时才会重新计算 computed 的值;

watch: 更多的是「观察」的作用,类似于某些数据的监听回调 ,每当监听的数据变化时都会执行回调进行后续操作;

运用场景:

  • 当我们需要进行数值计算,并且依赖于其它数据时,应该使用 computed,因为可以利用 computed 的缓存特性,避免每次获取值时,都要重新计算;
  • 当我们需要在数据变化时执行异步或开销较大的操作时,应该使用 watch,使用 watch 选项允许我们执行异步操作 ( 访问一个 API ),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。

5.4 过滤器-filters

作用:格式化数据,比如将字符串格式化为首字母大写、将日期格式化为指定的格式等。

  • 过滤器可以定义成全局过滤器和局部过滤器。
  • 过滤器的本质就是一个方法,使用过滤器实际上就相当于方法调用,仅是书写形式上的差异(使用的时候需要用“|”,其也可以被称之为 管道 或 变量/数据修饰符 )

声明语法:

// 全局过滤器 
Vue.filter('过滤器名称',function(value[,arg1,arg2...]){ 
  //过滤器业务逻辑 
  return .... 
})
// 局部过滤器 
el: '#app', 
data: {}, 
filters: { 
  过滤器名称: function(value[,arg1,arg2...]){ 
    return something 
  },
 .... 
}

使用语法:

<!-- 过滤器使用 -->
<div>{{msg | upper}}</div>
<!-- 过滤器允许连续使用,“前 → 后”按顺序执行 --> 
<div>{{msg | upper | lower}}</div> 
<!-- 过滤器支持在v-bind中使用 --> 
<div v-bind:id='id | formatId'></div> 
<!-- 过滤器支持传参 --> 
<div>{{msg | mysub(1,2)}}</div>

5.6 混入 - mixins

混入(mixins)是一种分发Vue组件中可复用功能的非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

混入分为全局混入和局部混入。

注意事项

  • 当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”,合并策略:

    • data 数据对象发生冲突时以组件数据优先

    • 同名钩子函数将合并为一个数组,都将被调用,并且混入对象的钩子将在组件自身钩子之前调用

    • 值为对象的选项,例如 methods 、 components 和 directives ,将被合并为同一个对象。两个对象键名冲突时,取组件对象的键值对

  • 全局注册使用时需要格外小心!一旦使用全局混入,它将影响每一个之后创建的 Vue 实例

5.7 生命周期

每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如需要设置数据监听、编译模板、挂载实例到 DOM,在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,目的是给予用户在一些特定的场景下添加他们自己代码的机会。

Vue生命周期的主要阶段:4个before, 4个ed,创建,挂载,更新,销毁

  • 挂载(初始化相关属性)

    • beforeCreate ---- 备孕

      注意点:在此时不能获取data中的数据,也就是说 this.msg 得到的是

    • created ---- 怀上了

    • beforeMount ---- 怀胎十月

    • mounted【页面加载完毕的时候就是此时】 ---- 生下来了

      注意点:默认情况下,在组件的生命周期中只会触发一次

  • 更新(元素或组件的变更操作)

    • beforeUpdate

    • updated

      注意点:可以重复触发的

  • 销毁(销毁相关属性)

    • beforeDestroy — game over前

    • destroyed — game over

销毁(手动)使用 this.$destroy()

关于8个生命周期涉及到的方法,可以参考Vue官网API:

https://cn.vuejs.org/v2/api/#%E9%80%89%E9%A1%B9-%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E9%92%A9%E5%AD%90

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值