神魔?居然还有人认为这些初中级VUE面试题简单!!?

本文主要是介绍神魔?居然还有人认为这些初中级VUE面试题简单!!?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

上次写了一篇

不会吧!都2020年了你还不会这些VUE面试题?

我遇到的一面的面试题,有小伙伴觉得这些题太easy了

 

我反思!!

今天总结了一些比较新的VUE面试题,适用于初中级的面试者,也是我在面试中遇到概率比较高的题目


「面对疾风吧!!」

1.keep-alive的作用是什么?

<keep-alive>是Vue的内置组件,能够缓存组件,防止重复渲染页面,提高用户体验,同时可以很大程度上减少接口请求,减小服务器压力。

比如: 有一个列表页面和一个 详情页面,那么用户就会经常执行打开详情=> 返回列表=>打开详情这样的话 列表 和 详情 都是一个频率很高的页面,那么 就可以对列表组件使用<keep-alive></keep-alive>进行缓存,这样用户每次 返回列表的时候,都能从缓存中快速渲染,而不是重新渲染。

1.用法

// 被keepalive包含的组件会被缓存
<keep-alive><router-view />
</keep-alive>
复制代码

2.属性

  • include 包含的组件会被缓存

  • exclude 排除不缓存的组件

2.为什么data是一个函数?

因为组件是需要复用,所有的组件实例都会复用data,如果data是一个对象,会影响到其他的组件,所以data要写成函数(组件之间不会互相影响)

3.Vue组件通讯有哪些?

父子通讯

prop和emit

1.父向子 父组件把数据通过V-bind传递给子组件

<template><div>//数据通过V-bind传递给子组件<childrenCom :father-list="fatherList"></childrenCom></div>
</template><script>
import childrenCom from './child'
export default {props: {},data() {return {fatherList:['orange','apple','banana']};},components: {childrenCom},
};
</script><style scoped ></style>复制代码

子组件通过prop 来接收父组件传递过来的值

<template><div><ul><li v-for="(item,index) in fatherLit":key="index">{{item}}</li></ul></div>
</template><script>
export default {props: {fatherList:{type:Array, //类型defult:[] //默认值}},
}
复制代码

2.子向父 子组件通过emit 把数据传递给父组件

<template><div><ul><li v-for="(item,index) in fatherList":key="index"@click="tofather(item)">{{item}}</li></ul></div>
</template><script>
export default {props: {fatherList:{type:Array,defult:[]}},methods: {tofather(item){// 传值给父组件this.$emit('sendFruits',item)}},components: {},
};
</script>
复制代码

父组件通过一个自定义方法来接收子组件传递过来的值

<template><div><childrenCom :father-list="fatherList" @sendFruits="sonFruits"></childrenCom></div>
</template><script>
import childrenCom from './child'
export default {props: {},data() {return {fatherList:['orange','apple','banana']};},methods: {sonFruits(item){console.log(item);}},components: {childrenCom},
};
</script><style scoped ></style>
复制代码

3.在父组件使用children访问子组件,在子组件中使用parent访问父组件

  1. 在父组件使用 ref 可以直接拿到子组件里面的方法

兄弟组件通信

  • 可以通过EvenBus 事件总线的方式

1.在main.js 全局绑定EvenBus

import Vue from 'vue';
Vue.prototype.$bus = new Vue
复制代码

2.使用

<div @click="addCart">添加</div>
export default{methods: {addCart(event){this.$bus.$emit('getTarget', event.target)}}
}
// 另一组件
export default{created(){this.$bus.$on('getTarget', target =>{console.log(target)})}
}
复制代码
  • 通过 Vuex

Vuex 适用于 父子、隔代、兄弟组件通信 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。

每一个 Vuex 应用的核心就是 store(仓库)。“store” 基本上就是一个容器,它包含着你的应用中大部分的状态 ( state )。

Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。

改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化。

4.请说下你对vue生命周期的理解

请参考下图,分解的挺详细的。

5.什么是nextTick?

nextTick是在下一次DOM更新接触之后再执行的回调。

当修改数据后,DOM并没有更新,使用nextTick可以获取更新后的DOM

简单的理解是:当数据更新了,在dom中渲染后,自动执行该函数。

6.为什么在v-for中使用key?

v-for中加key可以减少渲染次数,提升渲染性能。

7.Vuex页面刷新数据丢失怎么解决?

例如做电商项目购物车功能的时候,数据存放在vuex里,如果刷新页面,store的state存放的数据就会全部清空。购物车里面的商品就全都重置,这个时候就要做数据持久化。

使用 vuex-persist 插件,它就是为 Vuex 持久化存储而生的一个插件。不需要你手动存取 storage ,而是直接将状态保存至 cookie 或者 localStorage 中

8.怎么动态添加对象的类型的值?

Vue 是不能检测对象属性的添加或删除

    data() {return {obj:{name:'Vue'}};},mounted() {this.name = 'zs' // 不是响应式的this.$set(this.obj,'name','lisi') //响应式},
复制代码

9.你在之前的Vue项目做过那些优化?

  • v-if和v-show 区分场景使用

  • computed 和 watch 区分场景使用

  • v-for 遍历必须加key,key最好是id值,且避免同时使用v-if

  • 图片懒加载

  • 路由懒加载

  • 第三方插件按需引入


作者:Jone_Yu
链接:https://juejin.im/post/5effdc5f6fb9a07eb417ae58
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

这篇关于神魔?居然还有人认为这些初中级VUE面试题简单!!?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088904

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

uva 10387 Billiard(简单几何)

题意是一个球从矩形的中点出发,告诉你小球与矩形两条边的碰撞次数与小球回到原点的时间,求小球出发时的角度和小球的速度。 简单的几何问题,小球每与竖边碰撞一次,向右扩展一个相同的矩形;每与横边碰撞一次,向上扩展一个相同的矩形。 可以发现,扩展矩形的路径和在当前矩形中的每一段路径相同,当小球回到出发点时,一条直线的路径刚好经过最后一个扩展矩形的中心点。 最后扩展的路径和横边竖边恰好组成一个直

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 10130 简单背包

题意: 背包和 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>