Vue 知识点总结

本文详细解析了MVVM架构模式及其与MVC的区别,并深入介绍了Vue.js的生命周期钩子,包括创建前后、载入前后等阶段的特点及应用场景。同时探讨了Vue中父组件与子组件之间的通信方式。
1. MVVM? 对比MVC
   MVVM(Model-View-ViewModel): 
   Model: 数据模型,可以定义数据修改和操作的业务逻辑
   View: UI组件,将数据组件转换成UI展示
   ViewModel: 同步View和model的对象


   View和Model没有直接的联系,通过ViewModel进行交互, ViewModel通过双向数据绑定把View层和Model层联系起来,View和Model的同步完全自动,开发人员只需关心业务逻辑,不用手动更新DOM元素,
   也不用关注数据状态的同步,复杂的数据状态完全由MVVM管理


2. 生命周期
   创建前后(beforeCreated/created):beforeCreated阶段,vue实例挂在元素
   此阶段el和data都是undefined,未初始化,created阶段,vue实例的数据对象data就有了,但是el还没有


   载入前后(beforeMounted/mounted): beforeMounted阶段,vue实例的$el和data都已经初始化,但还是挂载之前的虚拟DOM节点,data.message还未替换,
     mounted阶段,挂载实例完成,data.message成功渲染


   更新前后,data发生变化时,会触发beforeUpdate和updated方法


   销毁前后,在执行destroy方法后,对data的改变不会再触发生命周期函数,此时vue实例已经解除事件监听及DOM的绑定,但DOM结构依然存在


3. 父子间通信
### Vue.js 基础知识总结与归纳 Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架,其核心库专注于视图层,能够轻松集成到现有项目中[^3]。以下是关于 Vue.js 的基础知识总结和归纳: #### 1. 核心概念 - **MVVM 模式**:Vue 实现了 MVVM(Model-View-ViewModel)模式,开发者通过绑定数据模型(Model)和视图(View),使得数据变化时视图会自动更新。 - **模板语法**:Vue 使用双大括号 `{{ }}` 表达式将数据插入到 HTML 中[^2]。 - **指令**:Vue 提供了一些内置指令(如 `v-if`、`v-for`、`v-bind` 和 `v-on`),用于操作 DOM[^2]。 #### 2. 生命周期 Vue 实例从创建到销毁的过程称为生命周期。以下是关键的生命周期钩子: - `beforeCreate`:实例初始化完成,但尚未挂载数据或事件监听器。 - `created`:实例已完成数据观测,但尚未挂载到 DOM。 - `beforeMount`:模板已编译,但尚未渲染到页面上。 - `mounted`:实例已被挂载到 DOM 上,可以访问真实 DOM[^5]。 - `beforeUpdate`:当数据发生变化时触发,此时 DOM 尚未更新。 - `updated`:DOM 已经根据最新的数据完成更新[^5]。 - `beforeDestroy` 和 `destroyed`:实例即将销毁或已经销毁。 #### 3. 数据绑定 - **单向绑定**:通过 `v-bind` 指令实现父组件向子组件传递数据。 - **双向绑定**:通过 `v-model` 指令实现表单输入与数据之间的同步[^2]。 #### 4. 组件化开发 - **局部组件**:在 `components` 属性中定义组件,并在模板中使用。 - **全局组件**:通过 `Vue.component` 方法注册全局组件。 - **Props 和 Events**:`props` 用于父组件向子组件传递数据,`$emit` 用于子组件向父组件发送事件。 #### 5. 路由管理 Vue Router 是官方提供的路由管理器,用于构建单页面应用中的路由系统。通过配置路由规则,可以实现页面间的切换和参数传递。 #### 6. 状态管理 Vuex 是 Vue 官方的状态管理库,适用于管理复杂的应用状态。它提供了集中式的存储机制,使组件间共享状态变得更加高效。 #### 7. 过渡效果与动画 Vue 提供了丰富的过渡效果支持,包括 CSS 动画、JavaScript 钩子函数等,用于增强用户体验。 #### 8. 插件系统 Vue 具有强大的插件系统,可以通过安装插件扩展核心功能。例如,`vue-router` 和 `vuex` 都是以插件形式提供的。 #### 示例代码 以下是一个简单的 Vue 实例示例: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue Example</title> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script> </head> <body> <div id="app"> {{ message }} </div> <script> new Vue({ el: '#app', data: { message: 'Hello Vue!' } }); </script> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值