- 博客(8)
- 收藏
- 关注
原创 Vue2和Vue3响应式原理
通过Object.defineProperty()对每个属性进行监听,当对属性进行读取时会触发getter,对属性进行修改时会触发setter。Vue实例中data属性是一个定义的响应式数据对象,data中的每个属性都会带有__ob__属性,它是一个Observer对象(响应式的关键)。源码中是在初始注册响应式函数innitState中调用了initData函数来给data中的属性创建Observer实例;data属性分为两种处理情况:对象属性处理和数组属性处理。
2024-05-10 15:41:11 618 2
原创 vue3 + vue-pdf-embed实现放大、缩小、滚动翻页功能
起初以切都还顺利,到了将滚动条设置到顶部 / 底部时,是通过子组件的pdf内容页来获取滚动距离,但是一直没有获取到,卡了半天突然想起项目中有个地方也修改过滚动距离,查看了下代码,才发现是获取的父容器的滚动距离。后来想了想,scrollTop为什么是父容器在改变,子组件一直都是零,个人思考结论是:滚动条是父容器的滚动条,不是子组件的。滚动翻页功能是最近的优化需求,在官网没有找到直接实现的方法,翻了翻网络,都是其他依赖的帖子,而且也没有滚动翻页的功能,思来想去,决定通过监听滚动距离来实现。
2024-01-22 17:16:17 1952
原创 JS模块化
module是一个 object ,保存着当前模块的信息,exports 是一个用于导出模块变量的对象,而 require 函数用于导入模块。而使用 require([依赖模块1,依赖模块2], function(){ }) 语法定义的模块,它的依赖模块会被打包成单独的一个 chunk 并且被异步加载。缺点:同步阻塞的模块加载方式,使得在浏览器加载大模块(或依赖大量模块)脚本文件时,加载过程就可能出现白屏,无响应等问题,用户体验很不好。和 AMD 一样,它的定义接口使用一个名为 define 的函数。
2024-01-17 17:10:29 340
原创 Promise简单记录
pending(等待状态),fulfilled(成功状态),rejected(失败状态)。状态流转只会是pending => fulfilled,或者pending => rejected;简单理解是一种为了解决回调地狱和异步问题的解决方案。从语法本质上看是一个对象,可以获取异步操作的消息。宏任务:script、setTimeout、setInterval I/O (一个独立的主流程)任务分为宏任务(macro task)、微任务(micro task),同优先步。脱离主流程的顺序单独执行的队列。
2024-01-09 16:14:01 376 1
原创 JavaScript中的对象
原型链:每个对象初始化时都会在内部生成一个属性prototype(原型),当访问对象属性时,如果对象内部不存在该属性,就去prototype里查找,而每个prototype也会有自己的prototype,按此规律一直找下去形成的连接就可以称为原型链。constructor:对象中的属性—构造函数,在被创建时自动生成,源自原型对象(构造函数),指向构造函数的引用。js实现继承:本质上是重写原型对象,将父对象属性方法作为自对象的属性方法,同时重写构造函数。原型对象:用来初始化对象的函数。**三、new **
2023-12-14 14:28:13 648 1
原创 原生input + vue 输入限制遇到的问题
结合其他群友的说法,event.target.value和v-model绑定变量,二者的值其实还是独立的,但vmodel绑定了,又修改了event.target.value,修改event.target.value可以成功,但却不是修改的绑定变量,导致冲突。回顾编写逻辑代码的时候,试了很多种实现途径,写代码的逻辑没有提前规划,在试错中修正,导致思路没有很清晰,忽略v-model和event.target.value的细节差异。身高体重分别最多输入3、4位数,且只能输入数字。,所以真实的值刷新出来了。
2023-08-14 10:29:36 172
空空如也
Tinymce El-upload
2023-04-18
vue3全局配置axios引用失败
2022-09-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人