1. 什么是vue实例?
vue实例,类似于创建一个对象,里面包含生命周期钩子函数、data、methods方法、计算属性等等;
钩子函数用来描述Vue实例从创建到销毁的整个生命周期。
beforecreate:创建实例对象之前;
created:创建实例对象之后;
beforeMount:页面挂载成功之前
Mounted:页面挂载成功之后
beforeUpdated:组件更新之前执行
updated:更新之后执行
beforeDestroy:实例销毁之前执行
destroy:实例销毁之后执行
2. new Vue()的时候做了什么?
创建vue实例,进行实例初始化。内部执行了一个_init私有函数,做了一堆初始化工作,比如initMixin(Vue)里initState(vm),这个函数里初始化了initData\initMethods\initProps等等。对data的处理就是将data中的属性的key遍历绑定至实例vm上,通过Object.defineProperty进行拦截,将真实的数据操作都转发到this.data上。
3. Vue.use()是干嘛的?
~Vue.use本身是一个函数;
~主要做了以下操作:
① 判断插件是否注册;
② 如果插件自带install属性,执行它,同时传递一个Vue构造函数作为第一个参数,以及use中的其他参数
③ 如果插件本身是函数,执行它,同时传递一个Vue构造函数作为第一个参数,以及use中的其他参数
~大部分插件本身都是一个对象,然后install中都会拿到传递来的Vue构造函数进行一些绑定操作。比如绑定组件,比如在原型上添加方法等。
4. 为什么有的库不需要使用Vue.use()
比如常见的axios引入:
import axios from "axios";
Vue.prototype.$axios = axios;
axios本身是不依赖Vue去运行的,axios本身就可以在浏览器端或者node端都能进行http请求。这里挂载到Vue原型的$axios属性上,只是为了方便使用。