(适趣AI)Vue笔试题

📑前言

本文主要是【Vue】——(适趣AI)Vue笔试题的文章,如果有什么需要改进的地方还请大佬指出⛺️

🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:CSDN主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见

目录

    • 📑前言
    • 1.请简述Vue.js的生命周期函数及其执行顺序
    • 2.Vue.js中的v-bind指令和v-model指令有什么区别?
    • 3.简述Vue.js的组件通信方式及其优缺点。
      • 3.1 props
      • 3.2 provide inject
      • 3.3 Vuex
    • 4.Vue.js如何实现父子组件之间的数据传递
    • 5.请简述Vue.js中的响应式原理。
    • 6.如何在Vue.js中实现路由跳转?
    • 7.Vue.js中的computed和watch有什么区别?
    • 8.Vue.js中的v-for指令和v-if指令有什么区别
    • 9.请简述Vue.js中的mixins和extends的作用及其区别。
      • mixins
      • extends
      • 区别
    • 10.Vue.js中的keep-alive组件有什么作用? 如何使用
    • 📑文章末尾

1.请简述Vue.js的生命周期函数及其执行顺序

  • Vue生命周期函数有8个。
  • Vue生命周期函数有四个阶段:
    • 1.实例创建之前/之后
    • 2.组件挂载之前/之后
    • 3.数据改变视图之前/之后
    • 4.实例销毁之前/之后。

顺序:

  • beforeCreate,created
  • beforeMount,mounted
  • beforeUpdate,updated
  • beforeDestory,destoryed

扩展:每个钩子可以做什么:

1.实例创建之前/之后:

  • beforeCreate(实例创建之前):每个页面都是一个Vue实例,这时实例还没创建,所以data还不知道,也不能用watch监听,这时data和methods的钩子函数都不能使用。
  • created(实例创建之后):实例已经创建完,可以得到data,调用watch,但是页面还是空白的,是最早可以使用data和methods的钩子函数。

2.组件挂载之前/之后:

  • beforeMount(组件挂载之前):页面挂载前,这时节点还没渲染完成。
  • mounted(组件挂载之后): 页面挂载完成,页面的内容已经渲染出了,也可以访问到dom,此时模版渲染完成。

created和mounted的区别:

  • created:实例创建完成之后,最早可以使用data和methods的钩子函数
  • mounted: 组件挂载之后,此时模版渲染完成,挂载的节点。
  • created和mounted都可以请求axios

3.数据改变视图更新之前/之后:

  • beforeUpdate(数据改变更新视图之前): 数据改变更新视图之前,就是虚拟DOM打补丁之前,这时访问到的DOM还有原有的DOM。
  • updated(数据改变视图更新之后):数据改变视图更新之后。

4.实例销毁之前/之后:

  • beforeDestory(实例销毁之前):在destory阶段,对data的改变不会再触发周期函数,说明此时Vue实例已经解除了事件监听以及和dom的绑定,但是dom结构依然存在,是最后一次可以使用data和methods的钩子函数。
  • destoryed(实例销毁之后):实例已经被完全销毁。

执行顺序:

2.Vue.js中的v-bind指令和v-model指令有什么区别?

  • v-bind是一个单向数据绑定,映射关系:Model->View,我们不需要额外的DOM操作,只需要进行Model的操作就可以实现视图的联动更新。
  • v-model是一个双向数据绑定,映射关系:View接受的数据传给model,model的数据再传给view。把model绑定到view的同时也将view绑定到model上,这样就既可以通过更新model来实现view的自动更新,也可以通过view来实现model数据的更新。所以,当我们用javascript代码更新model时,view就会自动更新,反之,如果用户更新了view,model的数据也自动被更新了。

3.简述Vue.js的组件通信方式及其优缺点。

3.1 props

  • props通信方式是大家常见的通信类型,也是父子组件通讯的常用方式,用法是直接在子组件标签中绑定属性和方法,用props拿到声明的属性。对于父组件的方法,可以通过this.$emit触发
  • 优点: props传递数据的优点显而易见,可以对props数据进行数据计算、数据监听等处理,十分灵活方便,但这里单单只是父子一层。
  • 缺点:子组件虽然不能直接对父组件prop进行重新赋值,但父组件是引用类型的时候,子组件可以修改父组件的props下面的属性。

3.2 provide inject

  • 此方法是在父组件上通过provide 将方法,属性,或者是自身实例暴露出去,子孙组件、插槽组件,甚至是子孙组件的插槽组件,通过inject把父辈provide引进来。提供给自己使用,很经典的应用的案例就是element-ui中el-form和el-form-item

3.3 Vuex

  • vuex算是vue中处理复杂组件通信的最佳方案,毕竟vue和vuex一个娘胎里出来的。而且vuex底层也是用vue实现的。
  • 优点:1.根本解决复杂组件的通信问题 2.支持异步组件通信
  • 缺点:流程相比较稍微复杂。

4.Vue.js如何实现父子组件之间的数据传递

第一种:父组件->子组件

父组件通过 :area方式,将areaData的数据传递给子组件,子组件通过props接收父组件传递的数据。

第二种: 子组件 ->父组件

子组件通过this.$emit(‘方法名’,‘数据’)将数据传递给父组件,父组件执行@change=‘handleChange’,handleChange方法的参数step,就是子组件传递过来的数据。

5.请简述Vue.js中的响应式原理。

vue3响应式原理

vue3.x为数据响应式,是通过proxy实现的。

  • 相关设计模式
    • 观察者模式(Observer pattern):指的是在对象间定义一个一对多(被观察者与多个观察者)的关联,当一个对象改变了状态,所有其他相关对象都会被通知并且自动刷新。
    • 发布订阅模式(Publish-subscribepattern):可认为是为观察者模式解耦的进阶版本。
    • 在发布者和订阅者之间添加消息中心,所有的消息均通过消息中心管理,而发布者与订阅者不会直接联系,实现了两者的解耦。

6.如何在Vue.js中实现路由跳转?

1.router-link (实现跳转最简单的方法)

<router-link to='需要跳转到的页面的路径'>

2.this.$router.push(‘vue路由’)

3.this.router.replace(‘vue路由’)

7.Vue.js中的computed和watch有什么区别?

在vue.js中,computed和watch是两个常用的属性,用于处理数据的监听和响应。

  • 1.computed属性: computed属性用于定义一个计算属性,它根据其他属性的值计算出一个新的值。计算属性是基于他们的依赖进行缓存的,只有当依赖发生变化时,计算属性才会重新计算。
new Vue({data: {firstName: 'John',lastName: 'Doe'},computed: {fullName: function() {return this.firstName + ' ' + this.lastName;}}
});
  • 2.watch属性:watch属性用于监听一个属性的变化,并在变化发生时执行响应的操作。与computed不同,watch属性是一个对象,需要为需要监听的属性提供一个处理函数。

    new Vue({data: {firstName: 'John',lastName: 'Doe',fullName: ''},watch: {firstName: function(newVal, oldVal) {this.fullName = newVal + ' ' + this.lastName;},lastName: function(newVal, oldVal) {this.fullName = this.firstName + ' ' + newVal;}}
    });

    computed和watch都可以用于监听属性的变化并执行相应的操作

    computed和watch的区别

    • computed是基于它们的依赖进行缓存的,只有当依赖发生变化时,计算属性才会重新计算;而watch则是在属性变化时立即执行相应的操作。
    • computed适用于那些需要根据其他属性计算出一个新值的场景;而watch适用于那些需要在属性变化时执行异步或开销较大的操作的场景。
    • computed可以像属性一样直接访问,而不需要调用函数;而watch则需要定义处理函数,并在函数中执行相应的操作。

8.Vue.js中的v-for指令和v-if指令有什么区别

  • v-if指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回true值的时候被渲染。
  • v-for指令基于一个数组来渲染一个列表。v-for指令需要使用item in items形式的特殊语法,其中items是源数据数组或者对象,而item则是被迭代的数组元素的别名。
  • 在v-for的时候,建议设置key值,并且保证每个key值都是独一无二的,这方便diff算法进行优化。

9.请简述Vue.js中的mixins和extends的作用及其区别。

mixins

  • mixins选项接受一个混入对象的数组。这些混入对象可以像正常的实例对象一样包含实例选项。这些选项将会被合并到最终的选项中,使用的是和Vue.extend()一样的选项合并逻辑。

    mixins的几个规则:

    • 一、触发生命周期钩子函数时,先触发mixins组件中的钩子,再调用组件自身的函数。
    • 二、当mixins数组中有watch,混入的组件中也存在watch,而且watch中的key相同时,混入组件中的watch会先触发,而后再是组件中的watch触发
    • 三、虽然也能在建立mixin时添加data、template属性,但当组件自身也拥有此属性时以本身为准,从这一点也能看出制做者的用心(扩充)。
    • 四、data、methods内函数、components和directives等键值对格式的对象均以组件自身或实例为准,组件自身没有定义才会去mixins混入的组件中去找。
    • 五、watch,mixins数组中的组件和组件自身的watch会合并在一个数据中,mixins中的组件中的watch会先运行,而后再是组件自己的watch
    • 六、mixins选项合并:当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”。数据对象在内部会进行递归合并,在有同名的keys时以组件数据优先。

    extends

    • 允许声明扩展另一个组件(可以是一个简单的选项对象或构造函数),而无需使用Vue.extend,这主要是为了便于扩展单文件组件。
    • extends与mixins相似;合并规则和mixins一致,extends容许声明扩展另外一个组件(能够是一个简单的选项对象或构造函数),而无需使用Vue.extend。这主要是为了便于扩展单文件组件。
    • mixins和extends是为了扩展组件,均可以理解为继承。

区别

  • 1.mixins接收对象数组(可理解为多继承),extends接收的是对象(可理解成单继承)
  • 优先级>extends>mixins,继承钩子函数的时候,是不进行覆盖的,extends的钩子函数先触发,而后再是mixins的钩子函数触发,最后就是组件自身的钩子函数触发。
  • mixins类似于面向切面的编程(AOP),extends类似于面向对象的编程。

10.Vue.js中的keep-alive组件有什么作用? 如何使用

  • keep-alive是vue的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁他们,和transition相似,keep-alive是一个抽象组件:它自身不会渲染成一个DOM元素,也不会出现在父组件链中。

作用

  • 在组件切换过程中将状态保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体验性。

使用

1.Props

  • include - 字符串或正则表达式。只有名称匹配的组件会被缓存。
  • exclude - 字符串或正则表达式。任何名称匹配的组件都不会被缓存。
  • max - 数字。最多可以缓存多少组件实例。

2.生命周期函数

1.activated

  • 在keep-alive组件激活时调用
  • 该钩子函数在服务器端渲染期间不被调用

2.deactivated

  • 在keep-alive组件停用时调用
  • 该钩子在服务器渲染期间不被调用

3.缓存所有页面

  • 1.在App.vue里面

4.根据条件缓存页面

  • 1.在App.vue里面

5.结合Router,缓存部分页面

  • 1.在router目录下的index.js文件里
  • 在App.vue里面

📑文章末尾

在这里插入图片描述

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

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

相关文章

C++——类型转换

在文章的开始&#xff0c;先祝大家牢大年快乐 C语言中的类型转换 在C语言中&#xff0c;如果赋值运算两边类型不同&#xff0c;则会发生类型转换。一般来说&#xff0c;C语言有两种形式的类型转换&#xff1a;隐式转换和显式转换。 隐式转换&#xff0c;就是编译器自动根据其…

YOLOv8改进 | 主干篇 | EfficientNetV2均衡缩放网络改进特征提取层

一、本文介绍 这次给大家带来的改进机制是EfficientNetV2,其在其V1版本通过均衡地缩放网络的深度、宽度和分辨率,以提高卷积神经网络的性能的基础上,又提出了一种改进的渐进式学习方法,通过在训练过程中逐步增加图像尺寸并适应性调整正则化来加快训练速度,同时保持准确性…

小白入门基础 - spring Boot 入门

1.简介 spring Boot是为了简化java的开发流程而构建的&#xff0c;即使是使用springMVC框架&#xff0c;也依然需要大量配置和依赖导入&#xff0c; 这无疑是繁琐的&#xff0c;spring Boot采用了”习惯由于配置“的原则&#xff0c;进行一键化部署&#xff0c;这样极大…

214.【2023年华为OD机试真题(C卷)】测试用例执行计划(排序题-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-测试用例执行计划二.解题思路三.题解代码Pytho…

Java解决峰与谷问题

Java解决峰与谷问题 01 题目 在一个整数数组中&#xff0c;“峰”是大于或等于相邻整数的元素&#xff0c;相应地&#xff0c;“谷”是小于或等于相邻整数的元素。例如&#xff0c;在数组{5, 8, 4, 2, 3, 4, 6}中&#xff0c;{8, 6}是峰&#xff0c; {5, 2}是谷。现在给定一个…

三英战吕布web3游戏项目启动全流程

项目是一个学习相关的很好的例子并且开源&#xff0c;原本的项目是连接goerli网络&#xff0c;但我把它修改为可连接ganache网络的项目了&#xff0c;更方便启动。 智能合约部分 进入文件 hardhat.config.js &#xff0c;增加一个钱包私钥 2.执行npm install 3.测试合约 npx ha…

【Linux】linux配置静态IP、动态IP方法汇总

1、systemd-networkd 1.1 说明 systemd-networkd是systemd 的一部分 ,负责 systemd 生态中的网络配置部分(systemd-networkd.service, systemd-resolved.service)。使用 systemd-networkd,你可以为网络设备配置基础的 DHCP/静态IP网络等,还可以配置虚拟网络功能,例如网桥…

在pycharm中jupyter连接上了以后显示无此库,但是确实已经安装好了某个库,使用python可以跑,但是使用ipython就跑不了

今天遇到一个事情&#xff0c;就是用pycharm的jupyter时&#xff0c;连接不上&#xff0c;后来手动连接上了以后&#xff0c;发现环境好像不对。 一般来说&#xff0c;这里会是python3&#xff0c;所以里面的环境也是普通python的环境&#xff0c;并没有我下载的库&#xff0c;…

金和OA C6 SAP_B1Config.aspx 未授权漏洞

产品介绍 金和网络是专业信息化服务商,为城市监管部门提供了互联网监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。 漏洞描述 金和OA C6 SAP_B1Config.aspx接口 未授权&#xff0c;攻击者可通过此漏洞获取数据库账户密码等敏…

2015年电赛控制类—STM32风力摆控制系统资料+源程序

目录 一、项目背景 二、主要研究内容 三、总体思路与研究方案 四、主要研究结果 五、程序 六、图片 一、项目背景 风力摆控制系统是一种利用风力控制物体做简谐运动的系统&#xff0c;风力的利用和控制技术在我国的发展尚未完善&#xff0c;国内正处于起步阶段。风力摆的…

idea设置注释在鼠标当前位置,使其不从顶格位置添加注释

idea设置注释在鼠标当前位置&#xff0c;使其不从顶格位置添加注释 默认情况下&#xff0c;注释都是从改行的顶格开始&#xff0c;看起来不太美观而且不易清除分级 设置让其从代码处开始&#xff0c;步骤&#xff1a;File–>Sttings–>Editor–>Code Style &#xff…

Mysq之——分库分表

Mysq之——分库分表 简介分库分表的方式垂直分表垂直分库水平分库水平分表 图解&#xff1a;垂直分表与水平分表&#xff08;分库类似&#xff09;分库分表带来的问题 简介 分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题&#xff0c;将原来独立的数据库拆分成…

[英语学习][24][Word Power Made Easy]的精读与翻译优化

[序言] 译者的这次翻译, 中规中矩, 就是遗漏了2个单词没有翻译出来 [英文学习的目标] 提升自身的英语水平, 对日后编程技能的提升有很大帮助. 希望大家这次能学到东西, 同时加入我的社区讨论与交流英语相关的内容. [原著英文与翻译版对照][第22页] This book is designed…

IMS SIP register消息中的Contact header field

SIP register中的Contact还要承载User Agent的能力信息。 实网下抓取的UE log如上&#xff0c;下面就主要看下Contact header field要包含的内容及其含义。 Contact header field设置为包括 UE IP地址或FQDN的SIP URI。 如上图contact中sip:69a5de6a-a03e-46d6-ad7a-b0d974c8f…

【Synopsys工具使用】2.Verdi的使用

文章目录 用VCS生成波形文件并用Verdi打开生成fsdb文件使用Verdi查看逻辑原理图 用VCS生成波形文件并用Verdi打开 编写Makefile文件&#xff1a; all:find com find:find -name "*.v" > file.list com: …

怎么快速筛选查看postfix的邮件记录

现状 通过分析日志获取记录 1.多个收件人时&#xff0c;日志有多行&#xff0c;而且不宜读 2.日志中默认没有邮件主题信息 3.日志中默认没有年的信息 解决办法 小编今天发现了一个不错的开源小命令&#xff0c;查看和下载请点击&#xff1a;postfixlogparse 直接下载下来…

计算机Java项目|Springboot疫情网课管理系统

项目编号&#xff1a;L-BS-ZXBS-07 一&#xff0c;环境介绍 语言环境&#xff1a;Java: jdk1.8 数据库&#xff1a;Mysql: mysql5.7 应用服务器&#xff1a;Tomcat: tomcat8.5.31 开发工具&#xff1a;IDEA或eclipse 二&#xff0c;项目简介 疫情网课也都将通过计算机…

【鸿蒙4.0】harmonyos Day 01

一. 初次使用鸿蒙原生编译器Dev Ecostudio创建一个新工程&#xff08;项目&#xff09;&#xff0c;控制台报错&#xff1a;ohpm ERROR: NOTFOUND package "ohos/hypium" not found from all the registries https://repo.harmonyos 这个错误应该是一些配置没下载成…

python小技巧

使用列表解析式&#xff08;List Comprehension&#xff09;快速创建列表&#xff0c;例如&#xff1a;[x for x in range(10)] 使用enumerate()函数遍历列表时获取索引和值&#xff0c;例如&#xff1a; for i, value in enumerate(my_list): print(i, value) 使用zip()函数…

2 万字详解,吃透 ES!

生活中的数据 搜索引擎是对数据的检索&#xff0c;所以我们先从生活中的数据说起。 我们生活中的数据总体分为两种&#xff1a;结构化数据 和 非结构化数据 。 结构化数据 &#xff1a;也称作行数据&#xff0c;是由二维表结构来逻辑表达和实现的数据&#xff0c;严格地遵循…