自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 资源 (1)
  • 收藏
  • 关注

原创 Vue中的Diff算法

`

2024-04-22 19:12:51 290

原创 对作用域链的理解?

【代码】对作用域链的理解?

2023-12-05 09:38:25 132

原创 bind、call、apply的区别?如何实现一个bind?

【代码】bind、call、apply的区别?如何实现一个bind?

2023-12-05 09:07:02 288

原创 大屏可视化布局(地图颜色--高德)

【代码】大屏可视化布局(地图颜色--高德)

2023-11-29 14:14:06 405

原创 说说你对Object.definedProperty()的理解?

writable: false, // 属性不可被重新赋值enumerable: true, // 属性可被枚举configurable: true // 属性可被删除或属性特性修改});// 输出 "John"// 无效,因为属性不可写。

2023-11-13 19:01:36 107

原创 JS数据类型判断都有及几种方式?至少五种?它们的区别?

javascript中常用的数据类型判断方法邮寄下几种:区别如下:

2023-11-13 18:45:32 52

原创 说说你对Vue中mixin的理解

在Vue中,Minxin(混入)是一种重用组件选项的方式,允许你讲一个或者多个组件选项对象(如:data、methods、conputed等)合并到一个组件中去,以便在多个组件中共享相同的代码和逻辑,Minxin提供了一种模块化和复用代码的方式,特别适用于处理横切关注点(corss-cutting-concerns)和共享逻辑。

2023-11-13 18:34:40 426

原创 连续bind()多次,输出的值是什么?为什么?

一次调用 func() 输出 3,第二次调用 func() 输出 3,因为 bind() 方法返回的是一个新函数,并且该函数内部的 this 指向已经绑定了的上下文对象,由于 bar 函数被绑定了两次,所以第二次绑定操作无效,依然使用第一次绑定的上下文对象 foo。在第二次调用 func() 时,重复了第一次的绑定操作,并且新增了一个绑定操作 bind(fiv),但由于前两次绑定已经将 bar 函数的上下文对象固定为 foo 和 sed,所以第三次绑定操作无效,最终结果仍然是 this.x 的值为 3。

2023-10-31 11:34:13 162

原创 人工智能发展前景

随着深度学习、自然语言处理、计算机视觉等技术的成熟,人工智能将能够更好地理解和处理大规模的数据,更高效地学习和推理。例如,未来的智能助手将能够更加准确地理解和回答用户的问题,智能家居系统将能够更好地与人进行交流和互动,智能医疗系统将能够更精准地进行疾病诊断和治疗。此外,人工智能的发展也引发了数据隐私和安全问题,需要加强数据保护和隐私政策,以保障个人和企业的权益。我们需要积极应对人工智能技术带来的挑战,同时善于把握机遇,推动人工智能技术的合理发展,使其为人类社会带来更大的福祉和进步。

2023-10-25 14:49:05 37

原创 大文件断点续传如何实现

断点续传是一个相对复杂的功能,可能涉及到文件分片、并发传输、断点记录等多个方面,具体的实现方式和工具可能会有所不同,具体的实现取决于你使用的技术栈和平台。上传/下载恢复:在重新连接到服务器或重新启动应用程序后,根据保存的断点信息,恢复未完成的传输。根据断点信息,跳过已上传/下载的块,只传输尚未完成的块。断点记录:记录已上传/下载的块和其对应的偏移量或标识,以便在断电或网络中断后能够恢复传输。上传/下载分片:采用分片上传/下载的方式,将每个小块逐个进行传输。可以使用相应的库或工具来实现分片上传/下载,例如。

2023-10-24 10:43:02 160

原创 Umi中的dva的工作流程是什么?(代码展示)

定义model:首先,通过创建一个model文件来定义应用程序中的数据模型,早model文件中,可以初始状态、监听器、异步请求等引入model:在入口文件(app.js/index.js)中引入定义的model。使用model:在组件中使用connect方法连接model和组件,并将模型中的状态和action通过props传递给组件。触发action:action在组件中,可以通过调用props中的函数来触发action,从而改变应用程序的状态。数据流更新:当触发action时,dva会根

2023-09-27 10:04:17 226

原创 为什么useState返回的是数组不是对象?

【代码】为什么useState返回的是数组不是对象?

2023-09-27 09:50:31 234

原创 React的路由的原理是什么?写出其核心代码!

【代码】React的路由的原理是什么?写出其核心代码!

2023-09-27 09:31:36 39

原创 Vue和React生命周期的对比,代码演示

log;log;log;log;;</

2023-09-23 11:37:53 45

原创 React生命周期中的坑,演示代码以及解决方案;

【代码】React生命周期中的坑,演示代码以及解决方案;

2023-09-22 15:08:16 59

原创 手搓redux原生代码?

type。

2023-09-21 08:58:52 45

原创 Ts(TypeScipt)函数重载是什么!

函数重载(Function Overloading)是指在 TypeScript 中定义多个同名函数,但是这些函数具有不同的参数类型或参数数量,从而让编译器能够根据传入的参数类型或数量来确定调用哪个函数。在 TypeScript 中,函数重载可以用来提供对不同参数类型的灵活支持,并且能够在编辑器中提供更准确的代码提示和类型检查。下面是一个函数重载的示例:function processData(data: string): void;function processData(data: number

2023-09-19 09:53:47 246

原创 手动实现防抖、节流函数!

if (!// 示例使用// 将 throttledHandleScroll 绑定到某个元素的事件上,比如窗口的 scroll 事件。

2023-09-19 09:51:47 71

原创 React处理高并发事件!

2. 虚拟化列表:如果您在页面上有大量的列表数据需要展示,可以考虑使用虚拟化列表来优化性能。虚拟化列表只会渲染可见区域的列表项,而不是渲染整个列表。这样可以提高渲染和滚动性能,减少消耗。在 React 中处理大量数据的虚拟化列表可以使用以下代码技巧:在上述代码中,使用了第三方虚拟化库 的 组件来创建虚拟化列表。通过传入 来指定数据总数, 来指定每行的高度, 来指定渲染每行的函数。同时指定列表的宽度和高度来进行可视区域的渲染。这样可以有效地优化大量数据的展示,只渲染可见区域的内容。在上述代码中,手

2023-09-19 09:45:20 79

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

1.Redux 是一个状态管理库,它本质上是一个 JavaScript 的对象,存储着整个应用的状态。在 Redux 中,dispatch 方法可以触发 action 的执行,从而进而更新 store 中的状态。2.Redux 本身并不具备执行异步操作的能力,但是通过引入中间件机制,可以实现异步操作。Redux 中最常用的异步处理方式是通过 Redux Thunk 或 Redux Saga 中间件来实现。下面是它们的实现原理:3.Redux Thunk 中间件实现原理:Thunk 中间件允许 dispa

2023-09-18 20:26:59 87

原创 Webpack有哪些核心概念?

Entry(入口):指定 Webpack 构建的入口文件,用于指导 Webpack 从哪里开始构建内部依赖图。可以配置一个或多个入口,形式可以是字符串、对象或数组。Output(输出):指定 Webpack 最终构建出的文件输出的位置和命名规则。可以配置输出的路径、文件名、公共路径等。Loader(加载器):Webpack 默认只能处理 JavaScript 文件,但通过加载器(loader)可以将其他类型的文件转换为模块。例如,可以使用 Babel-Loader 加载器来处理 ES6+ 的 Ja

2023-09-18 20:23:03 51

原创 offsetWidth/offsetHeight,clientWidth/clientHeight与scrollWidth/scrollHeight的区别?

offsetWidth和offsetHeight:offsetWidth获取元素的宽度,包括元素的边框、内边距和垂直滚动条(如果存在)的宽度。offsetHeight:获取元素的高度,包括元素的变宽、内边距和水平滚动条(如果存在)的高度。clientWidth和clientHeight:clientWidth获取元素的可视区域宽度,不包括边框和滚动条的宽度。他表示元素内部可以显示内容的宽度。clientHeight 获取元素的可视区域高度,不包括边框和滚动条的高度。他表示元素内部可以显示内容的高度

2023-09-18 20:20:31 212

原创 rgba()和opacity()透明效果有什么不同?

Rgbargba():是css函数,用于设置元素的颜色和透明度。rgba()接受四个参数:红、绿、蓝、透明(alpha),分别表示红色通道、绿色通道、蓝色通道和透明通道的值。透明度的值范围是0(完全透明)到1(完全不透明)。通过调整透明度的值,可以在元素上创建不同的半透明效果。rgba()透明度是针对元素本身以及其内容的,而不会影响元素的子元素。opacity:opacity是css属性,用于设置元素的整体透明度。opacity接受一个介于0到1之间的值,表示元素的透明度,其中0表示完全透明,1

2023-09-18 20:07:39 303

原创 typeScript的内置数据类型有哪些?

基本类型:boolean:布尔类型,表示true或false。number:数值类型,包括整数和浮点数。string:字符串类型,表示一串字符。null:表示空值。undefined:表示未定义值。复合类型:Array:表示数组。Tuple:表示一个已知元素数量和类型的数组。Object:表示对象。Function:表示函数symbol:表示唯一且不可变的值。高级类型:Enum:枚举类型,表示一组明明德常量值。Any:表示任意类型,可以为任何值。Void:表示没有返回值的类型。

2023-09-18 19:52:57 116

原创 useEffect的第二个参数,传空数组和传依赖数组有什么区别?

传空数组:当第二个参数是空数组[]时,表示useEffect只会在组件爱你挂载和卸载时运行一次。相当于componentDidMount和componentWillUnmount的效果。它告诉React该effect不依赖与任何props和state,因此不需要再重新运行effect。这在那些只需要在组件挂载和卸载时执行一次的场景下非常有用。传依赖数组:当第二个参数是包含依赖的数组的时候,表示useEffect将根据依赖项的变化重新执行effect函数。如果依赖项发生变化,useEffect将在重新渲

2023-09-18 19:44:02 285

原创 写一个转换数据格式的方法,将对象转换为数组?

【代码】写一个转换数据格式的方法,将对象转换为数组?

2023-09-18 19:36:17 61

原创 原生 JS 如何实现上拉加载下拉刷新?

在原生应用中,实现上拉加载和下拉刷新可以通过以下几个步骤:1. 引入相关库或框架:你可以使用一些开源库或框架,如SwipeRefreshLayout、RecyclerView等,它们提供了方便的功能来实现下拉刷新和上拉加载。2. 设置下拉刷新:根据你使用的库或框架的文档,你需要在你的布局文件中添加下拉刷新组件,并在相应的代码中设置下拉刷新的监听器。一般来说,你需要实现一个回调方法,在这个方法中执行刷新相关的操作,比如请求新数据。3. 设置上拉加载:同样,根据使用的库或框架的文档,你需要在你的布局文件中

2023-09-14 14:40:17 391

原创 Redux中同步action与异步action最大的区别是什么?

同步action:创建方式:同步action是通过调用action创建函数直接返回一个包含type和payload等属性的普通对象。执行方式:同步action会立即执行被发送到reducer,通过reducer更新应用的状态。异步action:创建方式:异步action是通过使用中间件,(例如:Redux-Thunk、Redux-saga )等,来处理的,异步action创建函数返回一个函数,在这个函数中可以进行异步操作,并最终通过dispatch发送一个或者多个action。执行方式:异

2023-09-13 09:18:04 58

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

Redux-saga:处理方式:Redux-saga使用了Generator函数来处理异步操作,通过监听特定的action类型,可以执行更复杂的异步流程控制,例如:并行请求、取消请求等。使用场景:Redux-saga适用于复杂的异步操作场景,例如:需要处理多个依赖关系,需要取消请求,需要处理复杂的流程控制等。它提供了更强大的工具和语法来处理一哦不操作,单页相对复杂一些。Redux-Thunk:处理方式:Redux-Thunk允许action创建函数返回一个函数,在这个函数中可以执行异步操作,并

2023-09-13 09:03:52 96

原创 在使用redux过程中,如何防止定义的action-type的常量重复?

使用命名空间:给每个模块或组件action-type添加一个独特的前缀或命名空间,以确保其唯一性,例如:可以在定义action-type常量时候加上模块的名换或路径作为前缀。使用字符串常量拼接:将action-type的各个部分拼接成一个字符串常量,确保其唯一性,可以使用字符串拼接运算或模版字符串字面量来实现。使用工具库:使用工具库来生成唯一的action-type常量。例如:可以使用uuid库来生成唯一标识符作为action-type。

2023-09-13 08:53:50 31

原创 弹性盒子的缩放机制是怎样的?

flex属性有三个值:flex-grow、flex-shrink和flex-basis。flex-grow:指定弹性的子项的放大比例,默认值为0,当设置为0的时候,子项不会根据剩余的空间进行伸缩。当设置为正数的时候,子项会按照比例进行分配剩余的空间。flex-shrink:指定弹性盒子的缩小比例,默认值为1.当可用空间不足时,子项根据,flex-shrink的比例进行缩小,可以设置为0,表示子项不允许缩小。flex-basis:指定弹性子项在主轴的初始大小,默认值为auto,可以设置为具体长度值(如:

2023-09-13 08:43:56 115

原创 移动端1像素的解决方案?

使用 CSS3 的 transform: scale():可以通过将元素进行缩放来实现1像素线条的效果。例如,可以创建一个高度为 1 像素的伪元素,并使用 transform: scaleY() 将其缩放至所需的宽度。使用 border-image:可以创建一个包含1像素线条的 PNG 图片,并使用 CSS3 的 border-image 属性将其应用到元素的边框上。通过调整 border-image-slice 和 border-width 来实现1像素线条的效果。使用 viewport unit

2023-09-13 07:30:35 36

原创 谈谈你是如何做移动端适配的?

屏幕尺寸和像素密度等信息,动态设置样式属性。媒体查询(Media Queries):使用 CSS3 中的媒体查询功能,根据不同的屏幕尺寸和设备特性,编写不同的样式规则。通过针对不同屏幕宽度应用不同的 CSS 样式,实现移动端的适配。视口设置(Viewport):通过设置 标签中的 viewport 属性,指定网页在移动设备上的显示方式。可以通过设置 width、initial-scale 和 maximum-scale 等属性来控制页面的缩放和布局。弹性布局(Flexbox):使用 CSS 的

2023-09-12 10:08:08 32

原创 什么是闭包,应用场景是什么?

闭包(Closure)是指函数可以访问并操作其词法作用域之外的变量的能力。简而言之,闭包是一个函数和其相关的引用环境(包含函数定义时的非局部变量)的组合。闭包的应用场景有以下几个:封装私有变量:通过使用闭包,可以创建一个函数,该函数内部有一些私有变量,外部无法直接访问这些变量。这样可以实现数据的封装和隐藏,避免变量被意外修改,提供更好的安全性。创建函数工厂:闭包可以用于创建具有相似行为的函数,但每个函数可以具有自己的独立状态。通过在闭包中定义和返回函数,可以创建函数工厂,用于生成特定配置的函数。实现

2023-09-12 10:05:52 246

原创 ![] == ![],![] == [],结果是什么?为什么?

可将变量转换成boolean类型,null、undefined、NaN以及空字符串(‘’)取反都为true,其余都为false。所以![] 运算后的结果就是 false也就是 [] ==![] 相当于 [] == false。

2023-09-12 10:04:45 185

原创 CDN的特点及意义?

加速内容传输:CDN 在全球各地建立了分布式节点,将内容缓存到离用户最近的节点上。这样,用户在请求内容时可以从离自己更近的节点获取,从而减少了传输距离和延迟,提高了内容传输速度。提高网站性能:通过将静态文件(如图片、CSS、JavaScript)缓存在 CDN 节点上,减轻了源服务器的负载压力。同时,CDN 能够根据用户的地理位置和网络状况选择最优的节点,使用户获取内容的速度更快,从而提高了网站的整体性能和用户体验。增加网站的可靠性和可扩展性:因为 CDN 在全球范围内有大量的分布式节点,当源服务

2023-09-12 10:03:30 45

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

性能优势:Immutable.js 提供了持久化数据结构,使得修改操作时,不会直接修改原有数据,而是返回一个新的数据结构。这样做非常高效,可以避免大量的内存拷贝和数据重复创建,提高了整个系统的性能表现。并发安全:由于 JavaScript 是单线程执行的语言,因此在多个线程或者异步执行任务时,我们需要防止数据被误修改。使用 Immutable.js 可以保证数据的不可变性,避免了并发环境下的数据安全问题。易于维护和调试:由于 Immutable.js 的不可变性,减少了代码中的副作用,使得程序更易

2023-09-12 09:59:12 34

原创 重绘和回流(重排)是什么,如何避免?

重绘:当元素的外观样式发生改变,但不影响其布局时,浏览器会执行重绘操作。这意味着浏览器会重新绘制受影响的元素,以更新其可见的外观,但不会改变元素在文档流中的位置。回流:当元素的尺寸、布局或其他影响其几何属性的属性发生变化时,浏览器会执行回流操作。回流会导致浏览器重新计算元素的布局和位置,并重新绘制受影响的部分或整个页面。为了避免频繁的重绘和回流,可以采取以下措施:使用 CSS3 动画:CSS3 动画利用 GPU 加速,可以更高效地实现动画效果,减少重绘和回流的次数。批量修改样式:通过改变元素的 cl

2023-09-12 09:56:58 393

原创 iframe有那些缺点?

性能问题:使用 iframe 会增加页面的加载时间和渲染复杂度,特别是当嵌入的内容较多或者内容需要跨域访问时。安全性问题:嵌入的内容可能来自不受信任的第三方网站,这可能会导致一些安全风险。例如,通过 iframe 可以进行点击劫持和XSS攻击。难以调整样式:跨域的 iframe 内容受到同源策略的限制,使得在外部页面中调整 iframe 内部内容的样式和布局变得困难。SEO 难度:搜索引擎爬虫可能无法正确解析和索引通过 iframe 加载的内容。这会影响搜索引擎优化(SEO),使得嵌套的内容难

2023-09-12 09:53:20 192

原创 如果需要手动写动画,你认为最小时间间隔是多久,为什么

16毫秒显示器刷新率(Refresh Rate):显示器刷新率指的是屏幕每秒更新图像的次数,通常以赫兹(Hz)表示。常见的显示器刷新率为60Hz(即60次/秒)或更高。为了实现流畅的动画效果,最小时间间隔应与显示器的刷新率相匹配或更小。人眼感知:人眼对动画的感知能力有限,通常认为超过16毫秒(1秒/60)的时间间隔,人眼难以察觉到帧之间的差异。因此,将时间间隔设置为16毫秒可以提供足够的流畅度,并保持动画效果自然。

2023-09-12 09:50:20 69

JavaScript 正则

JavaScript 正则

2023-04-21

JavaScript Math、String函数

JavaScript Math、String函数

2023-04-21

JavaScript Date函数

JavaScript Date函数

2023-04-21

JavaScript Array函数

JavaScript Array函数

2023-04-21

JavaScript 的事件处理

JavaScript 的事件处理

2023-04-21

JavaScript 的DOM操作

JavaScript 的DOM操作

2023-04-21

JavaScript 关于面向对象

JavaScript 关于面向对象

2023-04-21

JavaScript 的 BOM操作

JavaScript 的 BOM操作

2023-04-21

JavaScript 函数

JavaScript 函数

2023-04-21

JavaScript中 对象、数组的使用

JavaScript中 对象、数组的使用

2023-04-21

JavaScript中运算符使用

JavaScript中运算符使用及例子

2023-04-21

JavaScript数据类型

JavaScript数据类型 及例子

2023-04-21

javascript语法

js语法结构 例子

2023-04-21

js Header.vue

Header.vue

2022-08-28

空空如也

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

TA关注的人

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