《Vue.js设计与实现》精读|Vue.js 为什么选择声明式框架

67 阅读3分钟

读完你将收获

1⃣️ 知识点

命令式框架和声明式框架的区别

2⃣️ 面试真题

你觉得虚拟DOM快吗?还有没有比它还快的方式?

什么是命令式框架

📌 命令式编程(Imperative Programming)强调的是“如何做”。在命令式编程中,需要明确每一步如何执行。命令式框架则是利用这种编程范式的框架。

这是一个原生JavaScript示例,创建了一个简单的计数器。在命令式框架中,我们需要明确指定每个操作,包括DOM元素的选取、事件处理函数的编写等。

// 命令式框架示例
const countElement = document.getElementById('count');
const incrementButton = document.getElementById('increment');

let count = 0;

const updateCount = () => {
  countElement.innerText = `Count: ${count}`;
};

incrementButton.addEventListener('click', () => {
  count++;
  updateCount();
});

updateCount(

什么是声明式框架

📌 声明式编程(Declarative Programming)强调的是“做什么”,而不是“如何做”。在声明式编程中,主要关注输入和输出,即他们想要的结果,而不是实现这个结果的具体步骤。声明式框架则是利用这种编程范式的框架。

这是一个Vue示例,创建了一个简单的计数器。Vue的声明式特性允许我们在模板中声明状态和交互,而不需要编写大量的命令式代码。

<body>
  <div id="app">
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>

  <script>
    new Vue({
      el: '#app',
      data: {
        count: 0
      },
      methods: {
        increment() {
          this.count++;
        }
      }
    });
  </script>
</body>

为什么 Vue.js 要选择声明式的设计方案

📌 原因就在于声明式代码的可维护性更强

框架都是用来解决“人类”的问题的,而不是机器的问题

框架存在的意义在于,在它的适用范围内,保证了较好性能的前提下,提供了更好的开发体验

声明式框架命令式框架
特点关注结果关注过程
性能✅ 胜出
找出差异的性能消耗 + 直接修改的性能消耗直接修改的性能消耗
可维护性✅ 胜出
展示的就是我们要的结果需要维护实现目标的整个过程,包括要手动完成 DOM 元素的创建、更新、删除

如果我们能够最小化找出差异的性能消耗,就可以让声明式代码的性能无限接近命令式代码的性能。

面试真题

你觉得虚拟DOM快吗?还有没有比它还快的方式?

虚拟DOM本身并不一定更快

它的速度取决于多个因素,包括虚拟DOM的创建、比较和更新成本,以及具体的使用场景和实现方式。

在某些情况下,有比它更快的方式

在某些情况下,直接操作DOM可能比虚拟DOM更快。虚拟DOM存在一定的开销,特别是在处理大型数据列表时。如果你的应用需要高性能,优化特定的DOM操作可以更快。

总的来说,没有一种方法可以在所有情况下都是最快的。选择哪种方法取决于应用程序的具体需求、性能瓶颈和使用场景。