Vue-1小时精通

大熙哥 2021年11月20日 89次浏览

基础

1. Vue是什么框架?

MVVM Model View ViewModel

2. 修饰符

stop 停止事件冒泡
prevent 阻止默认行为
capture 优先事件冒泡
self 不触发自己的事件
once 事件只会触发一次

3. SPA?

single page application

4. 指令

v-if 是否显示 通过DOM删除插入方式
v-for 循环创建模板内容
v-bind 绑定属性值
v-model 双向绑定
v-show 是否显示 通过DOM删除插入方式
v-on 绑定事件
v-html 插入html代码 可能遭受XSS CSRF攻击
v-once 只渲染一次
v-pre 不解析插值符号

5. 核心思想

数据驱动、组件化

6. 数据流?

单项数据流:父传递给子只能单项绑定
双向绑定:数据和页面进行相互影响
通过sync修饰符实现双向数据流的效果
原理是自动生成@update事件更新父组件的值

7. v-for的key?

vue更新渲染key作为唯一标识

8. 为什么data属性要通过方法返回?

data如果是对象,对象是引用类型,复用组件都是引用同一个,但是如果使用函数返回则会创建新的一个对象,从而复用组件不会造成组件数据冲突

9. 传值

props父向子传值$emit子向父传值

10. 生命周期

beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
beforeDestroy
destroyed

11. Vue插槽

单个插槽(默认插槽)
命名插槽
作用域插槽

12. keep-alive

keep-alive是一个内置组件,可使被包含的组件保留状态或避免重新渲染。

13. computed

属性改变后,通知计算属性重新计算

14. NextTick

nextTick可以让我们在下次DOM 更新循环结束之后执行延迟回调,用于获得更新后的 DOM

15. 在Vue中使用插件的步骤

采用ES6的import ... from ...语法或CommonJS的require()方法引入插件
使用全局方法Vue.use( plugin )使用插件

16. 组件注册

使用Vue.component

17. 自定义指令

使用Vue.directive

18. 过滤器

<!-- 在双花括号中 -->
{{ message | capitalize }}

<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>

19. transition 组件

  1. v-enter 进入过渡的开始状态
  2. v-enter-active 定义进入过渡生效时的状态
  3. v-enter-to 进入过渡的结束状态
  4. v-leave 定义离开过渡的开始状态
  5. v-leave-active 定义离开过渡生效时的状态
  6. v-leave-to 定义离开过渡的结束状态

20. 组件

name="flip-list" tag="ul"
使用name指定样式,tag指定更换为其他元素

  1. v-enter 进入过渡的开始状态
  2. v-enter-active 定义进入过渡生效时的状态
  3. v-enter-to 进入过渡的结束状态
  4. v-leave 定义离开过渡的开始状态
  5. v-leave-active 定义离开过渡生效时的状态
  6. v-leave-to 定义离开过渡的结束状态

21. 混入

选项合并、全局混入
一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。

22.

其他题目

1. Vue 实例的 data 属性,可以在哪些生命周期中获取到?

A. beforeCreate
B. created
C. beforeMount
D. mounted

BCD

2. 下列对 Vue 原理的叙述,哪些是正确的?

A. Vue 中的数组变更通知,通过拦截数组操作方法而实现
B. 编译器目标是创建渲染函数,渲染函数执行后将得到 VNode 树
C. 组件内 data 发生变化时会通知其对应 watcher,执行异步更新
D. patching 算法首先进行同层级比较,可能执行的操作是节点的增加、删除和更新

ABCD

3. 对于 Vue 中响应式数据原理的说法,下列哪项是不正确的?

A. 采用数据劫持方式,即 Object.defineProperty() 劫持 data 中各属性,实现响应式数据
B. 视图中的变化会通过 watcher 更新 data 中的数据
C. 若 data 中某属性多次发生变化,watcher 仅会进入更新队列一次
D. 通过编译过程进行依赖收集

BD

4. 下列说法不正确的是哪项?

A. key 的作用主要是为了高效地更新虚拟 DOM
B. 若指定了组件的 template 选项,render 函数不会执行
C. 使用 vm.$nextTick 可以确保获得 DOM 异步更新的结果
D. 若没有 el 选项,vm.$mount(dom) 可将 Vue 实例挂载于指定元素上

B

5. 下列关于 Vuex 的描述,不正确的是哪项?

A. Vuex 通过 Vue 实现响应式状态,因此只能用于 Vue
B. Vuex 是一个状态管理模式
C. Vuex 主要用于多视图间状态全局共享与管理
D. 在 Vuex 中改变状态,可以通过 mutations 和 actions

D

  1. 关于 Vue 组件间的参数传递,下列哪项是不正确的?
    A. 若子组件给父组件传值,可使用 $emit 方法
    B. 祖孙组件之间可以使用 provide 和 inject 方式跨层级相互传值
    C. 若子组件使用 $emit('say') 派发事件,父组件可使用 @say 监听
    D. 若父组件给子组件传值,子组件可通过 props 接受数据

B

  1. 下列关于 vue-router 的描述,不正确的是哪项?
    A. vue-router 的常用模式有 hash 和 history 两种
    B. 可通过 addRoutes 方法动态添加路由
    C. 可通过 beforeEnter 对单个组件进行路由守卫
    D. vue-router 借助 Vue 实现响应式的路由,因此只能用于 Vue

C

  1. 下列说法不正确的是哪项?
    A. 可通过 this.$parent 查找当前组件的父组件
    B. 可使用 this.$refs 查找命名子组件
    C. 可使用 this.$children 按顺序查找当前组件的直接子组件
    D. 可使用 $root 查找根组件,并可配合 children 遍历全部组件

C

  1. 下列关于 v-model 的说法,哪项是不正确的?
    A. v-model 能实现双向绑定
    B. v-model 本质上是语法糖,它负责监听用户的输入事件以更新数据
    C. v-model 是内置指令,不能用在自定义组件上
    D. 对 input 使用 v-model,实际上是指定其 :value 和 :input

C

  1. 关于 Vue 的生命周期,下列哪项是不正确的?
    A. DOM 渲染在 mounted 中就已经完成了
    B. Vue 实例从创建到销毁的过程,就是生命周期
    C. created 表示完成数据观测、属性和方法的运算和初始化事件,此时 $el 属性还未显示出来
    D. 页面首次加载过程中,会依次触发 beforeCreate,created,beforeMount,mounted,beforeUpdate,updated

D