前端基础的40个问题及答案【第31-40问】

前端基础的40个问题及答案【第31-40问】

31、vue的父组件和子组件生命周期钩子函数执行顺序?

执行顺序: 父组件先创建,然后子组件创建;子组件先挂载,然后父组件挂载,即“父beforeCreate-> 父create -> 子beforeCreate-> 子created -> 子mounted -> 父mounted”。

父子组件生命周期执行顺序:
父beforeCreate-> 父create -> 子beforeCreate-> 子created -> 子mounted -> 父mounted

父子组件生命周期执行顺序:
父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted

32、父组件可以监听到子组件的生命周期吗?

可以
方法一
使用$emit
方法二:
使用@hook:

详细解释参考:https://www.jianshu.com/p/f9488806f340

33、vue框架怎么实现对象和数组的监听?

Vue 框架是通过遍历数组 和递归遍历对象,从而达到利用 Object.defineProperty() 也能对对象和数组(部分方法的操作)进行监听。

解释参考:https://www.cnblogs.com/Rivend/p/12629880.html

34、vue是如何实现数据双向绑定的?

Vue数据双向绑定原理是通过 数据劫持结合发布者-订阅者模式 的方式来实现的,首先是通过 ES5 提供的 Object.defineProperty()方法来劫持(监听)各属性的 getter、setter,并在当监听的属性发生变动时通知订阅者,是否需要更新,若更新就会执行对应的更新函数。

详细解释:https://blog.nowcoder.net/n/8517450fe4fd4220b4078f9c61e42ec1

35、vue怎么用vm.$set()解决对象新增属性不能响应的问题?

原理

  • 如果目标是数组,直接使用数组的 splice 方法触发相应式;
  • 如果目标是对象,会先判读属性是否存在、对象是否是响应式,最终如果要对属性进行响应式处>>>理,则是通过调用 defineReactive 方法进行响应式处理( defineReactive 方法就是 Vue 在初始化对象时,给对象属性采用 Object.defineProperty 动态添加 getter 和 setter 的功能所调用的方法)

详细解释:https://www.cnblogs.com/Rivend/p/12630382.html

36、虚拟DOM的优缺点?

保证性能下限

无需手动操作 DOM

跨平台

详细解释:https://www.jianshu.com/p/951431d684a0

37、虚拟DOM实现原理?

解释1: 用js模拟一颗DOM树,放在浏览器的内存中,当需要变更时,虚拟DOM进行diff算法进行新旧虚拟DOM的对比,将变更放入到队列中。反应到实际的DOM上,减少DOM的操作。
解释2: 虚拟DOM将DOM转换为一颗js树。diff算法逐级的进行比较、删除、新增操作。但是如果存在多个相同的元素可能比浪费性能,所以React和Vue引用key值进行区分。

详细解释:https://juejin.cn/post/6844904009606791175

38、vue中的key有什么作用?

使用key属性,这样可以提高列表渲染的效率,提高了页面的性能。

详细解释1:https://cloud.tencent.com/developer/article/1676293
详细解释2:https://juejin.cn/post/6907456768222330893

39、你有对vue项目进行哪些优化?

第一个方面:代码层面的优化
• v-if 和 v-show 区分使用场景
• computed 和 watch 区分使用场景
• v-for 遍历必须为 item 添加 key,且避免同时使用 v-if
• 长列表性能优化
• 事件的销毁
• 图片资源懒加载
• 路由懒加载
• 第三方插件的按需引入
• 优化无限列表性能
• 服务端渲染 SSR or 预渲染

第二个方面:Webpack 层面的优化
• Webpack 对图片进行压缩
• 减少 ES6 转为 ES5 的冗余代码
• 提取公共代码
• 模板预编译
• 提取组件的 CSS
• 优化 SourceMap
• 构建结果输出分析
• Vue 项目的编译优化

第三个方面:基础的 Web 技术的优化
• 开启 gzip 压缩
• 浏览器缓存
• CDN 的使用
• 使用 Chrome Performance 查找性能瓶颈

40、对于vue3.0特性你有什么了解的吗?

更新了很多新特性大致有

  • compostion api
  • typescript【对象式的组件声明方式】
  • proxy【监测机制的改变】
  • vom静态标记
  • fragment
  • teleport
  • suspense
  • 自定义 render【模板】

Vue3.0改进主要在以下几点
更快

  • 虚拟 DOM 重写
  • 优化 slots 的生成
  • 静态树提升
  • 静态属性提升
  • 基于 Proxy 的响应式系统

更小

  • 通过摇树优化核心库体积

更易于维护

  • TypeScript + 模块化

更加友好

  • 跨平台:编译器核心和运行时核心与平台无关,使得 Vue 更容易与任何平台(Web、Android、iOS)一起使用

更容易使用

  • 改进的 TypeScript 支持,编辑器能提供有力的类型检查和错误及警告
  • 更好的调试支持
  • 独立的响应化模块
  • Composition API

基础解释:https://juejin.cn/post/7016695233165410311

详细解释1:https://juejin.cn/post/6940454764421316644#heading-25

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值