你好 vue2,上帝视角!

208 阅读3分钟

Vue 2 原理及重要知识点

1. 响应式系统

  • 核心:Vue 2 使用 Object.defineProperty 实现数据响应式。
  • 原理:通过递归遍历数据对象,将每个属性转换为 getter 和 setter,在数据变化时触发视图更新。
  • 局限:无法检测到对象属性的添加或删除,数组的变化需要通过特定方法(如 pushpop 等)触发。

2. 虚拟 DOM

  • 核心:Vue 2 使用虚拟 DOM 提高渲染性能。
  • 原理:通过 JS 对象模拟真实 DOM,数据变化时生成新的虚拟 DOM,与旧的虚拟 DOM 进行对比(diff 算法),找出最小更新范围,最后批量更新真实 DOM。

3. 模板编译

  • 核心:Vue 2 的模板会被编译成渲染函数。
  • 原理:模板通过 Vue 的编译器转换为 render 函数,render 函数返回虚拟 DOM 节点,最终生成真实 DOM。

4. 生命周期钩子

  • 核心:Vue 2 提供了一系列生命周期钩子函数,允许在组件不同阶段执行代码。

  • 重要钩子

    • beforeCreate:实例初始化后,数据观测和事件配置之前。
    • created:实例创建完成,数据观测和事件配置完成。
    • beforeMount:挂载开始之前,render 函数首次调用。
    • mounted:实例挂载到 DOM 后调用。
    • beforeUpdate:数据更新时,DOM 重新渲染前。
    • updated:数据更新后,DOM 重新渲染后。
    • beforeDestroy:实例销毁前。
    • destroyed:实例销毁后。

5. 组件系统

  • 核心:Vue 2 采用组件化开发模式。

  • 特点

    • 组件是可复用的 Vue 实例。
    • 通过 props 进行父子组件通信。
    • 通过 $emit 触发父组件事件。
    • 通过 slot 实现内容分发。

6. 指令

  • 核心:Vue 2 提供了一系列内置指令,用于操作 DOM。

  • 常用指令

    • v-bind:动态绑定属性。
    • v-model:双向数据绑定。
    • v-for:列表渲染。
    • v-if / v-else:条件渲染。
    • v-on:事件监听。

7. 计算属性和侦听器

  • 计算属性computed,基于依赖的缓存,适合复杂逻辑计算。
  • 侦听器watch,监听数据变化,适合异步或开销较大的操作。

Vue 2 项目结构

一个典型的 Vue 2 项目结构如下:

my-vue-project/
├── public/                  # 静态资源目录(不经过 webpack 处理)
│   └── index.html           # 入口 HTML 文件
├── src/                     # 项目源码目录
│   ├── assets/              # 静态资源(图片、字体等)
│   ├── components/          # 组件目录
│   ├── views/               # 页面级组件
│   ├── router/              # 路由配置
│   ├── store/               # Vuex 状态管理
│   ├── App.vue              # 根组件
│   ├── main.js              # 项目入口文件
├── .gitignore               # Git 忽略文件配置
├── babel.config.js          # Babel 配置文件
├── package.json             # 项目依赖和脚本配置
├── README.md                # 项目说明文件
└── vue.config.js            # Vue CLI 配置文件(可选)

Vue 2 安装方法

1. 使用 Vue CLI 创建项目

Vue CLI 是官方推荐的脚手架工具,适合快速搭建 Vue 项目。

# 全局安装 Vue CLI
npm install -g @vue/cli

# 创建项目
vue create my-vue-project

# 进入项目目录
cd my-vue-project

# 启动开发服务器
npm run serve

2. 直接引入 Vue.js

如果不需要复杂的构建工具,可以直接通过 <script> 标签引入 Vue.js。

<!DOCTYPE html>
<html>
<head>
  <title>My Vue App</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
</head>
<body>
  <div id="app">
    {{ message }}
  </div>

  <script>
    new Vue({
      el: '#app',
      data: {
        message: 'Hello Vue!'
      }
    });
  </script>
</body>
</html>

3. 使用 npm 安装

如果已有项目,可以通过 npm 安装 Vue 2。

# 安装 Vue 2
npm install vue@2

# 安装 Vue Router(如果需要)
npm install vue-router@3

# 安装 Vuex(如果需要)
npm install vuex@3

Summary

  • 原理:Vue 2 的核心是响应式系统和虚拟 DOM,通过 Object.defineProperty 实现数据绑定。
  • 重要知识点:响应式、虚拟 DOM、生命周期、组件系统、指令、计算属性和侦听器。
  • 项目结构:典型的 Vue 2 项目包括 publicsrccomponentsrouterstore 等目录。
  • 安装方法:可以通过 Vue CLI、直接引入 Vue.js 或 npm 安装。