前端/移动开发面试题更新 2026-08-05

在 Vue 中,如果需要在组件初始化时获取数据,选择在 created 还是 mounted 生命周期钩子中发起请求会有什么不同?

前端/移动开发技术原理方案权衡Vue

考察说明

考查对 Vue 生命周期钩子执行时机和功能差异的理解,以及实际开发中的选择依据。

回答思路

  1. 【回答框架 1】created 钩子在实例创建后立即调用,此时已完成数据观测、属性和方法运算、事件回调设置,但尚未挂载 DOM,因此无法访问 $el 及相关 DOM 操作。
  2. 【回答框架 2】mounted 钩子在实例挂载完成后调用,此时 $el 已生成,可以访问 DOM 节点,通常用于需要依赖 DOM 的操作,如第三方库初始化或测量元素尺寸。
  3. 【回答框架 3】两种钩子中请求数据的核心区别是时机不同:created 阶段请求更早发出,可尽早获取数据,但无法操作 DOM;mounted 阶段请求稍晚,此时 DOM 已可用,但可能带来额外渲染延迟。
  4. 【回答框架 4】从性能看,created 中请求可提前异步数据到达时间,减少白屏等待;但若请求回调需要更新 DOM 相关逻辑,则需确保数据到达时 DOM 已存在,通常在 mounted 中更稳妥。
  5. 【回答框架 5】最佳实践:多数数据请求推荐放在 created 中,因为更早触发,且请求结果通常用于数据渲染,不依赖 DOM;若请求后需要操作 DOM,则应放在 mounted 或使用 nextTick 处理。
  6. 【关键点 1】created 早于 mounted 执行,created 时尚未挂载 DOM。
  7. 【关键点 2】created 无法访问 $el,mounted 后可以访问 DOM。
  8. 【关键点 3】数据请求若只用于模板渲染,created 更高效。
  9. 【关键点 4】涉及 DOM 操作的请求逻辑应放在 mounted 中。
  10. 【易错点 1】在 created 中访问 $el 将会得到 undefined,因为尚未挂载。
  11. 【易错点 2】在 mounted 中发起请求可能导致数据渲染稍晚,但通常影响不大,不应严格对比性能。
  12. 【易错点 3】避免在 created 中操作 DOM,可能造成意外错误。