1.vue的生命周期
beforeCreate()
(创建前) 在数据观测和初始化事件还未开始created()
(创建后) 完成数据观测,属性和方法的运算,初始化事件,$el属性还没有显示出来beforeMount()
(载入前) 在挂载开始之前被调用,相关的render函数首次被调用。实例已完成以下的配置:编译模板,把data里面的数据和模板生成html。注意此时还没有挂载html到页面上。mounted()
(载入后) 在el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用。实例已完成以下的配置:用上面编译好的html内容替换el属性指向的DOM对象。完成模板中的html渲染到html页面中。此过程中进行ajax交互。beforeUpdate()
(更新前) 在数据更新之前调用,发生在虚拟DOM重新渲染和打补丁之前。可以在该钩子中进一步地更改状态,不会触发附加的重渲染过程。updated()
(更新后) 在由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作。然而在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环。该钩子在服务器端渲染期间不被调用。beforeDestroy()
(销毁前) 在实例销毁之前调用。实例仍然完全可用。destroyed()
(销毁后) 在实例销毁之后调用。调用后,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务器端渲染期间不被调用activated()
触发时机:keep-alive组件激活时使用(keep-live的钩子函数)deactivated()
触发时机:keep-alive组件停用时调用;(keep-live的钩子函数)
2.vue的都有哪些通信方式
props
父组件通过props的方式向子组件传递$emit
子组件通过自定义事件向父组件传递数据$on
vuex
通过状态管理$attrs
包含了父作用域中不被 prop 所识别 (且获取) 的特性绑定 (class 和 style 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过 v-bind="$attrs" 传入内部组件。通常配合 interitAttrs 选项一起使用。$listeners
包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。它可以通过 v-on="$listeners" 传入内部组件provide/inject
provide祖先组件的实例,然后在子孙组件中注入依赖,这样就可以在子孙组件中直接修改祖先组件的实例的属性,不过这种方法有个缺点就是这个实例上挂载很多没有必要的东西比如 props,methods$parent/$children/ref
访问父/子的实例和访问DOM元素
3.vue中如何使用 axios进行跨域访问服务器
module.exports={
devServer:{
proxy:{
'/':{
target:'目标服务器',
changeOrigin:true//是否开启跨域
}
}
}
}
4.vue中的指令以及作用
v-if
v-if是条件渲染指令,它根据表达式的真假来删除和插入元素v-show
v-show不管条件是否成立,都会渲染html,只是改变元素的dispaly属性来显示隐藏元素
。v-show和v-if区别
。v-show不管条件是否成立,都会渲染html,而v-if只有条件成立才会渲染。v-else
v-else指令与v-if同时使用,v-if条件不成立则会显示v-else内容v-for
v-for指令基于一个数组渲染一个列表,它和JavaScript的遍历语法相似v-bind
v-bind动态地绑定一个或多个特性,可以在其名称后面带一个参数,中间放一个冒号隔开,这个参数通常是HTML元素的特性(attribute)v-on
v-on用于监听DOM事件,用法和v-bind类似,例如给button添加点击事件可简写为@
5.什么是MVVM
MVVM是Model-View-ViewModel的缩写。MVVM是一种设计思想。Model 层代表数据模型,也可以Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现来,ViewModel 是一个同步View 和 Model的对象(桥梁)。在MVVM架构下,View 和 Model 之间并没直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。ViewModel 通过双向数据定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为涉因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据态维护完全由 MVVM 来统一管理。