三、总结
新特性说完了,下面来说一下感想。
在我看来,vue3最大的特点,不是proxy,或者其他新增的api,而是采用compositiond带来的代码组织方式的变化。相关的reactive、ref等等都是锦上添花,以composition为核心组织代码才是最大也最有价值的改进点。
这种新的代码组织方式和透露的思想更符合编程思维,之前的按照选项组织代码的方式更符合我们平时的思维。由此,我们的代码在更小的粒度上实现了模块化。之前每个组件的data、methods等等还是分开的,现在我们是按照功能去拆分代码,不用区分属性、方法、watch等的声明位置。这也能保证在一个公共的入口(setup方法)我们就可以看到所有相关的功能入口,可以看到所有页面中需要用到的属性和方法。而将更小粒度的属性和方法声明放在各自的函数中。
下面就是一个简单的例子,用mouse系类实现节点的拖拽。
<template>
<div class="node" :style="nodeLayout" @mousedown="mousedownHandle"></div>
</template>
<script>
import { reactive, computed, ref, onMounted, onUnmounted } from "vue";
// 初始化需要的属性
const initLayout = () => {
const layout = reactive({ x: 0, y: 0 });
return {
layout
};
};
// 初始化需要的事件
const initEvent = layout =>