Vue.js 是一套一款渐进式 JavaScript 框架,其核心思想是通过组件化开发构建用户界面。下面总结 Vue.js 的基本组件及运行原理:
一、基本组件概念
-
组件定义
- 组件是 Vue 应用的基本构建块,可复用的 Vue 实例
- 拥有自己的模板、逻辑和样式,实现功能封装
-
组件分类
- 根组件:通过
new Vue()创建的最顶层组件 - 全局组件:通过
Vue.component()注册,可在任何地方使用 - 局部组件:仅在注册它的父组件范围内可用
- 根组件:通过
-
组件核心选项
template:组件模板,定义渲染输出data:组件数据(必须是函数形式)methods:组件方法props:接收父组件传递的数据computed:计算属性watch:数据监听生命周期钩子:如created、mounted等
-
组件通信
- 父传子:通过
props传递数据 - 子传父:通过
$emit触发事件 - 跨级/兄弟组件:使用
Vuex或事件总线(Event Bus)
- 父传子:通过
二、运行原理
-
响应式系统
- 核心是数据劫持,通过
Object.defineProperty拦截数据的getter和setter - 当数据变化时,自动触发依赖更新(视图重新渲染)
- 核心是数据劫持,通过
-
模板编译
- 将
template模板编译为渲染函数(render函数) - 编译过程:解析模板 → 生成 AST → 优化 AST → 生成代码
- 将
-
虚拟 DOM
- 内存中的 JavaScript 对象,映射真实 DOM
- 数据变化时,先更新虚拟 DOM,再通过 Diff 算法计算最小变更
- 最后批量更新真实 DOM,提高性能
-
生命周期
- 组件从创建到销毁的完整过程,包含多个钩子函数
- 主要阶段:初始化 → 挂载 → 更新 → 销毁
-
组件实例化流程
- 初始化组件选项
- 处理 props 和数据响应式
- 编译模板(或执行 render 函数)
- 挂载到 DOM
- 数据更新时触发重新渲染
三、简单示例
// 定义全局组件
Vue.component('my-component', {
props: ['message'],
data() {
return {
count: 0
}
},
template: `
<div>
<p>{{ message }}</p>
<button @click="count++">点击次数: {{ count }}</button>
</div>
`
})
// 根实例
new Vue({
el: '#app',
data: {
parentMsg: '来自父组件的消息'
}
})
Vue 的组件化和响应式系统使其能够高效构建交互式界面,同时保持代码的可维护性和复用性。理解这些核心概念有助于更好地使用 Vue 开发应用。
2858

被折叠的 条评论
为什么被折叠?



