Strive|说你想说

vuePress-theme-reco WEIXUFENG    2020 - 2026
Strive|说你想说 Strive|说你想说
主页
分类
  • 趣味杂谈
  • 技术面试
  • 学习笔记
  • 闲来没事
  • 技术笔记
  • 学习工具
标签
关于
个人作品
  • 图床 (opens new window)
  • 后台模板vue 2.0 (opens new window)
  • 后台模板vue 3.0 (opens new window)
工具大全
  • 身份证号银行卡号生成器 (opens new window)
  • 统一社会信用代码生成 (opens new window)
  • 图片压缩 (opens new window)
  • 在线转换图像文件 (opens new window)
  • 在线制作ico图标 (opens new window)
时间轴
author-avatar

WEIXUFENG

15

文章

14

标签

主页
分类
  • 趣味杂谈
  • 技术面试
  • 学习笔记
  • 闲来没事
  • 技术笔记
  • 学习工具
标签
关于
个人作品
  • 图床 (opens new window)
  • 后台模板vue 2.0 (opens new window)
  • 后台模板vue 3.0 (opens new window)
工具大全
  • 身份证号银行卡号生成器 (opens new window)
  • 统一社会信用代码生成 (opens new window)
  • 图片压缩 (opens new window)
  • 在线转换图像文件 (opens new window)
  • 在线制作ico图标 (opens new window)
时间轴
  • 🥰热爱、忠于
  • 🤯前端面试-JS篇
  • 🤯前端面试-CSS篇
  • 🤯前端面试-Vue篇
    • Vue2.0 面试-1
  • 🎫JavaScript技巧
  • 🎫CSS技巧
  • 🎫学习与认识 VUE
  • 🔨Technology
  • 🔨Tool

Vue2.0 面试-1

vuePress-theme-reco WEIXUFENG    2020 - 2026

Vue2.0 面试-1

WEIXUFENG 2023-02-11 面试Vue

# Vue 面试

# 1. 有哪些生命周期

系统自带: beforeCreate created beforeMount mounted beforeUpdate updated beforeDestroy destroyed

# 2. 一旦进入到页面或者组件,会执行哪些生命周期,顺序。

beforeCreate created beforeMount mounted

# 3. 在哪个阶段有$el,在哪个阶段有$data

beforeCreate 啥也没有
created  有data没有el
beforeMount 有data没有el
mounted 都有

# 4. 如果加入了 keep-alive 会多俩个生命周期

activated、deactivated

# 5. 如果加入了 keep-alive,第一次进入组件会执行哪些生命?

beforeCreate created beforeMount mounted activated

# 6. 如果加入了 keep-alive,第二次或者第 N 次进入组件会执行哪些生命周期?

只执行一个生命周期:activated

# 7. 谈谈你对 keep-alive 的了解

可以从两方面回答:

  1. 是什么 vue 系统自带的一个组件,功能:是来缓存组件的。===》提升性能
  2. 使用场景 就是来缓存组件,提升项目的性能。具体实现比如:首页进入到详情页,如果用户在首页每次点击都是相同的,那么详情页就没必要请求 N 次了,直接缓存起来就可以了,当然如果点击的不是同一个,那么就直接请求。

# 8. v-if 和 v-show 区别

可以从两方面回答:

  1. 展示形式不同 v-if 是 创建一个 dom 节点 v-show 是 display:none 、 block

  2. 使用场景不同 初次加载 v-if 要比 v-show 好,页面不会做加载盒子 频繁切换 v-show 要比 v-if 好,创建和删除的开销太大了,显示和隐藏开销较小

# 9. 组件通信方式

很简单两张图 vue1 vue2)

# 10. 再说一下 Computed 和 Watch

Computed本质是一个具备缓存的 watcher,依赖的属性发生变化就会更新视图。 适用于计算比较消耗性能的计算场景。当表达式过于复杂时,在模板中放入过多逻辑会让模板难以维护,可以将复杂的逻辑放入计算属性中处理。

Watch没有缓存性,更多的是观察的作用,可以监听某些数据执行回调。当我们需要深度监听对象中的属性时,可以打开 deep:true 选项,这样便会对对象中的每一项进行监听。这样会带来性能问题,优化的话可以使用字符串形式监听,如果没有写到组件中,不要忘记使用 unWatch 手动注销哦。

# 11. 组件中的 data 为什么是一个函数

v-model 本质就是一个语法糖,可以看成是 value + input 方法的语法糖。 可以通过 model 属性的 prop 和 event 属性来进行自定义。原生的 v-model,会根据标签的不同生成不同的事件和属性。

# 12. 虚拟 Dom 以及 key 属性的作用

由于在浏览器中操作 DOM 是很昂贵的。频繁的操作 DOM,会产生一定的性能问题。这就是虚拟 Dom 的产生原因。 Vue2 的 Virtual DOM 借鉴了开源库 snabbdom 的实现。 Virtual DOM 本质就是用一个原生的 JS 对象去描述一个 DOM 节点。是对真实 DOM 的一层抽象。(也就是源码中的 VNode 类,它定义在 src/core/vdom/vnode.js 中。) VirtualDOM 映射到真实 DOM 要经历 VNode 的 create、diff、patch 等阶段。 「key的作用是尽可能的复用 DOM 元素。」 新旧 children 中的节点只有顺序是不同的时候,最佳的操作应该是通过移动元素的位置来达到更新的目的。 需要在新旧 children 的节点中保存映射关系,以便能够在旧 children 的节点中找到可复用的节点。key 也就是 children 中节点的唯一标识。