- 博客(29)
- 收藏
- 关注
原创 《vue.js的设计与实现》12-14章小结
常用于让多个组件使用同一个挂载点,并动态切换。3、KeepAlive组件的实例上会被添加两个内部函数_deactivate和_activate,如果有缓存的内容,在渲染器中就要调用_activate函数来激活它,激活的本质就是将组件的内容从隐藏容器搬回来,在卸载组件的操作中调用_deactivate函数使其失活。props本质上是父组件传过来的数据,当props发生变化时,会触发父组件重新渲染,更新过程中,渲染器发现父组件的subTree包含组件类型的虚拟节点,就会调用子组件更新函数,这就叫子组件的。
2023-08-25 11:27:15 132
原创 《vue.js的设计与实现》9-11章小结
4、当真实dom需要移动的时候,获取当前新子节点的前一个子节点prevnode,获取prevnode对应的真实dom的下一个兄弟节点作为锚点,用insert方法(依赖原生的insertbefore)插入到锚点元素之前,就能移动到prevnode对应的真实dom的后面了。3、由于一个虚拟节点被挂载后,对应的真实dom节点会存储在vnode.el中,我们就可以通过旧子节点的vnode.el获取到真实dom,将旧节点的n1.el属性赋值给新节点的n2.el属性,就是真正dom复用的语句。
2023-08-25 11:26:23 101
原创 《vue.js的设计与实现》7-8章小结
由于使用setAttribute函数设置的值总是会被字符串化,渲染器会优先使用DOM Properties来设置属性,当属性为布尔类型且值为空时就手动矫正为true,如果属性没有对应的DOM Properties,则再使用setAttribute函数完成属性设置。更新:在更新操作中,要判断新旧节点的类型,如果新旧节点的type不同,则之间卸载旧节点,挂载新节点。还要判断节点的类型,如果是字符串类型,说明是普通标签元素,如果是对象,说明是组件,由此要调用不同的更新方法。如果旧子节点是数组,就要遍历卸载。
2023-08-25 11:26:00 126
原创 《vue.js的设计与实现》4-6章小结
一、响应系统的整体实现如p49页的代码所示,Vue3使用es6中的proxy进行数据劫持,当副作用函数(用到某个属性的方法)第一次执行的时候,会触发拦截器中的get方法,然后调用了track方法将这个副作用函数添加到存储副作用函数的桶中,相当于收集依赖的过程。这个存储副作用函数的桶的结构为:用weakmap存储不同对象(weakmap当key没有引用被垃圾回收器回收了,对应的键和值就访问不到了,防止内存溢出),用map存储对象的各个属性,各属性的副作用函数用set来存储(可以去重)。(这样的设计当一个属
2023-08-25 11:25:41 98
原创 《vue.js设计与实现》1-3章小结
纯运行时框架会通过一个渲染函数将树形结构的js对象递归的渲染为dom元素,缺点在于无法得知哪些内容会发生改变,不利于之后的更新。vue将两种方式结合,先通过编译器将HTML字符串编译为树形结构的js对象,再通过渲染函数渲染为dom元素。组件其实就是一组dom元素的封装,上述渲染函数会返回虚拟dom对象,再通过渲染器将虚拟dom渲染为真实dom。其中,渲染器会通过判断虚拟dom的tag属性,来区分是普通标签元素还是组件,如果是组件,就先获取组件要渲染的内容,再递归调用渲染器。,虚拟dom其实就是js对象。
2023-08-25 11:24:37 48
原创 为什么Object.prototype.toString.call()可以判断数据类型
Object.prototype.toString.call()
2022-04-21 20:31:47 621
原创 js数据类型的类型转换
js的类型转换函数,包括Boolean()、Number()、parseInt()、parseFloat()、toString()的用法
2022-04-21 19:57:49 68
原创 ubuntu18.04虚拟机共享文件夹
在虚拟机设置中共享文件夹后还需如下操作:vmware-hgfsclient首先查看是否共享成功sudo mount -t fuse.vmhgfs-fuse .host:/Share /mnt/hgfs -o allow_other执行挂载命令cd /mnt/hgfsln -s /mnt/hgfs/share/ ~/share创建软连接到home目录...
2020-07-11 18:11:18 1079 1
原创 ./DWIConvert: error while loading shared libraries错误解决
sudo sh -c "echo '/home/ljw/Downloads/Slicer-4.10.2-linux-amd64/lib/Slicer-4.10' >> ./DWIConvert"ldconfig大于号前的路径为文件当前所在路径大于号后的路径为文件需要在的路径
2020-07-11 18:04:42 215
原创 Ubuntu18.04扩展磁盘容量操作
在设置里扩展容量后还需要进行分区下载gpratedsudo apt-get install gparted运行gpratedsudo gparted
2020-07-10 12:13:05 836
原创 怎么将Windows主机中的文件复制到Ubuntu的Linux虚拟机中
右键-设置-选项共享后Linux的路径为cd /mnt/hgfs/<共享名>
2020-07-09 15:01:53 5300
转载 ubuntu18.04突然无法联网解决方法
sudo service network-manager stopsudo cp /var/lib/NetworkManager/NetworkManager.state /var/lib/NetworkManager/NetworkManager.state.baksudo rm /var/lib/NetworkManager/NetworkManager.state sudo service network-manager start
2020-07-09 14:55:40 454
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人