# 第四篇 整体流程

# 相关面试题

# vue 组件中 data 为什么用函数返回一个对象,而不是一个对象

防止该组件多次使用时,共用同一份数据,导致数据错乱。

用函数返回一个对象,多个相同组件的数据都可以保持独立,互补影响。

# 为什么会有 $nextTick 主要为了解决什么问题?

因为 vue 更新异步的,修改某个值,dom 不会实时更新。

如下代码中,短时间内 count 值增加了 3 次,如果不使用异步队列,渲染三次?

为了更加高效,减少更新消耗,会将短时间内的多次数据变更合并到一次渲染周期。

import { reactive, watch } from "vue";
const state = reactive({ count: 0 });
watch(
  () => state.count,
  (count, prevCount) => {
    console.log(count);
  }
);
state.count++;
state.count++;
state.count++;
// http://www.eggcake.cn/posts/2021-01-13-vue3-core-source-code-9

# vue3 相比 vue2 做了哪些优化?

  • 源码优化
    • 更好的代码管理方式:monorepo
    • 有类型的 JavaScript:TypeScript
  • 性能优化
    • 源码体积优化
    • 数据劫持优化
    • 编译优化
  • 语法 API 优化:Composition API
    • 优化逻辑组织
    • 优化逻辑复用
  • 引入 RFC:使每个版本改动可控
  • 过渡期

http://www.eggcake.cn/posts/2020-12-19-vue3-core-source-code-0 (opens new window)

上次更新: 2023/3/25 01:01:37