八股文-Vue篇(持续更新)

八股文-Vue篇

  • 一、Vue2
    • 1. 关于生命周期
      • 1.1 生命周期有哪些?发送请求在created还是mounted?
      • 1.2 为什么发送请求不在beforeCreate里?beforeCreate和created有什么区别?
      • 1.3 在created中如何获取dom?
      • 1.4 一旦进入到组件会执行哪些生命周期?
      • 1.5 第二次或者第N次进去组件会执行哪些生命周期?
      • 1.6 父子组件生命周期执行顺序?
      • 1.7 加入keep-alive会执行哪些生命周期?
      • 1.8 你在什么情况下用过哪些生命周期?说一说生命周期使用场景?
    • 2. 关于组件
      • 2.1 组件通讯方式
      • 2.2 父组件如何直接修改子组件的值
      • 2.3 子组件如何直接修改父组件的值
      • 2.4 如何找到父组件
      • 2.5 如何找到根组件
      • 2.6 keep-alive
      • 2.7 slot插槽
      • 2.8 provide、inject
      • 2.9 如何封装组件
    • 3. 关于Vuex
      • 3.1 vuex有哪些属性
      • 3.2 vuex使用state值
      • 3.3 vuex的getters值修改
      • 3.4 vuex的mutations和actions的区别
      • 3.5 vuex持久化存储
    • 4. 关于路由
      • 4.1 路由的模式和区别
      • 4.2 子路由和动态路由
      • 4.3 路由传值
      • 4.4 路由故障
      • 4.5 $router 和 $route的区别
      • 4.6 导航守卫

一、Vue2

1. 关于生命周期

1.1 生命周期有哪些?发送请求在created还是mounted?

生命周期描述
beforeCreate组件实例被创建之前(没有dom,没有$data)
created组件实例已经完全创建(没有dom,有$data)
beforeMount组件挂载之前(没有dom,有$data)
mounted组件被挂载到实例上之后(有dom,有$data)
beforeUpdate组件数据发生变化,更新之前
updated组件数据更新之后
beforeDestroy组件实例销毁之前
destroyed组件实例销毁之后

mounted可以操作dom又可以操作data,还可以操作子组件;而在created的时候不能操作dom也不能操作子组件。
发送请求是异步任务,会在同步任务执行完毕之后执行,即获取到数据也是会在mounted执行完之后。
这个问题具体要看项目和业务情况,因为组件的加载顺序是,会先执行父组件的前3个生命周期,再执行子组件的前4个生命周期。如果业务是父组件引入子组件,并且优先加载子组件的数据,那么在父组件中当前请求要放在mounted中,让子组件的请求先去执行,让子组件的数据先加载出来。

1.2 为什么发送请求不在beforeCreate里?beforeCreate和created有什么区别?

如果请求是在methods里封装好的,在beforeCreate里是拿不到methods的方法的。
beforeCreate阶段没有$data ,拿不到methods方法,created阶段有$data,拿得到methods方法。

1.3 在created中如何获取dom?

  1. 异步代码获取,例如setTimeout
  2. 使用vue的this.$nextTick

1.4 一旦进入到组件会执行哪些生命周期?

beforeCreatecreatedbeforeMountmounted

1.5 第二次或者第N次进去组件会执行哪些生命周期?

如果当前组件加入了keep-alive,只会执行activated
如果没有加入keep-alive依然执行前四个生命周期beforeCreatecreatedbeforeMountmounted

1.6 父子组件生命周期执行顺序?

父组件 beforeCreate created beforeMount
子组件 beforeCreate created beforeMount mounted
父组件 mounted

1.7 加入keep-alive会执行哪些生命周期?

如果使用了keep-alive组件,当前组件会额外增加两个生命周期。
activated:被 keep-alive 缓存的组件激活时调用
deactivated:被 keep-alive 缓存的组件失活时调用。

如果当前组件加入了keep-alive,第一次进入这个组件会执行5个生命周期:beforeCreate created activated beforeMount mounted

1.8 你在什么情况下用过哪些生命周期?说一说生命周期使用场景?

created:单一组件进行请求
mounted:有父子组件关系的时候,进行请求;同步操作dom
activated:处理缓存
beforeDestroy:关闭页面的时候进行数据记录

2. 关于组件

2.1 组件通讯方式

父传子:

  1. v-bind绑定props。不能传孙,且有多个子组件时需要一个一个操作;子不能直接修改父组件的数据
  2. 子组件直接使用父组件数据 this.$parent。子能直接修改父组件的数据
  3. 依赖注入provide、inject。不用逐级传递,可以实现直接传递给孙

子传父:

  1. 子组件自定义事件 this.$emit
  2. 父组件直接使用子组件数据:this.$children[index].xxxthis.$refs[name].xxx

兄弟互传:

  1. EventBus($on接收方,$emit发送方)

2.2 父组件如何直接修改子组件的值

this.$children[index].xxxthis.$refs[name].xxx

2.3 子组件如何直接修改父组件的值

this.$parent.xxx

2.4 如何找到父组件

this.$parent

2.5 如何找到根组件

this.$root

2.6 keep-alive

用来缓存当前组件

2.7 slot插槽

  • 匿名插槽
  • 具名插槽
  • 作用域插槽:对组件传递 props 那样,向一个插槽的出口上传递 attributes

2.8 provide、inject

依赖注入,用来实现给后辈组件传递数据

2.9 如何封装组件

抽取复用部分内容,用slot插槽去实现父组件可以自定义部分特殊的内容;通过v-bind绑定props去实现获取父组件数据;通过自定义事件去实现给父组件传递数据。

3. 关于Vuex

3.1 vuex有哪些属性

Vuex是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间的数据共享。

  • State用来存储公共数据源。全局共享属性。
  • Mutation用于同步变更state中的数据。
  • Action用于异步变更state中的数据,但是在Action中还是要用过触发Mutation的方式间接变更数据。
  • Getter用于对Store中的数据进行加工处理形成新的数据(类似于计算属性),Store中数据发生变化,Getter中的数据也会变化。针对state数据进行二次计算。
  • moudle属性是将store分割成模块。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块。

3.2 vuex使用state值

this.$store.state.xxx

computed: { ...mapState(['全局数据名称1','全局数据名称2',...]) }
区别:使用this.$store的方式可以直接修改(不推荐),使用辅助函数的方式不能直接修改

3.3 vuex的getters值修改

getters不可以修改

3.4 vuex的mutations和actions的区别

相同点:都是来存放全局方法的;不能有return值
区别:mutation是同步的,actions是异步的;mutation是用来修改state的,action是用来提交mutation的

3.5 vuex持久化存储

vuex本身不是持久化存储,它只是一个全局数据管理仓库。

实现方式:

  1. 自己写localStorage
  2. 使用vuex-persistedstate插件

4. 关于路由

4.1 路由的模式和区别

路由模式:history、hash

区别:

  • 表象不同:hash路径有一个#,history/
  • history找不到当前页面会发送请求,而hash不会
  • 项目打包前端自测的时候,hash可以看到内容,hsitory默认情况是看不到内容的

4.2 子路由和动态路由

详请-> Vue Router基础知识整理

4.3 路由传值

详请-> Vue Router基础知识整理

4.4 路由故障

当前页跳当前页,路径不变,参数变

import Vue from 'vue'
import VueRouter from 'vue-router'// 解决路由重复跳转错误
const routerPush = VueRouter.prototype.push;
VueRouter.prototype.push = function (location) {return routerPush.call(this, location).catch(err => { })
};Vue.use(VueRouter)

4.5 $router 和 $route的区别

  • $router 路由管理对象(路由跳转)
  • $route 路由单体对象,指某一条路由(获取当前路径相关)

4.6 导航守卫

  1. 全局守卫:全局前置守卫 router.beforeEach:路由进入前;全局后置钩子 router.afterEach:路由进入后

  2. 路由独享守卫: beforeEnter 只在进入路由时触发

  3. 组件内守卫:beforeRouteEnter在渲染该组件的对应路由被验证前调用、 beforeRouteUpdate在当前路由改变,但是该组件被复用时调用、 beforeRouteLeave在导航离开渲染该组件的对应路由时调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Doris Connector 结合 Flink CDC 实现 MySQL 分库分表

1. 概述 在实际业务系统中为了解决单表数据量大带来的各种问题,我们通常采用分库分表的方式对库表进行拆分,以达到提高系统的吞吐量。 但是这样给后面数据分析带来了麻烦,这个时候我们通常试将业务数据库的分库分表同步到数据仓库时&#x…

英伟达Docker 安装与GPu镜像拉取

获取nvidia_docker压缩包nvidia_docker.tgz将压缩包上传至服务器指定目录解压nvidia_docker.tgz压缩包 tar -zxvf 压缩包执行rpm安装命令: #查看指定rpm包安装情况 rpm -qa | grep libstdc #查看指定rpm包下的依赖包的版本情况 strings /lib64/libstdc |grep GLI…

【代码随想录】【算法训练营】【第25天】 [216]组合总和III [17] 电话号码的字母组合

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 25,周六,坚持有点困难~ 题目详情 [216] 组合总和III 题目描述 216 组合总和III 解题思路 前提:组合子集问题 思路:回溯算法,剪枝…

347. 前 K 个高频元素

题目 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] 示例 2: 输入: nums [1], k 1 输出: [1] 提示&#xff1a; 1 < nums.length < 1…

基于聚类与统计检验深度挖掘电商用户行为

1.项目背景 在当今竞争激烈的电商市场中,了解用户的行为和需求对于制定成功的市场策略至关重要,本项目通过建立RFM模型、K-Means聚类模型,将1000个用户进行划分,针对不同类的用户,提出不同的营销策略,最后通过统计检验来探究影响用户消费行为的因素和影响用户上网行为的…

Pointnet++改进即插即用系列:全网首发ConvolutionalGLU|即插即用,提升特征提取模块性能

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入ConvolutionalGLU,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二

DBeaver连接Oracle报错:ORA-12514

Listener refused the connection with the following error:ORA-12514, TNS:listener does not currently know of service requested inconnect descriptor ———————————————— 1.报错信息2.配置正确结语 ———————————————— 如果是第一次连接Or…

Spring 使用SSE(Server-Sent Events)学习

什么是SSE SSE 即服务器发送事件&#xff08;Server-Sent Events&#xff09;&#xff0c;是一种服务器推送技术&#xff0c;允许服务器在客户端建立连接后&#xff0c;主动向客户端推送数据。 SSE 基于 HTTP 协议&#xff0c;使用简单&#xff0c;具有轻量级、实时性和断线重…

Go微服务: 基于rocketmq:5.2.0搭建RocketMQ环境,以及示例参考

概述 参考最新官方文档&#xff1a;https://rocketmq.apache.org/zh/docs/quickStart/03quickstartWithDockercompose以及&#xff1a;https://rocketmq.apache.org/zh/docs/deploymentOperations/04Dashboard综合以上两个文档来搭建环境 搭建RocketMQ环境 1 ) 基于 docker-c…

速通数据挖掘课程

速通 数据挖掘课程 大的分类 标签预测&#xff08;分类&#xff09; 和 数值预测&#xff08;预测呀&#xff09; 监督 非监督 是否 需要预先训练模型 然后预测 聚类&#xff1a;拿一个比一个&#xff0c;看看相似否&#xff0c;然后归一类 数据四种类型 数据属性有四种&…

SpringBoot读取指定yaml文件内容

前言 在项目启动时&#xff0c;需要读取一些业务上大量的配置文件&#xff0c;用来初始化数据或者配置设定值等&#xff0c;我们都知道使用SpringBoot的ConfigurationProperties注解 application.yml配置可以很方便的读取这些配置&#xff0c;并且映射成对象很方便的使用&…

simplicity studio 5 修改设备电压

工装板的soc额定输入电压为1.5v&#xff0c;而常态下ttl高电平为5v/3.3v&#xff0c;所以需要设定烧录程序时的设备电压。 确保连接设备&#xff0c;并且被识别。 进入管理员模式。 烧录.hex文件快捷方法。

人工智能芯片封装技术及应用趋势分析

简介人工智能&#xff08;AI&#xff09;、物联网&#xff08;IoT&#xff09;和大数据的融合正在开创全新的智能时代&#xff0c;以智能解决方案改变各行各业。人工智能芯片在支持人工智能学习和推理计算方面发挥着非常重要的作用&#xff0c;可实现各行各业的多样化应用。 本…

HTML+CSS+JS 动态登录表单

效果演示 实现了一个登录表单的背景动画效果,包括一个渐变背景、一个输入框和一个登录按钮。背景动画由多个不同大小和颜色的正方形组成,它们在页面上以不同的速度和方向移动。当用户成功登录后,标题会向上移动,表单会消失。 Code <!DOCTYPE html> <html lang=&q…

电阻、电容和电感测试仪设计

在现代化生产、学习、实验当中,往往需要对某个元器件的具体参数进行测量,在这之中万用表以其简单易用,功耗低等优点被大多数人所选择使用。然而万用表有一定的局限性,比如:不能够测量电感,而且容量稍大的电容也显得无能为力。所以制作一个简单易用的电抗元器件测量仪是很…

代码随想录算法训练营第二十九天|LeetCode491 非递减子序列、LeetCode46 全排列、LeetCode47 全排列Ⅱ

题1&#xff1a; 指路&#xff1a;491. 非递减子序列 - 力扣&#xff08;LeetCode&#xff09; 思路与代码&#xff1a; 对于这个题我们应该想起我们做过的子集问题&#xff0c;就是在原来的问题上加一个去重操作。我们用unordered_set集合去重&#xff0c;集合中使用过的元…

智能视频监控平台LntonCVS视频汇聚共享平台智慧楼宇应用方案

随着城市经济的迅速发展&#xff0c;大中型城市的写字楼数量不断增加。在像香港、台北、上海、北京等大城市&#xff0c;写字楼的安保成本相当高。为了降低这一成本&#xff0c;越来越多的物业公司开始采用技术手段。写字楼安防监控系统便是其中之一&#xff0c;它利用安全防范…

【control_manager】无法加载,gazebo_ros2_control 0.4.8,机械臂乱飞

删除URDF和SDRF文件中的特殊注释#, !,&#xff1a; xacro文件解析为字符串时出现报错 一开始疯狂报错Waiting for /controller_manager node to exist 1717585645.4673686 [spawner-2] [INFO] [1717585645.467015300] [spawner_joint_state_broadcaster]: Waiting for /con…

java开发常用代码

基础类型转换 详情见&#xff1a;https://blog.csdn.net/sinat_32502451/article/details/139417740 BigDecimal计算&#xff1a; 涉及金额之类的运算&#xff0c;不要用 Double、Float 这些类型&#xff0c;用 BigDecimal 才能精确计算。 详情见&#xff1a; https://blog.…

002 Spring中Bean的生命周期

文章目录 Java对象的实例化和Spring中Bean的实例化对象实例化&#xff08;Instantiation&#xff09;&#xff1a;Spring中Bean的实例化&#xff1a; Java对象的初始化和Spring中Bean的初始化Java对象的初始化&#xff1a;Spring中Bean的初始化&#xff1a; Java对象的完整生命…