Vue构造选项的相关探索

2020-04-24  本文已影响0人  云卷云舒听雨声

【目录】
一、options里面有什么?
二、el
三、data
四、methods
五、components
六、四个钩子
七、props

【正文】
对Vue构造选项的相关探索从这个内存图开始


需要知道的点 :

一、options里面有什么?

options的五类属性

二、el

el : 挂载点(可以用$mount代替)

代码示例 :

var data = { a: 1 }
var vm = new Vue({
  el: '#example',
  data: data
})
vm.$data === data // => true
vm.$el === document.getElementById('example') // => true
// $watch 是一个实例方法
vm.$watch('a', function (newValue, oldValue) {
  // 这个回调将在 `vm.a` 改变后调用
})

三、data

data : 内部数据(支持对象和函数,优先用函数)

var data = { a: 1 }
// 直接创建一个实例
var vm = new Vue({
  data: data
})
vm.a // => 1
vm.$data === data // => true
// Vue.extend() 中 data 必须是函数
var Component = Vue.extend({
  data: function () {
    return { a: 1 }
  }
})

四、methods

methods : 方法(事件处理函数或者是普通函数)

代码示例如下 :

var vm = new Vue({
  data: { a: 1 },
  methods: {
    plus: function () {
      this.a++
    }
  }
})
vm.plus()
vm.a // 2

五、components

三种引入方式

1、第一种引入方式(推荐方式一,因为较为模块化)

import  Demo from './Demo.vue'

new Vue(
   components:{     
           Frank:Demo
        }
}).$mount('#frank')

2、第二种引入方式

Vue.component('Demo2',{
  template:`
    <div>123</div>
`
})

3、第三种引入方式

new Vue(
   components:{     
           Frank:{
             template:`
    <div>123</div>
`}
        }
}).$mount('#frank')

六、四个钩子

1、created : 实例出现在内存中
2、 mounted : 实例出现在页面中

( 注意 mounted不会保证所有的子组件也都一起被挂载。如果你希望等到整个视图都渲染完毕,可以在mounted内部使用 vm.$nextTick:)

mounted: function () {
  this.$nextTick(function () {
    // Code that will run only after the
    // entire view has been rendered
  })
}

该钩子在服务器端渲染期间不被调用。

3、updated : 实例更新

( 注意 updated 不会保证所有的子组件也都一起被重绘。如果你希望等到整个视图都重绘完毕,可以在 updated 里使用 vm.$nextTick:)

updated: function () {
  this.$nextTick(function () {
    // Code that will run only after the
    // entire view has been re-rendered
  })
}

该钩子在服务器端渲染期间不被调用。

4、destroyed : 实例从页面和内存中消亡了

该钩子在服务器端渲染期间不被调用。

生命周期图示

七、props

props : 外部数据,也叫属性

// 简单语法
Vue.component('props-demo-simple', {
  props: ['size', 'myMessage']
})

// 对象语法,提供验证
Vue.component('props-demo-advanced', {
  props: {
    // 检测类型
    height: Number,
    // 检测类型 + 其他验证
    age: {
      type: Number,
      default: 0,
      required: true,
      validator: function (value) {
        return value >= 0
      }
    }
  }
})
注 :
上一篇 下一篇

猜你喜欢

热点阅读