javascript
文章平均质量分 88
海燕技术栈
既然巅峰留不住,那就重走来时路
展开
-
js中的类型转换
如果你的代码有跳出循环的操作,最好不要选择foreach循环。在JavaScript中的forEach循环中使用return语句,并不会退出或终止循环,forEach循环会继续执行完剩余的所有迭代。📢 这是一个难得的机会,不要错过!在我们的官方微信公众号上留下你的联系方式,我们的热情HR团队将尽快与你取得联系,提供内推支持。forEach循环中的return语句只会从当前的迭代回调函数中返回,而不会中断整个循环。:在爱数,我们秉承着开放、包容、创新的文化,努力激发每个员工的创造力,让我们一起塑造未来。原创 2023-09-27 22:18:05 · 506 阅读 · 0 评论 -
如何理解slot?slot使用场景有哪些?
最常见的用法是将父组件中的内容插入到子组件中的特定位置,从而实现灵活的组件复用。例如,创建一个通用的模态框组件,然后通过插槽在不同情况下插入不同的标题和内容。原创 2023-09-11 21:32:46 · 349 阅读 · 0 评论 -
forEach中return会退出循环吗
如果你的代码有跳出循环的操作,最好不要选择foreach循环。在JavaScript中的forEach循环中使用return语句,并不会退出或终止循环,forEach循环会继续执行完剩余的所有迭代。📢 这是一个难得的机会,不要错过!在我们的官方微信公众号上留下你的联系方式,我们的热情HR团队将尽快与你取得联系,提供内推支持。forEach循环中的return语句只会从当前的迭代回调函数中返回,而不会中断整个循环。:在爱数,我们秉承着开放、包容、创新的文化,努力激发每个员工的创造力,让我们一起塑造未来。原创 2023-09-06 21:42:44 · 912 阅读 · 0 评论 -
你知道Vue 3.0中Treeshaking特性吗?
Vue 3.0引入了Tree-shaking特性,旨在优化构建过程并减小最终生成的代码大小。Tree-shaking是一种在构建时移除未使用代码的技术,通过分析模块的依赖关系,将没有被引用的部分从最终的打包文件中排除掉。这可以大大减少应用的体积,提高性能。举个通俗一点的例子:当我们开发一个应用程序时,会使用各种工具和库来帮助我们构建功能。有时候,这些工具和库可能比我们实际用到的东西要大很多,就像买了一个大箱子,但只用了里面一小部分。原创 2023-09-06 21:41:58 · 193 阅读 · 0 评论 -
React Portals
React Portals(React 门户)是 React 提供的一种机制,用于将组件渲染到 DOM 树中的不同位置,而不受组件层次结构的限制。它允许你将一个组件的渲染内容“传送”到 DOM 结构中的任何位置,通常用于处理一些特殊的 UI 布局需求,如弹出窗口、模态框、通知框等。React Portals 的主要优势是它可以在组件树中的某一级组件上渲染内容,而不受该组件的父组件或祖先组件的影响。这在处理全局或跨层级的 UI 元素时非常有用,因为它不会破坏组件的层次结构。原创 2023-09-06 21:41:04 · 134 阅读 · 0 评论 -
react中受控组件与非受控组件
不要在函数组件主体或 class 组件 render 方法中设置 ref,这可能导致 ref 不一致。输入的值通过状态state来控制,onChange 也会更新状态,所以组件受 React 的控制。函数组件没有实例,它的 ref 会在每次渲染时发生变化,可能导致奇怪的 bug。其值由 React 控制的组件,通常使用 state 来控制和修改组件的值。当ref挂载完成后,ref.current会指向对应的组件或DOM元素。当组件重新渲染时,ref 不会自动变化,需要在组件加载和卸载时手动更新。原创 2023-09-06 21:40:18 · 514 阅读 · 0 评论 -
理解React页面渲染原理,如何优化React性能?
当使用React编写应用程序时,可以使用JSX语法来描述用户界面的结构。JSX是一种类似于HTML的语法,但实际上它是一种JavaScript的扩展,用于定义React元素。React元素描述了我们想要在界面上看到的内容和结构。你使用JSX语法编写React组件的界面结构。JSX语法并不是浏览器原生支持的,所以需要使用工具将JSX代码转换为浏览器可识别的JavaScript代码。通常会使用Babel这样的工具来进行这种转换。是一个用于创建React元素的函数,它接受标签名、属性和子元素作为参数。原创 2023-09-06 21:39:48 · 651 阅读 · 1 评论 -
了解XSS攻击与CSRF攻击
XSS(Cross-Site Scripting,跨站脚本攻击)是一种常见的网络安全漏洞,它允许攻击者在受害者的浏览器上执行恶意脚本。这种攻击通常发生在 web 应用程序中,攻击者通过注入恶意脚本来利用用户对网站的信任,从而在用户的浏览器上执行恶意操作。XSS 攻击可以分为三种主要类型:Stored (持久型) XSS 攻击: 攻击者将恶意脚本存储在服务器上,然后这些脚本被返回给用户,被用户浏览器解释并执行。常见的场景是在用户评论、留言板等地方注入恶意脚本,一旦其他用户访问这些内容,就可能受到攻击。原创 2023-09-06 21:39:04 · 301 阅读 · 0 评论 -
你使用过websocket吗?
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它的出现是为了解决 Web 应用中实时通信的需求。传统的 HTTP 协议是基于请求-响应模式的,即客户端发送请求,服务器响应请求,然后连接关闭。然而,有些场景需要保持长时间的连接,以实现实时性较高的数据交换,这就是 WebSocket 出现的背景。全双工通信:WebSocket 允许客户端和服务器在连接建立后双向传输数据,不像传统的 HTTP 请求-响应模式那样需要等待服务器的响应。持久连接。原创 2023-08-31 17:00:08 · 505 阅读 · 0 评论 -
前端性能优化
性能优化这个问题,在面试的过程中问道的概率还挺大的,特别是对有前端开发经验的面试者来说,基本会被面试官问道关于性能优化的问题。但是在我们做项目的过程中,可能业务比较简单,并没有复杂到需要专门去优化的程度,复杂的业务呢,可能也优化不动。在被问到时可能会被问住(根本不需要优化…)。但是性能优化确实是值得关注的问题,并不是业务复杂到某种程度才去专门做优化。我觉得在平时的编码过程中有良好的习惯,时刻想着怎么写能更好一点,也能达到一种优化的作用。原创 2023-08-31 16:51:43 · 318 阅读 · 0 评论 -
浏览器环境与BOM
当用户在网页上进行各种操作(例如点击、输入、滚动等)时,浏览器会生成相应的事件,使开发者能够捕获这些事件并执行特定的操作。当事件触发时,浏览器会创建一个事件对象,其中包含关于事件的信息。事件首先在最外层的父元素上触发捕获阶段的事件,然后再在目标元素上触发事件,最后在父元素上触发冒泡阶段的事件。是浏览器对象模型(BOM)中常用的功能,用于在预定的时间间隔执行一段代码。虽然不是严格的 BOM 对象,但它们是 Web Storage API 的一部分,在浏览器端存储键值对数据,分别在本地会话中和持久性存储中。原创 2023-08-31 16:51:10 · 82 阅读 · 0 评论 -
函数式编程
函数式编程是一种编程范式,它强调将计算过程视为数学函数的组合和转换,而不是通过改变状态和数据的操作来实现程序的功能。函数用于对数组的每个元素进行映射,生成一个新的数组,新数组的元素是根据映射函数返回的值。高阶函数是函数式编程中的一个重要概念,它指的是能够接受一个或多个函数作为参数,并且/或返回一个函数的函数。函数组合可以通过将一个函数的输出作为另一个函数的输入来实现,创建一系列操作的管道。高阶函数是接受一个或多个函数作为参数,并/或返回一个函数的函数。它们违反了纯函数的特性,因为它们改变了函数外部的状态。原创 2023-08-31 16:50:24 · 114 阅读 · 0 评论 -
层叠上下文、层叠顺序
层叠上下文(Stacking Context)是指在 HTML 和 CSS 中,用于控制和管理元素层叠顺序以及呈现的一种机制。在一个网页中,许多元素(例如文本、图像、背景等)可能会重叠在一起,这时候就需要一种方法来决定哪个元素应该显示在前面,哪个元素应该显示在后面。层叠上下文的原则是通过一系列的规则来确定元素的层叠顺序,这些规则可以根据元素的属性、内容、位置等来决定。每个层叠上下文都是一个独立的层叠环境,元素在不同的层叠上下文中可以相互叠加,但不会影响到其他上下文中的元素。原创 2023-08-26 21:53:43 · 222 阅读 · 0 评论 -
浅谈Fetch API
Fetch API 是一种现代的 JavaScript API,用于进行网络请求和处理响应数据。它提供了一种更简单和更灵活的方式来执行网络请求,取代了传统的 XMLHttpRequest(XHR)。Fetch API 使用 Promise 对象进行异步操作的处理。这使得处理异步操作变得更加直观和易于管理。Fetch API 的语法更加清晰和简洁,可以通过链式调用来定义请求的各个参数。Fetch API 允许您创建请求对象并设置请求头、请求方法、请求体等参数。原创 2023-08-26 21:53:09 · 169 阅读 · 0 评论 -
JavaScript如何实现数据的深拷贝、浅拷贝?
说到深浅拷贝就得提起JavaScript中的数据类型之前的文章中有介绍过,这里就不再细说了。浅拷贝:对基本数据类型进行值复制,对引用数据类型复制引用地址。浅拷贝会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果拷贝的是像对象这样的引用对象,那么浅拷贝会复制引用指向堆内存地址,因此源对象和拷贝对象会共享属性。深拷贝:对基本数据类型进行值复制,对引用数据类型递归复制。深拷贝会另外创造一个一摸一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。// 原始对象a: 1,原创 2023-08-24 22:27:02 · 201 阅读 · 0 评论 -
JavaScript中的this指向,call、apply、bind的简单实现
原文合集地址如下,有需要的朋友可以关注。原创 2023-08-24 22:26:31 · 189 阅读 · 0 评论 -
ES6新特性。对象、数组新增方法
原文合集地址如下,有需要的朋友可以关注。原创 2023-08-24 22:25:59 · 211 阅读 · 0 评论 -
垃圾回收机制
内存泄漏是指程序中已经不再使用的内存却没有被正确释放或回收的情况。在编程中,当对象或数据不再被程序使用,但其所占用的内存空间没有被垃圾回收机制回收,就会导致内存泄漏。内存泄漏可能会导致程序的内存消耗不断增加,最终导致程序的性能下降、崩溃或不稳定。在长时间运行的应用中,内存泄漏可能会导致严重的问题,因此及早识别和修复内存泄漏是非常重要的。当程序使用了一些系统资源(如文件句柄、网络连接等),但在使用完后没有显式地释放这些资源,就会导致内存泄漏。原创 2023-08-24 22:25:28 · 277 阅读 · 1 评论 -
JavaScript基础之基于数据类型和引用数据类型
原文合集地址如下,有需要的朋友可以关注。原创 2023-08-13 14:22:50 · 126 阅读 · 0 评论 -
深入理解MVVM架构模式
原文合集地址如下,有需要的朋友可以关注。原创 2023-08-13 14:20:46 · 562 阅读 · 0 评论 -
浅谈webpack
原文合集地址如下,有需要的朋友可以关注。原创 2023-08-13 14:20:16 · 480 阅读 · 0 评论 -
箭头函数与普通函数
原文合集地址如下,有需要的朋友可以关注。原创 2023-08-13 14:17:28 · 135 阅读 · 0 评论 -
前端存储之sessionStorage和localStorage
原文合集地址如下,有需要的朋友可以关注。原创 2023-08-07 18:04:25 · 400 阅读 · 0 评论 -
理解JavaScript 的发布者_订阅者模式
发布者-订阅者模式是一种软件设计模式,用于实现对象之间的一对多依赖关系。在这种模式中,一个对象(被称为发布者)而其他对象(成为订阅者)可以在发布者上注册自己,以接受特定事件或消息的通知。发布者: 负责维护订阅者列表和发布事件或消息。当某个事件或消息发生时,发布者将通知发送给所有订阅者。订阅者:注册在发布者上,以接受感兴趣的事件或消息的通知。当发布者发布相应事件时,订阅者相应做出响应。发布者维护一个订阅者列表,并提供注册、注销和通知的方法。原创 2023-08-07 18:10:12 · 190 阅读 · 0 评论 -
事件冒泡、事件捕获和事件委托
事件冒泡(Event Bubbling)、事件捕获(Event Capturing)和事件委托(Event Delegation)是 JavaScript 中与事件处理相关的三个重要概念。它们涉及到事件在 DOM 树中传播和触发的方式。事件冒泡(Event Bubbling):事件冒泡是指当一个元素上的事件被触发后,事件会从该元素开始沿着 DOM 树向上冒泡到更高层次的父元素,直至达到根节点。这意味着如果一个子元素上的事件被触发,其父元素上绑定的相同事件也会被触发。事件冒泡是默认的事件传播方式。原创 2023-07-30 13:06:50 · 152 阅读 · 0 评论 -
在react项目中如何引入国际化
原文合集地址如下,有需要的朋友可以关注。原创 2023-07-27 23:17:08 · 766 阅读 · 0 评论 -
如何解决大数据下滚动页面卡顿问题
之前遇到不分页直接获取到全部数据,前端滚动查看数据,页面就听卡顿的,当然这和电脑浏览器性能啥的还是有点关系。但根源还是一次性渲染数据过多导致的,因此就想到解决这个问题,最常见就是虚拟滚动,实现只渲染当前可见的部分,这样浏览器一次性渲染的数据少了。本文介绍虚拟列表和虚拟Table的实现,基于React + ts技术栈。本文只是实现了在固定每项列表高度的情况下的虚拟列表,现实很多情况是不定高的。这个比定高的复杂,不过原理也是一样的,多了一步需要计算渲染后的实际高度的步骤。原创 2023-07-27 23:14:08 · 670 阅读 · 0 评论 -
React+TypeScript项目中如何使用CodeMirror?
之前做需求用到过codeMirror这个工具,觉得还不错,功能很强大,所以记录一下改工具的基础用法,分享给大家。CodeMirror被广泛应用于许多Web应用程序和开发工具,例如代码编辑器、集成开发环境(IDE)、在线教育平台等。它提供了一个可嵌入的、灵活的解决方案,让开发者可以轻松地在网页中实现功能强大的代码编辑器。原创 2023-07-24 22:32:52 · 639 阅读 · 0 评论 -
React常用Hooks
原文合集地址如下,有需要的朋友可以关注React 提供了许多常用的 Hooks,用于在函数组件中添加状态管理、副作用处理和其他功能,下面介绍其中几个常用的,React还有很多其他hooks。原创 2023-07-18 21:57:28 · 214 阅读 · 0 评论 -
React、Vue框架如何实现组件更新,原理是什么?
diff 算法是虚拟 DOM 中用于增量更新的关键算法。它的主要作用是对比两棵虚拟 DOM 树的差异,运算出需要更新的最小量 DOM 操作。用虚拟 DOM 构建出新的DOM树(树A)将新的DOM树与旧的DOM树(树B)进行对比找出差异对比过程中,首先比较树A和树B的根节点如果根节点不相同,直接替换整个DOM树如果根节点相同,再递归地对比和更新它的属性、子节点等只更新变化的部分,不修改相同的节点最后将变化渲染到真实DOM中。原创 2023-07-17 21:35:02 · 946 阅读 · 0 评论 -
什么是Ajax,其底层原理是什么
原文合集地址如下,有需要的朋友可以关注在我们平时做项目时,基本选择使用像axios和fetch这样的工具库来处理数据交互。这些工具库提供了简洁而强大的API,使得开发人员能够轻松地进行HTTP请求和处理响应。然而,很少有人真正了解它们背后的底层原理,以及它们是如何实现数据交互的。其实axios和fetch都是基于XMLHttpRequest(XHR)和浏览器内置的fetch API的封装。XHR是一个JavaScript对象,允许浏览器与服务器进行异步通信。原创 2023-07-16 10:57:18 · 1996 阅读 · 0 评论 -
在 Vue 3 中使用阿里巴巴矢量图标库
手动下载阿里巴巴矢量图标库的字体文件:在阿里巴巴矢量图标库网站上选择您需要的图标,并将其添加到购物车。然后下载文件。解压下载的文件,将字体文件复制到您的 Vue 3 项目的合适目录例如。在MyIcon.vue组件中使用自定义图标:name : {main.js文件引入import {// 引入自定义图标样式文件 import MyIcon from '@/components/MyIcon/MyIcon.vue';原创 2023-07-09 22:17:10 · 626 阅读 · 0 评论 -
你不知道的JavaScript闭包知识
当一个函数能够记住并访问它创建时的词法作用域,即使该函数在其词法作用域之外执行,我们称之为闭包。闭包就像是一个背包,函数和它所需要的变量就像是放在背包里的物品。无论函数在哪里执行,它都能够打开背包并使用背包里的物品。count ++;counter();// 输出:1 counter();// 输出:2在这个例子中,函数返回了一个内部函数。每次调用函数时,都会创建一个新的词法环境,其中包含一个变量count。返回的内部函数可以访问并修改这个count变量。当我们执行并将返回的函数赋值给。原创 2023-07-06 21:55:27 · 72 阅读 · 0 评论