vue前台面试题有哪些

发布时间:2022-05-06 14:13:56 作者:zzz
来源:亿速云 阅读:103

这篇文章主要介绍“vue前台面试题有哪些”,在日常操作中,相信很多人在vue前台面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue前台面试题有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.vue性能优化的几种方案

1.正确的选择v-if和v-show的使用,v-if有更高的切换消耗,v-show有更高的初始消耗

2.路由懒加载:当页面很多,组件很多的时候,SPA页面在初次加载的时候,就会变的很慢。这是由于vue初次加载的时候把可能一开始看不见的组件也一次加载了,这个时候就需要对页面进行优化,就需要异步组件了。

3.缓存:spa页面采用keep-alive缓存组件

4.图片懒加载:提高页面加载速度,不在可视区域内的图片先不加载,只有滚动到可视区域的时候才加载。一般借助外部插件如 vue-lazyload。使用只要要npm install vue-lazyload而后页面引入即用。

5.SEO优化: ssr服务端渲染

6.打包优化:对于少量过大的包采取cdn引入文件的方式而不是直接下载到本地。

2.v-show和v-if谁的性能更高

v-show本质就是通过控制css中的display设置为none,控制隐藏,只会编译⼀次;v-if是动态的向DOM树内增加或者者删除DOM元素,若初始值为false,就不会编译了。⽽且v-if不停的销毁和创立⽐较消耗性能。所以假如要频繁切换那么v-show性能更高,假如不是频繁切换,v-if性能更高

3.vue之间的数据传递

父到子:props

子到父:$emit自己设置事件

复杂组件的传递:通过vuex

4.单文件组件中如何让样式只在当前组件生效

在组件中的style前面加上scoped

5.vue中的生命周期(钩子函数)

共有8+2个钩子函数 基本的有8个,keep-alive中有2个

beforeCreate(创立前) / created(创立后) / beforeMount(挂载前) / mounted(挂载后) beforeUpdate(升级前)/ updated(升级后) /beforeDestroy(销毁前)/ destroyed(销毁后)

其中第一次加载页面会触发 beforeCreate, created, beforeMount, mounted 这几个钩子

另外在keep-alive中,vue新添加了两个钩子函数

activated:由于使用了keep-alive的组件会被缓存,所以created,mounted这种的钩子函数只会执行一次, 假如我们的子组件需要在每次加载的时候进行某些操作,可以使用activated钩子触发。

deactivated:组件被移除时使用。

6.vue父子组件生命周期的执行顺序

加载渲染过程

父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted

子组件升级过程

父beforeUpdate->子beforeUpdate->子updated->父updated

父组件升级过程

父beforeUpdate->父updated

销毁过程

父beforeDestroy->子beforeDestroy->子destroyed->父destroyed

7.在vue中如何获取DOM元素

给元素增加ref属性 通过this.$refs.domName获取

8.key的作用

需要使用key来给每个节点做一个唯一标识,Diff算法即可以正确的识别此节点。

作用主要是为了高效的升级虚拟DOM。

9.$nextTick的使用场景(作用)

由于vue中数据升级是异步的,当你修改了data的值而后马上获取这个dom元素的值,是不能获取到升级后的值,

你需要使用$nextTick这个回调,让修改后的data值渲染升级到dom元素之后在获取,才能成功。

10.v-if和v-for的优先级

v-if 与 v-for 一起使用时,v-for 具备比 v-if 更高的优先级,这意味着 v-if 将分别重复运行于每个 v-for 循环中。所以,不推荐v-if和v-for同时使用。假如非要一起用,可以把v-if放到外层元素,或者者不用v-if,先在计算属性中挑选出数据,而后在v-for

11.v-model的原理

vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;

核心:关于VUE双向数据绑定,其核心是 Object.defineProperty()方法。

12.什么是mvvm

MVVM 将数据双向绑定(data-binding)作为核心思想,View 和 Model 之间没有联络,它们通过 ViewModel 这个桥梁进行交互。

Model 和 ViewModel 之间的交互是双向的,因而 View 的变化会自动同步到 Model,而 Model 变化也会立即反映到 View 上显示。

当客户操作 View,ViewModel 感知到变化,而后通知 Model 发生相应改变;反之当 Model 发生改变,ViewModel 也能感知到变化,使 View 作出相应升级。

13.如何优化SPA应用的首屏加载速度慢的问题

将公用的JS库通过script标签外部引入,减小app.bundel的大小,让浏览器并行下载资源文件,提高下载速度;

在配置 路由时,页面和组件使用懒加载的方式引入,进一步缩小 app.bundel 的体积,在调用某个组件时再加载对应的js文件;

加一个首屏 loading 图,提升客户体验;

14.vue路由的两种模式,hash与history的区别

hash —— 即地址栏 URL 中的 # 符号(此 hash 不是密码学里的散列运算)。

比方这个 URL:ABC Home Page - ABC.com 的值为 #/hello。它的特点在于:hash 尽管出现在 URL 中,但不会被包括在 HTTP 请求中,对后台完全没有影响,因而改变 hash 不会重新加载页面。

history —— 利用了 HTML5 History Interface 中新添加的 pushState() 和 replaceState() 方法。(需要特定浏览器支持)

这两个方法应用于浏览器的历史记录栈,在当前已有的 back、forward、go 的基础之上,它们提供了对历史记录进行修改的 功能。只是当它们执行修改时,尽管改变了当前的 URL,但浏览器不会立即向后台发送请求。

因而可以说,hash 模式和 history 模式都属于浏览器自身的特性,Vue-Router 只是利用了这两个特性(通过调用浏览器提供 的接口)来实现前台路由。

注意!!!history模式下,前台的url必需和实际向后台发起请求的url 一致,如http://www.abc.com/book/id 。假如后台缺少对/book/id 的路由解决,将返回404错误。刷新也会报404由于会实际去请求数据。 (需要后台进行配置。vue官网有详情)

15.如何处理vuex数据刷新丢失的问题

由于store里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例,store里面的数据就会被重新赋值

如何处理:

一种是state里的数据一律是通过请求来触发action或者mutation来改变(不推荐,当vuex数据很多项目很大的时候不适用)

一种是将state里的数据保存一份到本地存储(localStorage、sessionStorage、cookie)中 (推荐)

16.vue中如何实现跨域访问

1.开发环境:配置vue.config.js proxy代理商

2.生产环境:配置nginx代理商

到此,关于“vue前台面试题有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. Vue必备面试题有哪些
  2. vue面试题有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vue

上一篇:vue如何实现响应式

下一篇:vue项目的性能优化方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》