首页/文章/javascript

javascript

289 篇文章

javascript08-31
阅读

DOM截图snapDom介绍

在日常业务开发里, DOM 截图 几乎是刚需场景。 无论是生成分享卡片、导出报表,还是保存一段精美排版内容,前端同学都绕不开它。 但问题来了——市面上的截图工具,比如 html2canvas,虽然用得多,却有一个致命缺陷:慢! 普通截图动辄 1 秒以上,大一点的 DOM,甚至能直接卡到怀疑人生,用户体验一言难尽。 最近发现一个保存速度惊艳到我的库 snapDOM 。 这货在性能上的表现,完全可以用“碾压”来形容: 👉 相比 html2...

#学习
javascript08-31
阅读

提升前端性能的 几个高级 API

一、requestIdleCallback:巧用浏览器空闲时光 当浏览器忙碌于渲染、响应等关键任务时,低优先级任务若贸然插队,极易引发卡顿。requestIdleCallback 应运而生,它能让任务在浏览器闲暇之际执行。 它适用于日志上报等场景。借助以下代码,可以高效调度任务: 这就像在喧嚣的火车站,巧妙地利用等候间隙,迅速而优雅地完成额外任务。 二、IntersectionObserver:智能洞察元素与视口的邂逅 过去,开发者常依...

#学习
javascript08-18
阅读

Blob 居然这么强大

一、什么是 Blob? Blob(Binary Large Object)是 HTML5 提供的一个用于表示不可变的、原始二进制数据块的对象。 特点: 不可变性:一旦创建,内容不能修改。 可封装任意类型的数据:字符串、ArrayBuffer、TypedArray 等。 支持 MIME 类型描述,方便浏览器识别用途。 示例: 二、Base64 编码的前世今生 虽然名字听起来像是某种“64进制”,但实际上它是一种 编码方式 ,不是数学意义上...

#学习
javascript08-09
阅读

Web Worker 多线程魔法

你是否曾遇到过网页因为复杂计算而卡顿的情况?今天,让我们一起探索Web Worker的神奇世界,看看如何用多线程技术解决性能瓶颈,并实现流畅的图片压缩功能! 为什么需要Web Worker? 想象一下,你在一个繁忙的餐厅里,只有一位服务员(主线程)负责点餐、上菜、结账所有工作。当客人突然暴增时,这位服务员就会手忙脚乱,其他客人只能干等着… 这就是JavaScript的现状—— 单线程 !所有任务都在一个线程中排队执行,一旦遇到复杂计算(...

#学习#面试
javascript08-07
阅读

🌐AST抽象语法树

AST 是前端开发中一个非常重要的概念,它就像是代码的“编译器”,能够帮助我们理解和操作代码。本文将深入探讨 AST 的原理和应用,带你从零开始了解 AST。 一、什么是 AST? AST(抽象语法树)是一种树形结构,用于表示程序代码的语法结构。它将代码分解为一系列的节点,每个节点代表代码中的一个元素,如变量、函数、表达式等。AST 是编译器和解释器的基础,也是代码分析和转换的关键工具。 1\. AST 的结构 AST 的结构通常包括以...

#学习#面试
javascript08-07
阅读

Document Picture-in-Picture API 打造沉浸式多任务体验

一、问题场景:企业视频会议中的“多任务困境” 你接手了一个远程协作平台的重构项目。核心需求之一是: 用户在参加视频会议时,需要同时查看文档、填写表单、甚至浏览资料 。但传统全屏模式下,一旦切出页面,视频就暂停或被遮挡,协作效率大打折扣。 产品经理提了个“看似简单”的需求: “能不能让参会人的小窗口一直浮在桌面上?像微信视频那样?” 这背后,正是 Document Picture in Picture API 的典型应用场景。 二、解决方...

#学习
javascript08-05
阅读

打字机效果是如何实现的

分析效果 使用 AI 对话的时候,文字是一个字一个字蹦出来的?它不是等所有内容生成完毕后一次性展示,而是以一种流畅、实时的“打字机”效果呈现,这种体验的背后,隐藏着一种高效的Web技术。它就是 服务器推送事件(Server Sent Events,简称 SSE) 什么是 SSE 从根本上说,SSE 是一种允许服务器 单向 、 持续 地向客户端(浏览器)推送数据的Web技术。 可以把它想象成一个 电台广播 : 服务器 是广播电台,持续不断...

#学习#面试
javascript08-04
阅读

Promise 从原理到实现

前言 是 异步编程的核心概念之一,它为我们提供了一种更优雅的方式来处理异步操作。 本文将全面剖析 的工作原理,并逐步实现一个符合 规范的 。 正文 一、Promise 基础概念 代表一个异步操作的最终完成(或失败)及其结果值。它有 种状态: 1. pending : ,既不是成功,也不是失败状态 2. fulfilled :意味着操作 完成 3. rejected :意味着操作 状态一旦改变就不能再变,只能从 变为 ,或从 变为 。 二...

#学习#面试
javascript08-04
阅读

前端大数据渲染性能优化 - 分时函数的封装

背景 在一次性需要处理大量dom渲染操作时,直接渲染页面会非常耗费性能,从而阻塞js渲染进程,造成页面卡顿,比如在页面上一次性插入50万个dom操作,代码如下: 优化 在某些情况下,我们可以使用 虚拟节点来减少频繁的dom操作 这段代码大大减少了频繁操作dom,只在最后一次性将dom挂载到页面,但最终一次性挂载50万个节点的dom还是会非常耗费性能,页面依然卡顿,但不否认它确实有一定的优化效果,只是在这里优化效果并不明显,所以我们需要将...

#学习