Vue3.0 对于我们前端人的重要性 —— 2021年面试必备

前言

2020年09月18日,vue3.0正式发布。随着它的发布,Vue.js再次被推上了前端的风口浪尖。

同时,面试官的提问也将加入一些有关Vue3.0的新元素(相信近期去面试的小伙伴或多或少都会被问到Vue3.0的知识点)。

今天就分析总结了一些Vue的面试题(本文讲的非常详细,争取大家都能看懂,对大家有所帮助)

整理面试题


一、Vue.js 3.0 响应式系统的实现原理?

1.reactive
设置对象为响应式对象。接收一个参数,判断这参数是否是对象。不是对象则直接返回这个参数,不做响应式处理。
创建拦截器handerler,设置get/set/deleteproperty。
get
收集依赖(track);
如果当前 key 的值是对象,则为当前 key 的对象创建拦截器 handler, 设置 get/set/deleteProperty;
如果当前的 key 的值不是对象,则返回当前 key 的值。
set
设置的新值和老值不相等时,更新为新值,并触发更新(trigger)。
deleteProperty
当前对象有这个 key 的时候,删除这个 key 并触发更新(trigger)。

2.effect
接收一个函数作为参数。作用是:访问响应式对象属性时去收集依赖

3.track
接收两个参数:target 和 key

  • 如果没有 activeEffect,则说明没有创建 effect 依赖
  • 如果有 activeEffect,则去判断 WeakMap 集合中是否有 target 属性
  • WeakMap 集合中没有 target 属性,则 set(target, (depsMap = new Map()))
  • WeakMap 集合中有 target 属性,则判断 target 属性的 map 值的 depsMap 中是否有 key 属性
  • depsMap 中没有 key 属性,则 set(key, (dep = new Set()))
  • depsMap 中有 key 属性,则添加这个 activeEffect

4.trigger

判断 WeakMap 中是否有 target 属性,WeakMap 中有 target 属性,则判断 target 属性的 map 值中是否有 key 属性,有的话循环触发收集的 effect()。

二、响应式是惰性的

  • 在 Vue.js 2.x 中,对于一个深层属性嵌套的对象,要劫持它内部深层次的变化,就需要递归遍历这个对象,执行 Object.defineProperty 把每一层对象数据都变成响应式的,这无疑会有很大的性能消耗。
  • 在 Vue.js 3.0 中,使用 Proxy API 并不能监听到对象内部深层次的属性变化,因此它的处理方式是在 getter 中去递归响应式,这样的好处是真正访问到的内部属性才会变成响应式,简单的可以说是按需实现响应式,减少性能消耗。

基础用法:

let datas={num:0
}
let proxy=new Proxy(datas,{get(target,property){return target[property]+=value},set(target,property,value){target[property]+=value}
})

三、vue3新增Composition API

vue3 新增的一组 api,它是基于函数的 api,可以更灵活的组织组件的逻辑。
解决options api在大型项目中,options api不好拆分和重用的问题。

setup介绍

setup 是 Vue3.0新增的一个选项, 他是组件内使用 Composition API的入口。

setup 执行时机

setup 执行时机是在 beforeCreate 之前执行。

setup 参数说明

使用setup时,它接受两个参数:

  1. props: 组件传入的属性
  2. context

setup 中接受的props是响应式的, 当传入新的 props 时,会及时被更新。由于是响应式的, 所以不可以使用 ES6 解构,解构会消除它的响应式。错误代码示例, 这段代码会让 props 不再支持响应式:

// demo.vue
export default defineComponent ({setup(props, context) {const { name } = propsconsole.log(name)},
})

四、 Vue 3.0 所采用的 Composition Api 与 Vue 2.x使用的Options Api 有什么区别?

  • Options Api
    包含一个描述组件选项(data、methods、props等)的对象options;
    API开发复杂组件,同一个功能逻辑的代码被拆分到不同选项 ;
    使用mixin重用公用代码,也有问题:命名冲突,数据来源不清晰;
  • composition Api
    vue3 新增的一组 api,它是基于函数的 api,可以更灵活的组织组件的逻辑。
    解决options api在大型项目中,options api不好拆分和重用的问题。

五、vue3新增内置组件 Teleport(哆啦 A 梦中的任意门)

Teleport就是一种将代码组织逻辑依旧放在组件中,这样我们能够使用组件内部的数据状态,控制组件展示的形式,但是最后渲染的地方可以是任意的,而不是局限于组件内部

Teleport 的使用:

<template><teleport to="body" class="modal" v-if="show"><div class="modal-mask" @click="close"></div><slot></slot></teleport>
</template><script>
import "./style.scss";
export default {props: {show: Boolean,},methods: {close() {this.$emit("close");},},
};
</script>

六、Props初始化和更新流程改进
七、Vue3 slot是什么?并说一下详细的用法?
八、Vue 3.0 在编译方面有哪些优化?
九、Vue3 依赖注入子孙组件如何共享数据
十、Vue3 侦听器实现原理与使用场景
十一、Vue3 组件实现原理核心源码解读
十二、Vuex 数据流管理方案
十三、原生服务端渲染(SSR)的实现、同构开发
十四、Nuxt.js 集成式SSR框架

一起来看看这份集齐vue2.0/vue3.0面试通杀秘籍(2021版) PDF,面试官问的源码问题绝对稳了!相关推荐

  1. 尚硅谷Vue2.0+Vue3.0全套教程视频笔记 + 代码 [P001-050]

    视频链接:尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通_哔哩哔哩_bilibili P1-50:当前页面.  P51-100:尚硅谷Vue2.0+Vue3.0全套教程视频笔记 + ...

  2. 【Vue学习笔记】尚硅谷Vue2.0+Vue3.0全套教程丨vue.js从入门到精通

    尚硅谷Vue2.0+Vue3.0全套教程丨vue.js从入门到精通 1.Vue核心部分 1.1 Vue简介 1.1.1 Vue是什么? Vue是一套用于构建用户界面的渐进式JavaScript框架. ...

  3. vue2.0,vue3.0 v-model数据双向绑定

    vue2.0,vue3.0 v-model数据双向绑定 vue.2.0 vue2.0 vue-property-decorator vue3.0 vue.2.0 <base-checkbox v ...

  4. [Vue]学习笔记目录 【Vue2与Vue3完结】 (尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通)

    文章目录 前言 遇见的问题及其解决方案 之前笔记 Vue2 Vue3 前言 本笔记根据如下笔记和视频进行整理 老师的课件笔记,不含视频 https://www.aliyundrive.com/s/B8 ...

  5. vue2.0 vue3.0 打包二级项目-如何部署二级目录

    看了很多其他大佬的文章,我这边做了一个笔记记录了一下vue打包二级目录的方法 我们想要的效果是什么 我们想www.taobao.com/web二级目录来访问我们的页面 如果我们没有做任何的配置,直接将 ...

  6. 【Pygame经典合集】​​​​​​终极白给大招:让你玩儿到爽(附多款游戏源码)

    导语 嘿!我是木木子,关注我--跟我一起玩游戏啦~ 其实嘛?最近的话游戏的话实在是没什么可以写的了,很多游戏的话太难仿制起来很费时间,于是 就有了今天这篇小合集--​ ​ 哈哈哈,这是一个pygame ...

  7. 【Python游戏】Python各大游戏合集:超级玛丽、天天酷跑、我的世界、魔塔、雷霆战机 附带源码

    相关文件 关注小编,私信小编领取哟! 当然别忘了一件三连哟~~ 公众号:Python日志 可以关注小编公众号,会不定时的发布一下Python小技巧,还有很多资源可以免费领取哟!! 源码领取:加Pyth ...

  8. 尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通 学习笔记

    已经将课程刷完,但是后来发现网上有很多总结特别好的网站,现在汇总如下 https://www.yuque.com/cessstudy/kak11d 大家好,老师的笔记拿到了,给大家快速拿到 阿里云-- ...

  9. dubbo源码解析-集群容错架构设计

    前言 本来是想把整个dubbo源码解析一次性弄完,再做成一个系列来发布的,但是正巧最近有位好朋友要去杭州面试,就和我交流了一下.本着对dubbo源码略有心得的心态,在交流过程中也发表了个人的一些粗劣的 ...

最新文章

  1. 消灭 Java 代码的“坏味道”
  2. python3----智能检测编码的工具
  3. 继英伟达最小边缘超算,英特尔再推10倍VPU,终端AI芯片竞争加剧
  4. vue 调用mutation方法_Vuex白话教程第三讲:Vuex旗下的Mutation
  5. URL中使用IPv4,IPv6和主机名
  6. Windows 10 上强制Visual Studio以管理员身份运行
  7. 寒武纪“动荡”的 6 周年:CTO 梁军离职,市值蒸发 59 亿,核心技术人才仅剩 3 人
  8. vim查找和替换字符串
  9. ddpush java_DDPush-任意门消息推送-开源推送服务器-推送-消息推送-信息推送-物联网推送...
  10. 微信H5页面ios分享失效
  11. 2020最新版《神经网络与深度学习》中文版更新完毕,pdf开放下载
  12. 硬件科普系列之内存篇
  13. 快速由PCI迁移到PCIe
  14. php 按钮外观怎么改变,php 按钮样式
  15. mysql right syntax_Mysql 出现the right syntax to use near USING BTREE错误解决办法
  16. 如何将接近开关作为限位开关连接?
  17. 日常活动--英文短句
  18. 2021-08-08 WPF控件专题 WrapPanel 控件详解
  19. linux - linux查看磁盘空间/查看文件分区(挂载点)/查看文件大小
  20. 涨粉神器,粉丝零距离交流!CSDN APP迎来更新

热门文章

  1. 成都百择电商:抖音小店有哪些引流方法?
  2. Web前端学习笔记(八)~水滴动画
  3. 地理空间数据库复习笔记:关系数据库标准语言、几何对象模型与查询
  4. 加密解密、信息摘要算法收集
  5. 高清游戏场景桌面壁纸
  6. 微信公众号用户标签php,用户标签管理 - 微信公众平台开发者文档 - php中文网手册...
  7. Java删除list中指定的元素的方法
  8. swift左滑手势简易教学
  9. 前端中如何实现滚动条隐藏
  10. VS2017+WDK10驱动编译与调试