- 标签:
- 工具 (4)
- 建站 (2)
- 数学 (2)
- Linux (12)
- Proxmox (7)
- Javascript (20)
- Vue (22)
- Html (12)
- Css (9)
- Vim (1)
- Java (1)
- Docker (2)
- Shell (1)
- Vuex (2)
- TypeScript (17)
- 网络协议 (2)
- Mac设置 (5)
- 音乐 (1)
- Git (4)
- 代理 (2)
- IOS设置 (1)
- 项目管理 (3)
本文记录一下Vue3的一个基本的开发框架的搭建。主要在公司开发业务,主体框架不用每次都搭建。时间长了就容易忘记了,当初的框架如何搭建的。文章记录的框架搭建的主要实现功能如题,然后研究一些快捷的操作。例如,ts定义的空间自动导入等等。
随着移动端设备的普及,作为前端开发,难免会遇到图片双指放大的需求。触控设备可以直接使用手指进行交互,而且基本上都支持多点触控。所以,查阅了网上大佬的案例,编写一个vue指令,来完成双指放大图片的需求。
前面主要是vue的源码仿写,最主要的是vue的响应式,以及依赖收集。是一个简易版本,和官方源码还是有很多细微差别的,例如数组代理之后改变数组长度,会触发更新之类的。数组还会被收集长度这种依赖关系,以及数组的一些splice,push,shift,unshift,pop这些方法重写,来完成修复一些数组在vue依赖更新中的BUG。
在页面编写中,之前都是使用reactive来包裹对象,这样对象属性的值改变,其对应的effect包裹渲染动作就会被触发。并且通常有函数解构的操作,例如let people = reactive({name:"张三",age:24}); let {name,age} = people;。如果这么结构操作的话,name和age就会变成普通的变量,那么如果在effect中使用的话,就算改变了值也不会触发回调函数。那么为了解决例如此类的需求,vue3提供了ref、toRef、toRefs。
回顾上期的内容,编写了effect中的调度器,主要修改了effect.ts文件。在预览之前的代码的时候会发现一些优化的地方。 在vue代码的需求编辑中,会遇到这样一个例子。例如一个人的姓名分为姓和名,那么我希望在页面上打印出这个人的姓+名,而且在姓或者名改变的时候,页面渲染也会改变。那么就用到了vue的computed来进行操作。旧版的vue2中computed是基于watcher实现的。vue3则是基于effect来实现。另外vue3中的computed写法叫组合式API,而vue2是拿data中的属性来编写computed中的属性,这种叫选项式API(option)。具体的vue3写法如下