前端vue常见面试题目|4生命周期,hash,history区别,keep-alive,created,mounted,子组件和父组件调用顺序,

本文详细介绍了Vue.js的生命周期,包括beforeCreate、created、beforeMount、mounted等各个阶段,以及在哪个阶段适合进行异步数据请求。此外,还探讨了子组件和父组件的执行顺序,created与mounted的区别。文章还涵盖了Vue Router的懒加载和hash、history模式的差异,帮助读者深入理解Vue.js的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二、生命周期

1. 说一下Vue的生命周期

Vue 实例有⼀个完整的⽣命周期,也就是从开始创建、初始化数据、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载 等⼀系列过程,称这是Vue的⽣命周期。
开始创建,初始化数据,编译模板,挂载dom->渲染,更新-》渲染卸载
1beforeCreate(创建前):数据观测和初始化事件还未开始,此时 data 的响应式追踪、event/watcher 都还没有被设置,也就是说不能访问到data、computed、watch、methods上的方法和数据。
2created(创建后) :实例创建完成,实例上配置的 options 包括 data、computed、watch、methods 等都配置完成,但是此时渲染得节点还未挂载到 DOM,所以不能访问到 $el 属性。

3beforeMount(挂载前):在挂载开始之前被调用,相关的render函数首次被调用。实例已完成以下的配置:编译模板,把data里面的数据和模板生成html。此时还没有挂载html到页面上。
4mounted(挂载后):在el被新创建的 vm.$el 替换,并挂载到实例上去之后调用。实例已完成以下的配置:用上面编译好的html内容替换el属性指向的DOM对象。完成模板中的html渲染到html 页面中。此过程中进行ajax交互。
5beforeUpdate(更新前):响应式数据更新时调用,此时虽然响应式数据更新了,但是对应的真实 DOM 还没有被渲染。
6updated(更新后) :在由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。此时 DOM 已经根据

### Vue 常见面试题汇总 以下是关于 Vue常见面试题,涵盖核心概念、组件化开发、生命周期、性能优化等方面: #### 1. Vue 的双向绑定原理是什么? Vue 的双向绑定通过 `v-model` 指令实现。在底层,Vue 使用了数据劫持(通过 `Object.defineProperty` 或 `Proxy`)结合发布-订阅模式[^1]。当数据发生变化时,视图会自动更新;同样,用户在视图中的操作也会触发数据模型的更新。 #### 2. 父组件如何向子组件传递数据? 父组件可以通过 `props` 向子组件传递数据。子组件需要在 `props` 属性中定义接收的数据类型名称。例如: ```javascript // 父组件 <child-component :message="parentMessage"></child-component> // 子组件 props: { message: { type: String, required: true } } ``` #### 3. Vue 中的事件绑定如何实现? 在 Vue 中,可以通过 `v-on` 指令绑定事件监听器。例如,绑定一个点击事件: ```html <button v-on:click="handleClick">点击我</button> ``` 或者使用简写形式: ```html <button @click="handleClick">点击我</button> ``` #### 4. Vue生命周期有哪些阶段? Vue 实例从创建到销毁的生命周期包括以下主要阶段:`beforeCreate`、`created`、`beforeMount`、`mounted`、`beforeUpdate`、`updated`、`beforeDestroy` `destroyed`。每个阶段都有特定的用途,例如在 `mounted` 阶段可以发起 AJAX 请求[^2]。 #### 5. Vue 中的 `keep-alive` 是什么? `keep-alive` 是 Vue 提供的一个高阶组件,用于缓存动态组件实例,避免重复渲染。它常用于需要保留组件状态的场景,比如页面切换时保留输入框内容[^3]。使用方式如下: ```html <keep-alive> <component :is="currentView"></component> </keep-alive> ``` #### 6. Vue 中的 `computed` `watch` 有什么区别? `computed` 用于声明依赖于其他响应式属性的计算属性,具有缓存机制,只有当依赖的数据发生变化时才会重新计算。而 `watch` 用于观察某个数据的变化,并执行回调函数,适合处理异步操作或复杂的逻辑。 #### 7. Vue Router 的两种模式是什么? Vue Router 支持两种路由模式:`hash` 模式 `history` 模式。`hash` 模式使用 URL 的 `#` 符号区分路径,不会发送请求到服务器;`history` 模式则利用 HTML5 的 History API 实现更美观的 URL,但需要后端配置支持。 #### 8. Vuex 的核心概念有哪些? Vuex 是 Vue 的状态管理库,其核心概念包括:`state`(存储全局状态)、`getters`(派生状态)、`mutations`(同步修改状态)、`actions`(异步操作) `modules`(模块化管理状态)。 #### 9. 如何优化 Vue 应用的性能? - 使用 `v-if` 替代 `v-show` 减少 DOM 元素。 - 对列表渲染使用 `key` 属性以提高虚拟 DOM 的效率。 - 在合适的地方使用 `keep-alive` 缓存组件。 - 避免在模板中直接调用复杂方法,改用 `computed` 属性。 - 使用懒加载按需加载减少初始加载时间[^3]。 #### 10. Vue 3 相较于 Vue 2 的主要改进有哪些? Vue 3 引入了 Composition API,提供了更灵活的状态管理逻辑复用能力。此外,Vue 3 还优化了渲染性能、减少了包体积,并增强了 TypeScript 支持[^2]。 --- ### 示例代码 以下是一个简单的 Vue 组件示例,展示 `props` `v-model` 的使用: ```vue <template> <input :value="modelValue" @input="updateValue" /> </template> <script> export default { props: ['modelValue'], methods: { updateValue(event) { this.$emit('update:modelValue', event.target.value); } } }; </script> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习记录wanxiaowan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值