[ vue 响应式实现原理简析 ] - 序:vue 响应式基本特征

320 阅读2分钟

说在前面的

通过本文,你能了解到什么?

  • vue 响应式实现原理
  • vue 双向数据绑定实现原理
  • 如何实现一个简易的 mvvm 框架

vue 响应式的基本特征

打开 vue 官网,通过首页下 vue 介绍视频,我们可以了解到:

  • vue 是一款友好的、多用途且高性能的 JavaScript 框架,它能帮你创建可维护性和可测试性更强的代码库;
  • vue 是一款渐进式的 JavaScript 框架:假如你已经有了一个现成的服务端应用,你可以将 vue 作为该应用的一部分嵌入其中,如果你希望将更多的业务逻辑放到前端来实现,vue 的核心库及其生态系统也能满足你的需求;
  • vue 允许你将页面划分成一个个可服用的组件,每个组件都包含自己的 html, css 以及 JavaScript 代码。

接下来我们一起来看看 vue 的基本特征。

首先来创建一个 vue 应用:

<div id="app">
  {{ msg }}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
  const vue = new Vue({
    el: "#app",
    data: {
      msg: "Hello Vue!"
    }
  });
</script>

效果如下:

img-00

可以看到,我们输入的模板字符串 {{ msg }} 已经被替换成了 data 下的 msg 变量对应的值,接下来是 vue 有意思的一点:

img-01

随着我们在控制台修改 msg 的值,页面上显示的值也发生了变化,说明 vue 是响应式的:当数据发生改变的时候,会自动更改页面中应用到该数据的地方。

当然,通过控制台改变有点过于笨重,所以我们可以通过 v-model 来绑定一个 input 框:

<div id="app">
  <p>{{ msg }}</p>
  <input v-model="msg" />
</div>

效果如下:

img-02

这就是 vue 的双向数据绑定了。关于双向数据绑定,在之前写的 通过 Proxy 了解 v-model 原理 有过简单的介绍,感兴趣的朋友可以看看。

总结一下,vue 响应式基本特征如下:

  • 能够将 html 代码中的模板字符串替换成 data 中对应变量的值
  • 当变量发生改变的时候,所有使用到该变量的位置都应该发生改变
  • 通过 v-model 绑定 input 等能够输入的标签,可以更改变量的值,同时也会使页面中使用该变量的位置发生改变