自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 React组件之间如何通信

State(状态)提升:当多个组件共享相同的状态时,可以将该状态提升到共同的父组件中,然后通过props传递给需要使用这些状态的子组件。上下文(Context):通过使用React的Context API,在父组件中创建一个上下文,然后子组件可以通过该上下文访问共享的数据。这种方式适用于组件之间嵌套较深,且需要共享数据的情况。组件可以通过发布事件的方式来通知其他组件,然后其他组件通过订阅事件的方式获取到这些通知并进行相应的处理。父组件可以将数据传递给子组件,并通过props的方式将更新后的数据传递回来。

2023-09-05 20:56:50 86

原创 谈谈你对immutable.js的理解

Immutable.js提供了一系列高效的操作方法,例如添加、删除、更新等,这些方法都会返回新的数据对象,保持了不可变性。:Immutable.js的主要优势在于提供了不可变的数据结构,即一旦创建了一个数据对象,就无法在原地进行修改。immutable.js通过提供不可变的数据结构和高效的操作方法,帮助我们更好地管理和操作数据,减少了副作用和bug的产生。是一个JavaScript库,它的核心思想是,一旦创建了不可变的数据,就不能再进行修改,而是通过创建新的数据来表示新的状态。

2023-09-05 20:49:41 75

原创 CDN的特点及意义

快速的网页加载速度能够减少用户的等待时间,提高用户的满意度。同时,CDN还能够降低网络延迟和减少数据传输的丢失,提供更稳定、可靠的用户体验。:CDN具有较强的抗DDoS攻击能力。由于CDN的分布式特性,攻击流量可以被分散到各个边缘节点上,从而减轻了主服务器的负载和防御压力。:CDN通过将网站的内容部署到全球各地的边缘节点,使用户能从就近的服务器获取内容,从而大幅提高网站的访问速度。:通过将内容缓存在边缘节点上,CDN可以减少主服务器的负载,降低带宽使用量,并降低了网站运营的成本。

2023-09-05 20:42:07 76

原创 为什么for循环比forEach性能高

3、性能上:对于数组arraylist来说,是顺序表,使用for循环可以进行顺序访问,速度比较快;对于linedlist来说,是单链表,使用for循环每次都要从第一个元素读取next域来读取,速度非常慢;循环方法用于调用数组的每个元素,并将元素传递给回调函数。foreach有的也叫做增强for循环,forEach其实是for循环的一个特殊简化版。就是通过下标,对循环中的代码反复执行,功能强大,可以通过index取得元素。2、数据结构:for循环是随机访问元素,foreach是顺序链表访问元素。

2023-09-05 20:30:20 75

原创 如何做移动端适配的

使用响应式的CSS框架,例如Bootstrap、Foundation、Tailwind CSS等,可以根据不同设备的屏幕大小和方向,自动调整和适应页面布局和样式。:使用移动端开发框架(如React Native、Ionic、Flutter)可以更快捷地进行移动端适配,同时提供许多常用的组件和布局风格。要进行适配,需要对不同浏览器和设备进行测试,并根据需要进行特定的样式和功能修复。:为了避免在移动设备上加载过大的图片,可以使用适当的图片压缩和优化,同时使用CSS技术(如。)来控制页面元素对触摸操作的响应。

2023-08-18 21:57:22 75

原创 前端面试题整理

前端面试题整理及大纲前言HTML&CSSJavaScriptVUE2.xVUE3.xTypeScriptReact项目相关浏览器工具其他

2023-08-18 21:24:20 123

原创 redux-saga和redux-thunk的区别与使用场景?

它使用生成器函数和 yield 关键字来简化异步流程的编写与管理,并通过监听 action 来触发相应的异步操作。Redux Thunk 和 Redux Saga 都是用于处理异步操作的 Redux 中间件,但适用于不同的使用场景。Redux Thunk 更适用于处理简单的异步操作,而 Redux Saga 则适用于复杂的异步操作场景。使用场景:Redux Saga 适用于复杂的异步操作场景,例如多个连续的异步操作、长轮询、并发请求等。它提供了更多的控制和灵活性,可以用于处理更复杂的异步逻辑。

2023-08-18 21:19:58 119 1

原创 redux本来是同步的,为什么它能执行异步代码?实现原理是什么

通过使用 Redux Saga,我们可以在一个地方集中管理应用的异步逻辑,而不需要将异步操作的逻辑分散在不同的地方。Saga 中间件会拦截和执行 dispatch 的异步 Action,并在合适的时机发起新的 Action。Redux 本身是同步的,但通过使用中间件,特别是 Redux Thunk 和 Redux Saga,我们可以将异步操作与 Redux 结合使用。这些中间件在 Redux 的流程中拦截和处理异步操作,并在适当的时机触发新的 action,从而实现了异步代码的执行。

2023-08-18 21:08:20 86 1

原创 React中的虚拟dom的理解

通过使用虚拟 DOM,React 可以减少对真实 DOM 的直接操作次数,从而提升性能。因为对真实 DOM 的操作是非常昂贵的,而对于虚拟 DOM 的操作则相对较快。此外,虚拟 DOM 也使得开发者更容易编写和维护复杂的 UI,因为它提供了一种声明式的方式来描述组件的结构和行为。初始渲染:当 React 组件第一次渲染时,它会创建一颗完整的虚拟 DOM 树,描述了整个组件的初始状态。然后,React 会使用旧的虚拟 DOM 树和新的虚拟 DOM 树之间的差异进行对比,从而找出需要更新的部分。

2023-08-18 21:02:10 117 1

原创 react新出来两个钩子函数是什么?和删掉的will系列有什么区别?

新的钩子函数是为了解决原来的生命周期方法可能引发的一些问题而引入的。新的钩子函数使得 React 组件在编写和理解时更加清晰和可预测。它们提供了一种更灵活、更安全的方法来处理组件的状态和副作用。它允许组件在更新之前捕获一些信息(例如滚动位置),并在更新后使用这些信息(例如恢复滚动位置)。它的返回值将作为第三个参数传递给。是类似的,但有一个关键区别:它在进行 DOM 更新之前被调用,而不是在 DOM 更新之后。React 已经在 v16.3 版本中废弃了。

2023-08-18 20:58:06 82 1

原创 shouldComponentUpdate有什么作用?

中进行判断和比较,可以避免不必要的组件重新渲染,从而提高应用的性能。特别是在组件层级很深或组件数量众多的情况下,避免不必要的重新渲染可以显著节省性能开销。的变化,或者其他条件,来判断是否需要重新渲染组件。可以在这个方法中编写自定义逻辑,根据需要来控制组件的渲染。是React组件生命周期中的一个钩子方法,用于决定组件是否需要进行重新渲染。方法返回一个布尔值,根据这个值确定是否允许进行组件的重新渲染。,即允许组件进行重新渲染。发生变化时都会触发重新渲染。

2023-08-18 17:05:27 131 1

原创 render方法在哪些情况下会执行

React会通过虚拟DOM和Diff算法来比较前后的状态变化,以最小化DOM的更新和重新渲染。父组件进行重新渲染:当父组件重新渲染时,其子组件也会随之重新渲染,这会导致子组件的。的值,也不应该与外部交互。方法可能会被React优化跳过,以提高性能。没有发生实际改变,React可能会阻止不必要的重新渲染。方法来更新组件的UI,确保UI与最新的数据保持一致。初始渲染:当组件被首次加载到DOM中时,会调用。方法应该是纯函数,不应该有副作用,即不应该改变。方法来强制重新渲染组件,此时也会触发。另外,值得一提的是,

2023-08-18 17:00:51 161 1

原创 props和state相同点和不同点?

需要注意的是,Props和State在代码编写和组件设计中有不同的使用场景和目的。理解它们的区别和适用情况,能够更好地设计和管理React组件的数据流和状态管理。

2023-08-18 16:54:42 60 1

原创 typescript 中都有哪些修饰符,说明他们的作用?

在使用修饰符时,可以根据需要使用多个修饰符进行修饰,例如:public static 或。:受保护修饰符,表示成员或类只能在其声明的类内部和派生类(继承的类)中访问。:静态修饰符,表示成员类可以直接通过类名访问,而无需实例化类。: 抽象修饰符,表示类或成员只能被继承或实现,不能实现实例化。: 私有修饰符,表示成员或类只能在其声明类内部访问。:默认修饰符号,表示成员或类可以被任何地方访问。:只读修饰符,表示成员在声明后不能被进行修改。

2023-08-16 19:04:23 59 1

原创 函数重载的理解

(Function Overloading)是指在同一个作用域内,可以定义多个同名的函数,但这些函数的参数类型或参数个数必须不同。函数重载的目的是为了提供更便捷的函数调用方式,让函数在处理不同类型或数量的参数时能够有不同的行为。

2023-08-15 22:04:59 26 1

原创 使用css实现一个三角形

【代码】使用css实现一个三角形。

2023-08-14 22:10:33 23

原创 周考一理论总结

强缓存:不会向服务器发送请求,直接从缓存中读取资源,在chrome控制台的network选项中可以看到该请求返回200的状态码;协商缓存:向服务器发送请求,服务器会根据这个请求的request header的一些参数来判断是否命中协商缓存,如果命中,则返回304状态码并带上新的response header通知浏览器从缓存中读取资源。

2023-08-14 09:38:12 124 1

原创 清除浮动的几种方式,各自的优缺点

较常用且推荐的清除浮动的方式是使用after伪元素清除浮动。它不需要增加额外元素,且语义化较好。优点:简单易实现,不需要增加额外元素,适用于父容器有确定高度的情况。缺点:需要在CSS中定义clearfix类,不够语义化。优点:简单易实现,适用于多个浮动元素相邻的情况。缺点:需要增加额外的无意义元素,不够语义化。优点:简单易实现,不需要增加额外元素。缺点:需要在CSS中定义伪元素样式。缺点:会出现滚动条,可能影响布局。优点:不需要增加额外元素。

2023-08-13 21:44:52 156 1

原创 说说javascript内存泄漏的几种情况

如果在含糊内部创建闭包,并且闭包被外部作用域之外的代码引用,那么在闭包中使用的变量将无法被释放。:当从DOM中删除或替换节点时,节点仍可能继续被其他对象引用,导致内存泄露。确保在不需要使用节点时,将其从DOM中移除,并将其他对象的引用解除。在函数内部声明变量时,使用var、let或const关键字来限制其作用域、避免将变量泄露到全局作用域。:绑定到DOM元素的事件监听器,如果不正确移除,会导致该元素无法被垃圾回收。:两个或多个对象互相引用,形成一个循环,导致它们无法被垃圾回收。

2023-08-13 21:31:35 55 1

原创 通过原生js 实现一个节流函数和防抖函数,写出核心代码

这两个函数都是通过闭包的方式实现的,节流函数throttle将在指定的延迟时间内只执行一次传入的函数,而防抖函数debouce将在指定的延迟时间内没有新的函数调用时才执行一次传入的函数。防抖函数会延迟执行函数,直到指定的间隔事件内没有新的函数调用。如果在指定的时间间隔内有新的函数调用,则会重新计时。它会定时执行函数,但无论间隔时间内有多少次函数调用,都只会执行一次,这样可以确保在指定时间间隔内函数不会被频繁地执行。函数将会延迟执行,确保不会在指定的延迟时间内频繁触发事件。

2023-08-13 21:13:27 48 1

原创 Git命令并附带命令作用

'远程仓库地址' 本地仓库连接远程仓库。'内容' 提交到本地仓库 ,添加注释。第一次进行远程提交命令 后面是分支名称。'指定文件' 可以进入工作区还原。新建一个分支,并切到该分支。'分支名称' 删除分支。'唯一标识' 版本穿梭。删除远程仓库的源头。可以进行工作区返回。

2023-08-08 20:21:31 26

原创 封装一个使用递归方式的深拷贝方法deepClone

定义的方法接收一个对象obj作为参数,并返回对象的深拷贝。如果是列表或元组,我们使用递归方式对其中的每个元素进行深拷贝,并将结果放入一个新的列表中返回。如果是字典,我们同样使用递归方式对其中的每个键值对进行深拷贝,并将结果放入一个新的字典中返回。方法可以确保在拷贝包含嵌套对象的复杂数据结构时,每个对象都正确地深度拷贝,从而避免共享引用导致的意外修改。注意,在进行拷贝前需要确保对象的数据结构是可拷贝的。:必须定义一个或多个结束条件,即满足某个条件是,递归不再继续执行,直接返回结果或执行其他操作。

2023-08-07 21:41:06 73 1

原创 面向对象编程的方式的理解

简称OOP,是指一种编程规范,它将程序中的数据和操作数据中方法组织成对象,通过对象之间的交互来实现程序的功能。在面向对象编程中,程序由多个对象组成,每个对象都有自己的属性(数据)和方法(函数),并且进行分类和抽象。

2023-08-07 21:27:59 18 1

原创 js类型检验的方式

每个对象在创建时都会有一个 constructor 属性,指向创建该对象的构造函数。可以通过比较对象的 constructor 属性来判断其类型。:可以使用typeof操作符检查一个值的类型,它会返回一个字符串,表示值的类型。:可以使用instanceof操作符检查一个对象是否属于某个类或构造函数。方法来更精确地判断数据类型。

2023-08-06 20:58:25 32

原创 事件循环的理解,以及应用理解

是一种在单线程环境下实现异步操作的机制。它是现代浏览器和Node.js等平台中的核心概念之一。在单线程环境中,所有的代码都在同一个执行线程上执行,如果遇到长时间运行的任务,会导致线程阻塞,导致用户界面无响应。为了解决这个问题,引入事件循环机制。

2023-08-06 20:13:46 83

原创 闭包的理解,优点缺点,应用场景

内部函数可以引用外部的变量,即使外部函数执行完毕,这些变量仍然可以被内部函数访问和操作。闭包是一种强大而灵活的编程概念,具有数据封装和状态保持的优点,但也需要注意内存占用和复杂性等缺点,适当选择使用闭包以提高代码的可维护性和灵活性。闭包可以保持外部函数执行时的状态,即使外部函数已经执行完毕,闭包仍然可以访问和修改这些状态。闭包能够将函数内部的变量和逻辑封装起来,不被外部访问和修改,提高代码的安全性和可靠性。:闭包可以用于创建私有变量,限制外部对变量的直接访问和修改,提高代码的封装性。

2023-08-06 19:42:38 86

空空如也

空空如也

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

TA关注的人

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