vue 选项
数据和方法类型的选项是Vue实例选项中最重要的内容,用好这些足以支持开发者创建一个完整的Vue应用。
数据选项
数据(data)选项可接受的类型有对象和函数两种,不过在定义一个组件时只能使用函数类型,示例代码如下:
Vue为组件开发提供了属性(props)选项,我们可以使用它为组件注册动态特性,以处理业务间的差异,使代码可以复用于相似的应用场景。props选项可以是数组或者对象类型,用于接收从父组件传递过来的参数**,并允许开发者为其设置默认值、类型检测和校验规则等。
方法选项
//代码1
let storel={
msg:’He11o World',logMsg;function){
console.log('-----—-匿名函数—-\n’,this)
console.log(this.msg)
store1.logMsg()
//代码2
let store2={
msg:’Hel1o World',logMsg:()=>{
console.log('---------—-箭头函数——\n’,this)
console.log(this.msg)
store2.logMsg)
使用箭头函数定义方法时并不会创建函数作用域,因此this也不会指向其父级实例,此时的this会向上追踪。当找到某个函数作用域时,this将指向该函数的父级实例;否则,this将指向浏览器的内置对象Windows。
关于methods选项唯一的一点就是不要用箭头函数在其中定义方法。在创建组件时,methods中的方法将被绑定到Vue实例上,方法中的this也将自动指向Vue实例。此时,如果使用箭头函数的话,this将无法正确指向Vue实例,这会带来不必要的麻烦。
计算属性
开发者有权定义可被赋值的computed属性,方法类似于定义对象属性描述符中的setter和getter,示例代码如下
<template>
<div id="app">
<h3>computed选项重构</h3>
<p>
侦听属性
Vue允许开发者使用侦听属性(watch选项)为实例添加被观察对象,并在对象被修改时调用开发者自定义的方法。
<template>
<div id="app">
<h3>监听器</h3>
<label>小乔:
<p>
此外,Vue还为watch选项提供了丰富的声明方式,如:
DOM渲染
指定被挂载元素
el选项可用于指定Vue实例的挂载目标,属性值仅限于CSS选择器或者DOM节点对象。选项的相关用法如下所示:
渲染函数render
render函数同样也可以用于渲染视图,它提供了回调方法createElement以供我们创建DOM节点,下面来看一段
选项的优先级
render》template 》 el
封装复用
过滤器
<template>
<div id="app">
<p>没有过滤器:
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
Vue.filter('remove1', value=>{
return value.replace(/#/g, '')
})
let vms = new Vue({
render: h => h(App),
});
vms.$mount('#app')
自定义指令
我们接触过一些Vue提供的“开箱即用”的指令,如v-bind、v-on、v-model等。除了这些指令外,Vue也允许我们使用一些自定义的指令。在组件和实例中,这些自定义指令应该被声明在directives选项中。Vue为自定义指令提供了如下几个钩子函数(均为可选):
●bind:指令与元素绑定时调用。
●inserted:指令绑定的元素被挂载到父元素上时调用。
●update:指令所在VNode更新时调用,可能发生在其子VNode更新之前。
●componentUpdated:指令所在VNode及其子VNode全部更新后调用。
●unbind:指令与元素解绑时调用。
钩子函数会被传入以下参数:
●el:指令所绑定元素,可用于操作DOM。
●binding:包含指令相关属性的对象。binding包含以下属性:
●name:指令名称。
●value:指令绑定的值,如在v-some=“22”中,绑定值为4。
●oldValue:指令值改变前的值,仅在update和componentUpdated钩子函数中可用。
●expression:字符串类型的指令表达式,如在v-some=“22”中,值为“2*2”。
●arg:传给指令的参数,如在v-some:someValue中,值为“someValue”。
●modifiers:修饰符对象,如在v-some.upper中,值为{upper: true}。
●vnode:虚拟节点。
●oldNode:虚拟节点更新前的值,仅在update和componentUpdated钩子函数中可用。
<template>
<div id="app">
<h3>自定义指令</h3>
<p> 自定义大小写 原文