没有合适的资源?快使用搜索试试~ 我知道了~
铜3铁4,最新22道面试题-Vue系列.docx
需积分: 0 1 下载量 24 浏览量
2023-07-09
17:03:06
上传
评论
收藏 1.02MB DOCX 举报
温馨提示
试读
44页
最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-Vue系列最新22道面试题-V
资源推荐
资源详情
资源评论
铜 3 铁 4,最新 22 道面试题-Vue 系列
一、前言
今年的金三银四已经来了,也有人说是铜三铁四,环境只是一个因素,它确实会
影响大家找工作或者跳槽涨薪,但是影响不多,最重要的一个因素在于自己是否
已经做好了准备。22 道 Vue 面试题,为大家保驾护航,后续也会持续更新吧,
毕竟还有金九银十与新技术的出现。
二、原题
1.Vue3.0 性能提升主要是体现在哪些方面
1.响应式系统:
- Vue.js 2.x 中响应式系统的核心是 Object.defineProperty,劫持整个对象,然后进行深度遍历所
有属性,给每个属性添加`getter`和`setter`,实现响应式
- Vue.js 3.x 中使用 Proxy 对象重写响应式系统
- 可以监听动态新增的属性
- 可以监听删除的属性
- 可以监听数组的索引和 length 属性
* 实现原理:
* 通过 Proxy(代理): 拦截对象中任意属性的变化, 包括:属性值的读写、属性的添加、属性的删除
等。
* 通过 Reflect(反射): 对源对象的属性进行操作。
* MDN 文档中描述的 Proxy 与 Reflect:
* Proxy:
[Proxy - JavaScript | MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/
Reference/Global_Objects/Proxy "Proxy - JavaScript | MDN")
* Reflect:
[Reflect - JavaScript | MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScrip
t/Reference/Global_Objects/Reflect "Reflect - JavaScript | MDN")
new Proxy(data, {
//
拦截读取属性值
get (target, prop) {
return Reflect.get(target, prop)
},
//
拦截设置属性值或添加新属性
set (target, prop, value) {
return Reflect.set(target, prop, value)
},
//
拦截删除属性
deleteProperty (target, prop) {
return Reflect.deleteProperty(target, prop)
}
})
proxy.name = 'tom' ![]
2.编译阶段
- Vue.js 2.x 通过标记静态节点,优化 diff 的过程
- Vue.js 3.x
* vue.js 3.x 中标记和提升所有的静态节点,diff 的时候只需要对比动态节点内容;
* Fragments(升级 vetur 插件): template 中不需要唯一根节点,可以直接放文本或者同级标签
* 静态提升(hoistStatic),当使用 hoistStatic 时,所有静态的节点都被提升到 render 方法之外.
只会在应用启动的时候被创建一次,之后使用只需要应用提取的静态节点,随着每次的渲染被不停的复用。
* patch flag, 在动态标签末尾加上相应的标记,只能带 patchFlag 的节点才被认为是动态的元素,
会被追踪属性的修改,能快速的找到动态节点,而不用逐个逐层遍历,提高了虚拟 dom diff 的性能。
* 缓存事件处理函数 cacheHandler,避免每次触发都要重新生成全新的 function 去更新之前的函
数
3.源码体积
- 相比 Vue2,Vue3 整体体积变小了,除了移出一些不常用的 AP
- tree shanking
- 任何一个函数,如 ref、reavtived、computed 等,仅仅在用到的时候才打包
- 通过编译阶段的静态分析,找到没有引入的模块并打上标记,将这些模块都给摇
2.vue3 有哪些新的组件
1.Fragment
* 在 Vue2 中: 组件必须有一个根标签
* 在 Vue3 中: 组件可以没有根标签, 内部会将多个标签包含在一个 Fragment 虚拟元素中
* 好处: 减少标签层级, 减小内存占
2.Teleport
什么是 Teleport?—— Teleport 是一种能够将我们的组件 html 结构移动到
指定位置的技术。
<teleport to="移动位置">
<div v-if="isShow" class="mask">
<div class="dialog">
<h3>我是一个弹窗</h3>
<button @click="isShow = false">关闭弹窗</button>
</div>
</div>
</teleport
3.Suspense
�
等待异步组件时渲染一些额外内容,让应用有更好的用户体验
�
�
使用步骤:
�
▪
异步引入组件
▪
▪
import {defineAsyncComponent} from 'vue'
const Child = defineAsyncComponent(()=>import('./components/Child.vue')
使用 Suspense 包裹组件,并配置好 default 与 fallback
<template>
<div class="app">
<h3>我是 App 组件</h3>
<Suspense>
<template v-slot:default>
<Child/>
</template>
<template v-slot:fallback>
<h3>加载中.....</h3>
</template>
</Suspense>
</div>
</template>
<div class="app">
<h3>我是 App 组件</h3>
<Suspense>
<template v-slot:default>
<Child/>
</template>
<template v-slot:fallback>
<h3>加载中.....</h3>
</template>
</Suspense>
</div>
</template>
```<templat
<div class="app">
<h3>我是 App 组件</h3>
<Suspense>
<template v-slot:default>
<Child/>
</template>
<template v-slot:fallback>
<h3>加载中.....</h3>
</template>
</Suspense>
</div>
</template><template>
<div class="app">
<h3>我是 App 组件</h3>
<Suspense>
<template v-slot:default>
<Child/>
</template>
<template v-slot:fallback>
<h3>加载中.....</h3>
</template>
</Suspense>
</div>
</template>
3.Vue2.0 和 Vue3.0 有什么区别
1. 响应式系统的重新配置,使用 proxy 替换 Object.defineProperty
2. typescript 支持
3. 新增组合 API,更好的逻辑重用和代码组织
4. v-if 和 v-for 的优先级
5. 静态元素提升
6. 虚拟节点静态标记
7. 生命周期变化
8. 打包体积优化
9. ssr 渲染性能提升
10. 支持多个根节点
4.Vue 生命周期
1.vue2.x 的生命周期
剩余43页未读,继续阅读
资源评论
我的尤克里里
- 粉丝: 191
- 资源: 91
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JavaScript《基于自动分析数据并给出营业建议的餐厅管理系统(接入AI) 》+源代码+项目说明及资料
- 355670834783295707ad04e-427f-4cde-9589-e578224a8459.zip
- 动态sql解析引擎,类似mybatis动态sql的功能
- EDA365-Skill-V2.5安装包,支持Allegro17.x版本
- C# 常用单词汇总,常用单词汇总
- 【ERP标准流程-标准流程-库内业务管理】(DOC 14页).doc
- Python《数据库期末作业-餐厅点单系统 》+源代码+设计资料
- 学生成绩管理系统(C++课程设计
- 双指针法判断链表有环-go语言实现
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功