1.什么是mvvm?
vm(视图模型层)通过接口从后台m层请求数据,实现m和v层数据的双向绑定
2.mvvm 和 mvc 区别?
mvvm本质上就是mvc的改进版,将c层替换成vm,更好的现了前后端的分离
3.vue 的优点是什么?
1.低耦合
2.可重用性
3.独立开发
4.可测试
4.请详细说下你对 vue 生命周期的理解?
总共分为 8 个阶段创建前/后,载入前/后,更新前/后,销毁前/后。
5.组件之间的传值?
1.父组件通过标签上面定义传值
2.引入子组件
3.子组件通过props方法接受数据
6.子组件向父组件传递数据
1.子组件通过$emit方法传递参数
2.引入子组
3.接受父组件传值
7.active-class 是哪个组件的属性?
vue-router 模块的 router-link 组件。
8.嵌套路由怎么定义?
一级路由里面使用children数组配置子路由
9.路由之间跳转?
1.声明式(标签跳转) router-link :to=“index”
2.编程式( js 跳转) router.push(‘index’)
10.懒加载(按需加载路由)(常考)
webpack 中提供了 require.ensure()来实现按需加载
11.vuex 是什么?怎么使用?哪种功能场景使用它?
vue 框架中状态管理。在 main.js 引入 store,注入。新建了一个目录 store,…… export 。场景有:单页应用中,组件之间的状态。音乐播放、登录状态、加入购物车
12.vue-router 有哪几种导航钩子?
全局导航钩子
router.beforeEach(to, from, next),
router.beforeResolve(to, from, next),
router.afterEach(to, from ,next)
组件内钩子
beforeRouteEnter,
beforeRouteUpdate,
beforeRouteLeave
单独路由独享组件
beforeEnter
13.自定义指令(v-check, v-focus) 的方法有哪些? 它有哪些钩子函数? 还有哪些钩子函数参数
全局定义指令:在 vue 对象的 directive 方法里面有两个参数, 一个是指令名称, 另一个是函数。
组件内定义指令:directives
钩子函数: bind(绑定事件出发)、inserted(节点插入时候触发)、update(组件内相关更新)
钩子函数参数: el、binding
14. 说出至少 4 种 vue 当中的指令和它的用法
v-if(判断是否隐藏)、v-for(把数据遍历出来)、v-bind(绑定属性)、v-model(实现双向绑定)
15.vue 的双向绑定的原理是什么(常考)
是采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty()来劫持各个属性的 setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调
vuex 相关
16.vuex 有哪几种属性
5 种,state、getter、mutation、action、module
17.vuex 的 store 特性是什么
vuex 就是一个仓库,仓库里放了很多对象。其中 state 就是数据源存放地,对应于一般 vue 对象里面的 data
state 里面存放的数据是响应式的,vue 组件从 store 读取数据,若是 store 中的数据发生改变,依赖这相数据的组件也会发生更新
它通过 mapState 把全局的 state 和 getters 映射到当前组件的 computed 计算属性
18.vuex 的 getter 特性是什么
getter 可以对 state 进行计算操作,它就是 store 的计算属性
虽然在组件内也可以做计算属性,但是 getter 可以在多给件之间复用
如果一个状态只在一个组件内使用,是可以不用 getters
19.vuex 的 mutation 特性是什么
更改Vuex的store中的状态的唯一方法是提交mutation
20.vuex 的 action 是什么?
action 类似于 muation, 不同在于:action 提交的是 mutation,而不是直接变更状态action 可以包含任意异步操作
21.vue 中 ajax 请求代码应该写在组件的 methods 中还是 vuex 的 action 中
如果请求来的数据不是被其他组件公用,仅在请求的组件内使用,就不需要放入 vuex 的 state 里
如果被其他地方复用,请求放入 action 里,方便复用,并包装成 promise 返回
22.不用 vuex 会带来什么问题
可维护性会下降,可读性下降,增加耦合
23.vuex 原理
vuex 仅仅是作为 vue 的一个插件而存在,不像 Redux,MobX 等库可以应用于所有框架,vuex 只能使用在 vue 上,很大的程度是因为其高度依赖于 vue 的 computed 依赖检测系统以及其插件系统,