自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 React+SSE+数据流形式输出

sse基于http协议,是一种服务端主动向客户端推送消息得技术。

2024-07-15 11:39:09 1634

原创 Proxy的使用和Vue3响应式原理

是因为在早期的ECMA规范中没有考虑到对对象本身的操作如何设计会更加规范,所以将这些API放到了Object上面,ES6新增了Reflact,让我们这些操作集中到了Reflact对象上,在get拦截器中通过track函数收集依赖,封装一个depend方法收集 ,创建有个weackMap,用于存储每个属性的map 在创建对应的map 用于存储对应的属性值。在ES6中新增了一个Proxy类,如果我们希望一个对象的相关操作,我们可以创建一个代理对象,之后对对象的所有操作,都通过代理对象来完成。

2023-03-20 14:10:11 445

原创 WeakSet和WeakMap的使用

对元素的引用是弱引用,如果没有其他对象引用,GC会对该对象进行回收--------类似WeakMap。对元素的引用是弱引用,如果没有其他对象引用,GC会对该对象进行回收。不允许遍历,因为遍历的时候会有指针指向该对象,会对GC回收造成影响。当我们显示绑定this到另外一个对象的时候,会抛出异常。WeakMap的key只能使用对象,不能使用其他类型。不允许遍历--------类似WeakMap。Vue3的响应式原理用的就是Weakmap。只能存放对象类型,不能存放基本数据类型。

2023-03-15 10:16:12 360

原创 对象创建的方式以及优缺点

缺点,每次创建一个对象都会创建eating函数和runing函数,如果有成千上万个对象,很明显造成了不必要的内存消费。因为每一个函数都有一个prototype属性,这个属性是一个对象,它包含了通过构造函数创建的所有实例共享的属性和方法。通过两者模式结合,完美解决了两者单独使用所带来的问题,通过构造函数来初始化对象属性,通过原型对象来实现函数的复用。,但是问题来了,没有办法通过传入参数来初始化值,如果属性或者方法改变会影响所有的对象实例。,只是简单的封装了复用代码,没有建立起对象和类型间的关系。

2023-03-10 11:27:16 236

原创 闭包访问过程以及内存泄露

看上图可以由于foo函数内部返回一个bar函数,因此fn指向的最终地址为bar函数对象,函数foo在执行完以后就会销毁,但是它的AO对象,依然是被bar函数指着,而bar 函数,此时被fn指针指向,因此CG算法在检测的时候会检测到该对象仍然是被指针指向,所以就不会被销毁。,是一个结构体,存储了函数和一个关联的环境,和函数最大的区别就是,当捕捉闭包的时候,它的自由变量会在补充的时候被确定,即使脱离了捕捉的上下文,也能照成运行。此时bar函数也执行啦,那么bar 也会创建自己的AO对象,也会创建自己的调用栈、

2023-03-06 19:46:01 240

原创 V8引擎解析JavaScript原理

所有V8引擎就实现了,延迟解析的方案,它的作用就是将不必要的函数进行预解析,也就是只解析暂时需要的内容,而对函数的全量解析会在函数被调用时才会及进行。这是因为并不是所有的JavaScript代码 在一开始都会被执行 如果对所有JavaScript代码进行解析必然会影响网页的运行效率。第一部分: 在代码执行前 在parser转成AST过程中,会将全局定义的变量,函数放入到GO中但是不会赋值,生成AST树后,会被Ingitiom转成字节码,之后的过程就是代码的执行过程。

2023-02-02 20:01:41 1453

原创 浏览器渲染过程以及优化方案

优化CSS :浏览器每次遇到标签的时候,就要发出请求获得CSS文件,然后才继续构建Dom树和CCSSOM树 合并所有CSS成一个文件 减少请求次数 优化渲染速度。浏览器根据HTML规范将字符串转换成各种令牌如:, 这样的标签以及标签中的字符串和属性都会被转化为令牌。在构建好DOM树和CSSOM树之后,浏览器就会拥有两个相互独立的对象集合,必须将两个树结合在一起,构建渲染树。当浏览器遇到link标签的时候,浏览器开始解析CSS,像构建Dom树一样构建CSSOM树。

2023-02-02 14:36:35 230

原创 Vue基本原理和双向绑定原理

这样的方式数组或者对象都可以进行监测,像声明一个数组a:[1,2,3,4,5,6],我们可以通过下标直接修改胡数据也可以触发set,但是当数组中的元素数量可多的时候,就需要给每个元素都加上set,get,这样必然会对性能产生影响,所以这种方式只适合和劫持对象。每个组件实例都会有一个watcher程序实例,他会在组件渲染的过程中国把属性记录为依赖 之后当setter调用的时候会通知watcher重新计算 从而使它关联的组件实现更新。当一个Vue实例被创建的时候,Vue会遍历data中的属性。

2023-01-30 15:07:11 422

原创 基于Promise封装Ajax请求

大佬: 能用,以上代码有点臃肿,不易维护,如果请求地址是同一个,请求方式不同,我们每次都写一遍,大大增加了劳动力,缩短了在世界存活的时间。大佬:当然可以,以上代码看起来已经客服了代码臃肿,重复的弊端,但是还有一个弊端就是如果有多个回调函数处理时,就陷入了一种回调地狱的状态。面试官经常会让手写一个promise封装,直接写出一个请求分装即可,最具代表性。额外问题2:为什么要选择Promise进行封装呢?额外问题1:为什么要封装Ajax,难道不封装就不能用吗?利用上述的Promise,问题就得到了最好的解决!

2022-11-01 14:18:57 525

原创 超易懂全局作用域 函数作用域 块级作用域

变量的声明函数的声明。

2022-10-11 14:21:05 195

原创 vue3中Hooks用法

"hooks" 直译是 “钩子”,它并不仅是react,甚至不仅是前端界的专用术语,而是整个行业所熟知的用语。通常指:系统运行到某一时刻时,会调用在该时机被注册的回调函数而在vue中。hooks的定义会更加模糊,姑且总结一下:在vue组合式API中被定义为,以"use" 作为开头的,一系列提供组件复用,状态管理等开发能力的方法。

2022-10-03 10:28:26 2378

原创 React消息订阅与转发机制实现兄弟组件传值

react订阅与发布机制

2022-08-23 15:46:45 550

原创 React中this指向undefind???

this的指向

2022-08-09 20:54:27 262

原创 vue3 watch的用法

watch的用法

2022-07-29 15:39:35 34100 3

原创 配置用户片段代码生成器

代码生成器

2022-07-29 14:27:26 250

原创 mock的基本使用-------axios篇

mock

2022-07-29 09:10:32 1258

原创 vue3 watchEffect用法以及清除副作用

传入一个对象,定义get,set方法 二,侦听数据的变化 watchEffect: 用于自动收集响应式数据的依赖 watch: 手动指定侦听的数据源具体用法:可以获取watchEffect返回值函数,调用该函数即可...

2022-07-06 16:41:09 3384

原创 js for in循环 for of循环的区别以及用法

js循环区别

2022-06-27 11:05:27 874

原创 vue全家桶

vue全家桶1.vue-cli脚手架1.1安装node环境2.2安装脚手架2.vue-Router的使用什么是vue-Router?vue-router的使用jquery传参和params传参的区别路由懒加载嵌套路由路由守卫3.Vuex的使用什么是vuex?初始化项目1.vue-cli脚手架1.1安装node环境1.下载node.js : https://nodejs.org/zh-cn/安装步骤,一直点击next即可安装成功2.安装成功后,打开cmd 输入 node -v即可查看安装成功后的no

2022-04-26 09:14:46 4579

原创 git详细使用教程

文章目录git是什么?git和SVN的区别如何安装Git?git是什么?Git目前是世界上最先进的分布式版本控制系统(主要用于团队协作开发),与之相似的还有SVN等…为数太多,就不一一列举啦GIt工作原理:workspace:是项目所在的文件目录下Repository: 初始化下当前所在的分支Remote:远程仓库Index:暂存区git和SVN的区别Git是分布式版本控制系统,没有中央服务器,每个团队的队员的电脑都是一个完整的版本库,若A修改了文件,提交到仓库的时候,B也可以看到,而且

2022-03-24 10:06:46 6440

原创 Git安装与基本使用

一,安装GIT1.打开官网 Git - Downloading Package下载好以后........2.点击安装,一直点击next 知道完成安装,就会出现一下 (中途会有个选择安装位置,可以自定义)二.Git的使用1.在本地创建一个workspace 打开该文件右击Git bash 打开git控制台2. 因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。执行git config --global user.name "用户名"(..

2022-02-16 21:22:01 2269

原创 误删 IDEA中的.imi文件,肿么办?

咳咳~~~~~~正所谓苦海无涯,回头是岸,在进化的路上总是头发变绿,tui~~ 上指,焦头烂额,目眦尽裂,接下来让小编给各位小爹打一针上头药..........***********************************************高能异常***************************************************第一针:首先介绍一下imi文件和idea文件的 作用和意义.imi文件iml是 intellij idea的工程配置文件...

2021-11-02 17:44:04 3669 1

原创 MySQL安装及基本使用教程

一,下载MySQL数据库官网下载地址:MySQL。点击后进入首页如下:1.步骤一:点击downloads2.步骤二:点击社区版进行下载3.步骤三:点击下载依赖包步骤四:下载步骤五:点击跳过直接下载即可,你要是想注册也可以注册二,安装mysql打开刚刚下载好的安装包,进行安装步骤一:勾选协议,点击下一步步骤二:选择安装的类型,选择自定义类型步骤二:接着点下一步就可以,当出现这个页面,最好别更改端口号步骤三:设置服务...

2021-09-23 21:25:08 226 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除