Vue 构造选项

202 阅读3分钟

Vue实例

用Vue去选一个元素,得到一个实例Vue对象(实例就是对象),这个对象封装了对这个元素的所有操作

构造vue实例

const vm = new Vue({options})

这个实例会根据你给的选项得出一个对象vm
vm封装了Dom对象,以及对应的所有操作,只需调用API就行

options 选项

数据

data          数据
props         属性
propsData      
computed      计算的
methods       方法
watch         观察,希望在data产生变化时做什么事时使用

DOM

el            容器,模板;要用模板替换页面的哪一块
template      html的内容
render        渲染
renderError

生命周期钩子

beforeCreate  生之前
created       生之后
beforeMount
mounted       挂载
beforeUpdate
update        更新
activated
deactivated
beforeDestroy
destroyed     消失
errorCaptured

资源

directives    指令
filters       过滤器
components    组件

组合

parent        父母
mixins        混入
extends       扩展
provide       提供
inject        注入

其它

name
delimiters
functional
model
inheritAttrs
comments

简单属性

el 挂载点

提供一个在页面上已存在的 DOM 元素作为 Vue 实例的挂载目标
可以是 CSS 选择器,也可以是一个 HTMLElement 实例

可以使用$mount替换
new Vue({
  el:'#frank',
  rendet: h=>h(Demo)
})
等价于
new Vue({
  rendet: h=>h(Demo)
}).$mount('#frank')

data 数据

函数写法
data(){
  return {
   n:0
  }
}

data: function(){
  return {
   n:0
  }
}

数据写法
data: {
 n:0
}

如果是import Demo from './Demo.vue';那么文件中的data必须用函数
防止引用出问题(调用相同数据,p1修改了data,p2调用的就是修改之后的data)

引用时发现data是函数,就调用Demo.data,得到真正的data
之后调用也是调用Demo.data,得到真正的data,每次调用都会得到新的对象,互不影响

methods 方法

可以直接通过VM实例访问这些方法,或者在指令表达式中使用
方法中的this自动绑定为Vue实例;包涵了事件处理函数和普通函数

事件处理函数
methods: {     
    add(){
    this.n += 1 
  }
}

普通函数,主动在模板中调用,每次渲染就从新调用一次
data(){
  array:[1,2,3,4,5,6,7,8]
}

<template>
  <div>
    {{filter()}}
  </div> 
</template>

methods: {     
    filter() {
    return this.array.filter(i=>i%2 ===0) 
  }
}

components 组件

const vm = new Vue({})
vm是vue实例,vue对象;被使用的vue实例就叫做vue组件

创建组件方法1:使用vue文件创建

先创建Demo.vue文件,然后引用该文件
import Demo from './Demo.vue'

然后在vm里使用该组件
const vm = new Vue({
   components:{
    Frank: Demo
    }
})
等价于
new Vue({
  components:{Demo}   
}

在template里写
<Frank/>

2:用JS写vue组件,声明全局

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

不需要引入,直接在vm,template 写 <Demo2>

component 后面接的内容和 new Vue一样,但是习惯叫组件
new Vue叫实例,入口叫实例,被使用的叫组件

3:前两种结合

new Vue({
  components:{
    Frank:{
    template: `
    <div>Frank</div>`
     }
   }   
}

四个钩子

created       实例出现在内存时,被触发
mounted       实例出现在页面时,被触发
updated       实例跟新时,被触发
destroyde     实例消亡时,被触发

props 外部属性

props可以是数组或对象,用于接收来自父组件的数据;props可以是简单的数组
或者使用对象作为替代,对象允许配置高级选项,如类型检测、自定义验证和设置默认值

组件里 (由外部传的message)

<template>
    <div>
      {{message}}
    </div>
</template>

<script>
export default {
   props: ["message", "fn"]
 }; 
</script>
从外部接收一个message,并且自动绑定到this上

实例里
<Demo message = "你好 props"/>
<button @click='fn'>call fn</button>

message = "n"         字符串n
:message = "'n'"      字符串n
:message = "n"        变量n
:fn = "add"           函数 

详细资料点击:Vue 选项