标签: 前端开发

92 个内容

笔记(50)

JavaScript单线程事件循环下,利用Promise/async/await实现并发控制。主要方案:1. Scheduler类(推荐),基于队列+计数器,add任务自动调度max并发;2. asyncPool函数,Set跟踪执行任务+Promise.race限流批处理。核心:闭包劫持、递归触发、错误处理防死锁。

Elliot Yang·
6 浏览

i18n-ally 是 VS Code 开源 i18n 扩展,解决多语言开发中翻译键查找难、修改繁、管理乱痛点。主要功能:内联批注、悬停预览、提取翻译、可视化 UI、机器翻译及死键报告;支持 Vue/React 等框架、多格式,配置简单即用。

Elliot Yang·
11 浏览

CommonJS (CJS) 因动态导出、动态require及对象引用特性,难以支持Tree-shaking,而ESM静态结构天然支持。工具如Webpack有优化,但效果有限。建议优先ESM,提供`module`/`main`双版本,标记`sideEffects: false`优化体积。(128字符)

Elliot Yang·
15 浏览

主线程阻塞时,JS `requestAnimationFrame` 完全停止(主线程执行);CSS Keyframes 动画部分执行:Layout/Paint 属性(如width/color)阻塞,transform/opacity 由合成器线程/GPU独立渲染,确保流畅。建议性能动画优先合成器属性。(128字符)

Elliot Yang·
20 浏览

本文阐述JavaScript Proxy中`receiver`参数的核心作用:代表发起操作的对象。主要解决原型链继承时getter/setter `this`绑定偏移问题。通过`Reflect.get(target, prop, receiver)`和`Reflect.set(target, prop, value, receiver)`正确绑定`this`至调用者。最佳实践:handler中始终传入`receiver`。

Elliot Yang·
18 浏览

文章探讨Service Worker中Cache Storage与浏览器Disk Cache竞速的核心矛盾:SW拦截导致缓存优先但可能慢于Disk Cache。提出使用`Promise.race`并行启动`caches.match`和`fetch`,谁先返回有效响应即用,并缓存网络结果。建议SWR模式优化性能,注意流量消耗。(148字符)

Elliot Yang·
23 浏览

WebAssembly (Wasm) 在计算密集型任务中比 JavaScript (JS) 更快,主要因二进制格式减少解析、强类型避免运行时检查、手动线性内存消除 GC 暂停。适合视频/图像处理、3D 模拟等,与 JS 互补。

Elliot Yang·
28 浏览

**文章介绍免费Chrome扩展Figma Export,作为Figma Dev Mode的替代品。** **关键功能:** 从Figma设计中导出代码片段,支持开发者快速获取UI组件代码。 **资源:** [Chrome Web Store](https://chromewebstore.google.com/detail/figma-export/oamappfeofngblhbamhhkpkbpoeooiba),[GitHub仓库](https://github.com/powerfulyang/figma-export)。(98字符)

Elliot Yang·
44 浏览

Vite开发服务器中,`server.middlewares.use`将中间件置于末尾,易被内置中间件(如静态资源、SPA fallback)优先拦截,导致API请求(如`/api/auto-icon`)或OPTIONS预检失败。**方案**:使用`server.middlewares.stack.unshift({route:'',handle})`抢占首位,确保CORS头响应及路径精确匹配,特别适用于Vite 7+ SSR场景。(148字符)

Elliot Yang·
42 浏览

本文总结Tiptap/ProseMirror自定义NodeView开发的两大陷阱:1)`chain().setNodeSelection()`后更新命令因事务未提交失效,方案用`tr.setNodeMarkup(pos, undefined, {latex})`直接修改底层事务;2)NodeView点击事件闭包捕获旧node数据,方案在DOM attribute存最新状态并事件中读取。

Elliot Yang·
59 浏览

Safari不支持VP8/VP9 WebM透明视频(Alpha通道)。主要方案:1.双源`<video>`(Safari用HEVC MOV,FFmpeg转换);2.Canvas渲染Lottie;3.视频拼接彩色+Alpha遮罩;4.优化WebM编码(yuva420p)。推荐双源方案。

Elliot Yang·
122 浏览

文章解释JavaScript Promise作为状态机特性:状态一旦确定(fulfilled/rejected),多次`await`同一Promise对象均立即返回相同结果,而非重复执行内部逻辑。主要用于异步结果缓存,避免重复请求。示例与注意事项详述错误处理及函数复用场景。

Elliot Yang·
56 浏览

本文介绍了使用`WeakMap`和`Proxy`实现简化版Vue3响应式系统的原理和实现。关键问题在于如何自动追踪依赖和避免内存泄漏。解决方案是利用`WeakMap`存储对象依赖关系,Proxy拦截get/set操作,实现依赖收集和触发。

Elliot Yang·
102 浏览

本文深入探讨了 WeakMap/WeakSet 的底层原理和高级应用。WeakMap/WeakSet 基于弱引用,不会阻止垃圾回收,常用于绑定私有状态、DOM 元素元数据、响应式系统和缓存。同时介绍了WeakRef/FinalizationRegistry的结合使用,并总结了使用陷阱和注意点。

Elliot Yang·
103 浏览

本文总结了JavaScript中使用`new RegExp()`的注意事项与安全转义方法。针对动态生成正则时出现的转义问题和安全风险,提出了使用`escapeRegExp`函数对用户输入进行转义的方案,并封装了`makeSafeRegex`函数以支持更安全的正则构造,同时避免替换中的特殊字符被转义。

Elliot Yang·
91 浏览

VueUse 的 `toReactive` 用于将包含多个 `ref` 的对象转换为响应式对象,避免访问时频繁使用 `.value`。适用场景为批量解包 ref,不适用于单个 ref 或对象属性非 ref 的情况。替代方案包括 `toRef`、模板自动解包或 `computed`。

Elliot Yang·
80 浏览

本文介绍了 JavaScript 原生深拷贝 API `structuredClone`。针对传统深拷贝方案(如 JSON 转换、第三方库)的局限性,`structuredClone` 提供了更广泛的类型支持(包括 Date、RegExp、Map/Set 等)和循环引用处理能力,并具有更好的性能表现。但需注意其不支持函数和 DOM 节点,且存在兼容性要求。

Elliot Yang·
144 浏览

本文介绍了在Vue 3 + TypeScript项目中,使用`vue-tsc -b`进行类型检查的最佳实践。针对多包/大型项目,`vue-tsc -b`支持Project References构建模式,实现依赖顺序编译和增量构建。对于单体应用,建议使用`vue-tsc --noEmit`进行类型检查。

Elliot Yang·
223 浏览

`watch` 和 `watchEffect` 都是 Vue 框架中用于监听数据变化的 API。`watch` 默认不立即执行,且仅在新旧值不同时触发,可深度监听。`watchEffect` 则会立即执行并追踪依赖,任何依赖的 setter 被调用都会触发执行,即使新旧值相同。

Elliot Yang·
103 浏览

本文对比了 Vue 3 中 `watch` 和 `watchEffect` 的区别。`watch` 仅在依赖值真正改变时触发,而 `watchEffect` 只要依赖的响应式数据 setter 被调用就会重新执行。示例代码清晰展示了同值赋值时 `watchEffect` 触发而 `watch` 不触发的现象。

Elliot Yang·
118 浏览

本文介绍了一个通用的`cleanAudio`函数,用于清理`<audio>`节点。该函数接收选择器或节点作为参数,实现停止播放、移除音源、释放资源、清理事件监听器以及移除DOM节点。通过克隆节点替换并移除的方式,有效清理了所有事件监听器,并释放资源。

Elliot Yang·
76 浏览

本文介绍了使用`Intl.Collator`对象进行自然排序的方法,解决了文件名排序中数字识别问题。通过设置`numeric: true`和`sensitivity: 'base'`选项,`Intl.Collator`可以实现忽略大小写和变音符号的数字敏感排序。该方法适用于国际化应用,且比自定义排序函数更高效。

Elliot Yang·
99 浏览

在使用 motion-v 或 framer-motion 实现拖拽效果时,`drag-momentum` 默认开启惯性滚动。本文介绍了如何通过设置 `:drag-momentum="false"` 来手动关闭拖拽后的惯性效果,以实现更精确的控制。

Elliot Yang·
95 浏览

Vue 组件卸载前需暂停音频播放。`onBeforeUnmount` 在 DOM 卸载前执行,可访问 DOM 元素;`onUnmounted` 在 DOM 卸载后执行,无法访问。因此,应使用 `onBeforeUnmount` 来确保在 DOM 销毁前暂停音频,避免潜在错误。

Elliot Yang·
83 浏览

CSS Scroll Snap 模块用于控制滚动容器在滚动结束时自动“吸附”到指定位置。核心属性包括 `scroll-snap-type` (定义捕捉行为), `scroll-snap-align` (定义对齐方式), `scroll-snap-stop` (控制强制性) 和 `scroll-padding` (设置内边距)。文章通过示例展示了其在轮播图、全屏滚动等场景的应用,并强调了使用注意事项和浏览器支持情况。

Elliot Yang·
138 浏览

本文介绍了 CSS 滚动捕捉模块中的 `scroll-margin` 属性,该属性用于定义元素在滚动定位时的外边距空间,解决锚点定位偏移和滚动捕捉精确控制问题。文章详细介绍了其语法、属性值、工作原理和应用场景,例如解决固定导航栏遮挡问题等。

Elliot Yang·
119 浏览

CSS 的 ID 选择器不支持模糊匹配。文章介绍了使用属性选择器实现 ID 属性的模糊匹配方案。通过`[id^="task-"]`(开头匹配)、`[id*="task"]`(包含匹配)、`[id$="-task"]`(结尾匹配)等方法,可以达到类似通配符的效果。

Elliot Yang·
89 浏览

在使用`scrollIntoView`时,导航栏遮挡目标元素是个常见问题。本文提供了多种解决方案,包括推荐的CSS `scroll-margin-top` 属性,以及JavaScript手动计算偏移的`scrollTo`方法,还涉及动态获取导航栏高度和Intersection Observer等。最佳实践建议优先使用CSS方案。

Elliot Yang·
191 浏览

Tiptap 用户希望了解如何在不使用 Paragraph 插件的情况下使用 Text 和 Document 节点。该问题源于对 Tiptap 依赖关系的疑问。解决方案可能涉及直接使用 Text 和 Document 节点,绕过 Paragraph 插件。

Elliot Yang·
100 浏览

Vite启动时会预构建依赖,但按需引入某些包(如element-plus样式文件)可能触发Vite强制优化依赖并导致页面刷新。解决方案是在`vite.config.js`中配置`optimizeDeps.include`,手动包含这些依赖,避免Vite自动侦测错误,减少不必要的刷新。 另一种方案是尝试`optimizeDeps.holdUntilCrawlEnd`配置。

Elliot Yang·
212 浏览

本文解释了 CSS 中 `serif`(衬线体)和 `sans-serif`(无衬线体)通用字体族的使用。它们作为 `font-family` 的备选项,能保证跨平台字体显示。选择时需考虑阅读场景:长文本选用衬线体,屏幕显示和标题选用无衬线体。

Elliot Yang·
186 浏览

Vue 3 允许在`` 中使用 `generic` 属性声明泛型类型参数,支持多个参数、`extends` 约束和默认类型。当无法自动推断类型时,使用 `@vue-generic` 指令显式指定类型。`vue-component-type-helpers` 库用于在 `ref` 中使用泛型组件的引用。

Elliot Yang·
195 浏览

本文介绍了在浏览器中实现Unicode字符映射的技术方案,主要解决将特殊Unicode字符(如数学符号)转换为普通字符的问题。方案包括:利用现代浏览器原生支持的`String.prototype.normalize()`方法,以及针对旧版浏览器的polyfill库unorm。同时提及了normalize-unicode-text等轻量级库。

Elliot Yang·
138 浏览

网页通过`debugger`语句阻止控制台打开,本文提供了多种强制打开和绕过无限`debugger`的方法。包括快捷键、浏览器菜单、禁用断点、条件断点、重写函数、替换文件内容以及添加到忽略列表等方案,并针对不同浏览器和特定情况提供实用技巧。

Elliot Yang·
521 浏览

本文介绍了前端架构模式 MVVM,重点在于 Vue.js 如何利用 MVVM 实现数据驱动视图。核心在于双向数据绑定和数据劫持,解决了手动操作DOM的问题,但同时也存在调试困难和内存开销大的缺点。

Elliot Yang·
130 浏览

讨论了 textarea 双击选中单词时连带选中空格的问题。提出了两种规避方案:双击后按住鼠标左移,或使用快捷键 Ctrl+Shift+Left 精确选择单词。针对用户体验给出了实用技巧。

Elliot Yang·
108 浏览

UInt8Array是JavaScript中用于处理二进制数据的类型化数组,底层基于ArrayBuffer,每个元素占1字节,范围0-255。它在图像处理、WebSocket通信、WebAssembly交互等现代Web开发中广泛应用,需注意内存管理、字节序和安全问题,并可结合Streams API、WebGPU等新技术优化性能。

Elliot Yang·
150 浏览

BehaviorSubject是RxJS中具有记忆功能的Observable,始终持有并广播当前值,适用于状态管理。需提供初始值,新订阅者立即获得当前值。源码通过`_value`属性存储当前值,并重写`_subscribe`方法。应用包括状态管理、表单联动等。需注意内存泄漏、过度触发等性能问题,并可与现代框架集成。

Elliot Yang·
161 浏览

Comyui 框架采用基于 Proxy 的响应式系统和分层编译流水线,优化渲染性能和内存管理。其状态管理借鉴原子化设计,并支持跨平台渲染和服务端渲染优化。Comyui 生态建设尚不完善,但未来将在编译时优化和新兴技术整合方向发展。

Elliot Yang·
113 浏览

DOM复用从克隆节点发展到虚拟DOM和Web Components。现代方案如SSR、微前端和对象池优化性能。SolidJS和WebAssembly预示未来。选型需考虑应用规模、性能,避免过度设计。

Elliot Yang·
123 浏览

CSS通用字体族是数字排版基石,涵盖衬线、无衬线、等宽等。`system-ui`可适配系统UI字体。文章解析了各字体族的特性、适用场景、跨平台适配、性能优化及未来可变字体趋势,强调字体选择是信息密度的艺术。

Elliot Yang·
128 浏览

`registerProcessor` 是 Web Audio API 的关键,通过 AudioWorklet 实现高性能音频处理。它在独立线程中注册处理器,使用 SharedArrayBuffer 传递音频数据,并保障实时性。高级应用包括动态参数控制、多处理器协作、WebAssembly 集成和机器学习。需注意兼容性、内存泄漏和延迟问题,并关注 WebGPU 音频加速等前沿趋势。

Elliot Yang·
206 浏览

竞态问题源于异步操作完成顺序不确定。RxJS用流式编程和操作符(switchMap, concatMap等)控制异步流程,但学习曲线陡峭。@tanstack/query通过queryKey自动合并请求、取消和缓存,声明式API更易上手,擅长服务端状态同步。混合架构结合两者优势,性能优化和错误处理至关重要。

Elliot Yang·
138 浏览

Screen Wake Lock API允许Web应用保持屏幕唤醒。底层通过操作系统接口和浏览器进程协作实现,需安全上下文和用户交互。工程实践需关注生命周期管理和性能优化,如结合电池API和帧率控制。兼容性有差异,需防页面跳转丢失锁等问题。未来发展包括新增唤醒锁类型和用户行为感知锁管理。开发者需平衡功能与资源消耗。

Elliot Yang·
153 浏览

RxJS高阶映射操作符(mergeMap、concatMap、switchMap、exhaustMap)提供不同并发策略处理异步流。文章剖析其机制,对比应用场景(自动补全、防重提交、批量上传),强调内存泄漏防护,并探讨了调试技巧和未来发展,提出微前端架构中的策略选择建议。

Elliot Yang·
117 浏览

本文深入探讨 Tiptap 富文本编辑器的静默操作,通过设置 `addToHistory` 为 false 绕过历史记录。提供了链式操作、原始事务、扩展封装等实现方案,并讨论了状态不一致、扩展冲突等问题及对策,以及性能优化和协同编辑场景下的争议。未来 Tiptap 将引入 Operation Batching API 优化历史记录管理。

Elliot Yang·
228 浏览

本文深入解析了CSS垂直对齐属性`vertical-align`,包括其本质、取值体系、基线原理及常见问题(如图片底部间隙)。探讨了`line-height`的继承与使用,并提供了多种垂直居中方案及现代布局替代方案。最后,给出了实践技巧和设计系统视角下的垂直对齐建议。

Elliot Yang·
196 浏览

本文深入解析浏览器渲染机制,涵盖DOM/CSSOM构建、布局、绘制、合成等关键流程。重点剖析重排重绘原理及优化策略,如异步布局、合成层加速和读写分离。同时探讨前沿技术Houdini、容器查询,并提供Chrome DevTools等性能分析工具使用指南。

Elliot Yang·
112 浏览

本文深入探讨 Chrome 开发者工具的高级用法和扩展开发。涵盖HTTP重定向状态码的工程实践,Chrome扩展的架构设计与安全,DevTools在网络、HAR文件、Web Worker和控制台等方面的调试技巧,以及未来发展趋势,强调分层调试思维和持续学习。

Elliot Yang·
115 浏览

浏览器事件传播遵循捕获、目标、冒泡三阶段模型。通过`stopPropagation`等方法控制传播,CSS `pointer-events`等实现事件穿透。事件委托提高性能,合成事件优化框架。被动监听器提升滚动性能,`AbortController`防内存泄漏。关注事件优先级、Web Components事件处理及DevTools调试技巧,遵循最佳实践。

Elliot Yang·
111 浏览

动态(42)

E
Elliot Yang
公开

bm.md 行为统计,发现大家对这个主题切换效果特别感兴趣,这个是一个开源的项目👇

https://404.li/theme-toggle

浏览:102点赞:0
E
Elliot Yang
公开

这周一直在实践 SpecKit (宪章 -> 需求澄清 -> 技术方案 -> 编码 -> 检查改进) 规范 AI 编程,尝试不写代码来构建一个复杂一点的应用。

题目是:使用“mediabunny”构建一个音视频格式转换的网页应用,不使用服务端和 FFMPEG.wasm。

选用“mediabunny”的原因是:新出现的 npm 库大模型的知识库里边没具体知识,模型必须使用工具才能完成。

最终能交作业的模型是 Codex 和 Sonnet 4.5。Codex 的 UI 挺好的,Sonnet 4.5 做出来了,但是 UI 太 AI 了。

Codex 做出来的效果:https://format-studio.run-on.workers.dev/

其他模型 GLM 4.6 、M2、KAT-Coder 都未完成作业。能进入编码阶段的是 GLM 4.6,但是代码里边一堆 document 导致 Next.js 报错太多就没往下走了。M2、KAT-Coder 在技术方案阶段没满意的产出,有的是工具不调用、有的是不听话。

K2、Qwen、DeepSeek 没测试,提示词和方法放下面👇了,你们有兴趣可以自己测试,或者复现 Codex 的作业。


测试工具:

SpecKit + Claude Code / Codex

配置 MCP:

deepwiki 和 context7

预置条件:

初始化 Next.js 16 和 shadcn-ui 。

初始化 SpecKit 配置。

原始提示词:

请使用开源库 mediabunny 实现一个名叫 "Format Studio" 的网页应用, 类似很多年前 Windows 中的"格式工厂"这款软件, 可以转换视频文件和音频文件格式。 纯前端应用,无任何服务端依赖。 必须使用 mediabunny 的功能, 不要使用 FFMpeg.wasm 做降级。 如果你不熟悉 mediabunny, 可以使用 deepwiki 和 context7 调研 mediabunny 后,完成后续任务。 参考资料: <a href="https://github.com/Vanilagy/mediabunny">https://github.com/Vanilagy/mediabunny</a> <a href="https://mediabunny.dev/guide/converting-media-files">https://mediabunny.dev/guide/converting-media-files</a>
Format Studio 使用 Mediabunny 在浏览器内转换音视频文件,当前预设:高效视频 WebM, ⑦ 能力已就绪,但部分预设不可用。 ⓘ 详情 输出预设 选择目标格式,可通过高级设置进一步调整分辨率、比特率与音频参数。 高效视频 WebM v(高级设置 (内置预设 采用 AV1+Opus,文件更小,适合现代浏览器在线播放。 拖放视频或音频文件到此处 支持 MP4、WebM、MP3、WAV 等常见格式,单文件大小不超过4GB 或点击选择文件 拖入多个文件或点击选择,将使用「高效视频 WebM」排队转换 转换队列 队列概览(共1个任务已完成1 全部开始 取消全部 重试失败 清除已完成 已完成1 demo-screen.mp4 已完成 高效视频 WebM·3.1 MB.10秒 进度:100% 入队时间:12:51:41开始时间:12:51:41完成时间:12:51:42 佥 清除
浏览:90点赞:0
E
Elliot Yang
公开

使用 react 制作视频 https://www.remotion.dev/

浏览:120点赞:0
E
Elliot Yang
公开

flex 布局我希望不是瓜分而是出现滚动条?
如果不想瓜分空间,可以用 flex: 0 0 auto 或固定尺寸(如 flex: 0 0 200px),让它保持原大小并滚动。

浏览:116点赞:0
E
Elliot Yang
公开

之前一直在 HTML ZONE 用 WASM 和 Web API 开发一些本地优先的 Web 工具。

今天刷到 @addyosmani 的网站,发现他也在做类似的事情,而且进度比我快得多!

这么多完全在浏览器内运行的工具,真的让人惊叹,尤其是屏幕录制功能。

更令人兴奋的是,这些工具全部开源!

🖼 图像处理

• Background Image Remover:AI 去背景,支持本地处理和自定义背景

• Squish - Image Optimizer:批量图片压缩,支持多格式和实时预览

• Filter - Image Editor:现代图像编辑器,内置滤镜和响应式设计

• Upscale and Fix Images:AI 图像增强与放大(2x–8x)

🎥 视频处理

• Compress - Video Optimizer:基于 FFMPEG 的视频压缩与格式转换

• Record:屏幕与摄像头录制,支持画中画和提词器

🧠 AI 工具

• Say - Voice Dictation:Whisper AI 语音转文字,支持摘要与笔记

• Chatty - AI Chat:本地运行的 AI 聊天助手,基于 WebGPU

📄 文档处理

• Scan - Document Scanner:网页端文档扫描,支持拍照、裁剪和 PDF 导出

https://404.li/addy-apps

4 Web Apps A collection of free, pr vacy-focused web applications that run directly in your browse lmage Processing 讷都Productivity 婶Video ProcessingAl BEFORI V出Background lmage Remove 歙 One-click backgr 芏行ustom backgroundsLocal i o: Video 57 Source Squish - lmage Optimizei Multiple format support Batch processing Real-time preview D: Video 5? Source G Ty 㔹是Say - Voice Dictatior Voice-to-textText summaries Note management ox video5? source MEOT 1Compress - Video Optimize uploading Multiple compression methods Bitrate cont! Codec selection 号Source G Tyit achatty - Al chat Chatty is your private Al that leverages i 圌市o run large language models (LLM tively & privately in your browser, bringing 倔化ati ebGpu-powered LLMs Private in-browser processing Feature-rich Al chat Scan - Document Scanne! Camera capturesmart cropping Multi-page suppd 9 Source 鞯开Upscale and Fix lmages Enhance is an Al-powered image enhanceme tool that lets you upscale and improve image uality directly in your b Multiple upscaling models (2x-8x Advanced image enhancements WebGL-aware processing 号 Source Tryit 诬O Filter - lmage Editor Filter is a powerful, web-based image editor. t m农莽磗鼇伏e edits and fiters, optimized for both 廊esktop and mobile devices image editingFiter efects Responsive design 礡行一导? Source Recorc A privacy-friendly screen and camera recorde Screen & Camera Recordin picture-in-picture ViewBuilt-i ▶ca Video5? Source 盞这动x video 5? Source All apps are open source and ;data locally in vour browse
浏览:172点赞:0
E
Elliot Yang
公开

关于 tiptap 的简单使用,如何不添加到历史记录?

https://github.com/ueberdosis/tiptap/issues/491

浏览:151点赞:0
E
Elliot Yang
公开

https://twitter.com/localhost_5173/status/1793465965721821428 EGOIST : Choosing a frontend framework be like

#好玩 #code #言 #每日の图

from 世界尽头のWasteland via 边缘坐标 🎉♪⸜(๑ ॑꒳ ॑๑)⸝♪🎆

Remix Sveltekit Next.js Me Nuxt SolidStart
浏览:171点赞:0
E
Elliot Yang
公开

拦截浏览器的后退事件,准确而言应该是点击图片时增加路由,优化回退的感觉。

浏览:156点赞:0
E
Elliot Yang
公开

额,前端开发有很好的即时反馈~

浏览:139点赞:0
E
Elliot Yang
公开

所以 startTransition 降低优先级,降低到多少级呢 Lane

你提到的 startTransition 是 React Concurrent Mode(并发模式)的一部分,用于启动不急迫的用户界面转换,例如数据获取。
当使用 startTransition 开始一个更新时,React 会为该更新分配一个较低的优先级,意味着它可以等待高优先级的任务完成后再执行。在具体的优先级系统(lanes)中,startTransition 降低的具体优先级可能不是公开明确的数字。React 团队为优先级设计了一个相对复杂的系统,其中有多个 "lanes" 代表不同的优先级。
至于你提到的 "多少级",这其实是一个实现细节,React 团队可能会随着版本的迭代进行调整。对于开发者来说,更关心的是 startTransition 能够确保那些不是非常紧急的更新不会阻塞关键用户交互。
如果你想深入了解 React 的并发模式的实现,可以查阅 React 源码或者关注 React 团队的公开通讯。但在日常开发中,了解 startTransition 的基本行为和意图通常就足够了。
浏览:139点赞:0
E
Elliot Yang
公开
  • 所有图片的 alt 属性刷新
  • React hooks 实现原理
  • React Fiber 切片
  • monaco-editor 支持 vue 高亮
浏览:154点赞:0
E
Elliot Yang
公开

via efsg

浏览:163点赞:0
E
Elliot Yang
公开

那些留在2023年的日子:四月

浏览:212点赞:0
E
Elliot Yang
公开

Snapshot testing 很有必要,不然我的依赖基本没办法升级了。

浏览:171点赞:0
E
Elliot Yang
公开

那些留在2023年的日子: 3月

浏览:144点赞:0
E
Elliot Yang
公开

到底要要全局的加 api prefix,我现在的想法是不要(前端方面),不要自找麻烦!!!

浏览:164点赞:0
E
Elliot Yang
公开

The queueMicrotask() method, which is exposed on the Window or Worker interface, queues a microtask to be executed at a safe time prior to control returning to the browser's event loop.
First, nextTick queue is checked to get tasks for its execution, once it is exhausted, the microTasks queue is checked. After finishing the tasks in the microtask queue the process of checking nextTick and microTasks queues are repeated until the queues have been emptied.
They have different queues. The nextTick's queue is managed by node and the microtask one is managed by v8.
The nextTick queue is checked first after the current function/script execution, and then the microTask one.

浏览:142点赞:0
E
Elliot Yang
公开

一度以为 useImmer 有什么问题,其实问题根源在严格模式下副作用会生效两次。

浏览:166点赞:0
E
Elliot Yang
公开

那些留在2023年的日子:

  • 100vw相对于浏览器的window.innerWidth,是浏览器的内部宽度,注意,滚动条宽度也计算在内!而100%是可用宽度,是不含滚动条的宽度。
    于是calc(100vw - 100%)就是浏览器滚动条的宽度大小(如果有,如果没有滚动条则是0)!左右都有一个滚动条宽度(或都是0)被占用,主体内容就可以永远居中浏览器啦,从而没有任何跳动!
浏览:151点赞:0
E
Elliot Yang
公开

2022-12-23 日报

  • 入门 d3.js,指写了个最简单的折线图出来
浏览:153点赞:0
E
Elliot Yang
公开

2022-12-22 日报

浏览:150点赞:0
E
Elliot Yang
公开

2022-12-06 日报

  • umi@4 版本下 Ant Desgin Pro 的 layout 写法应该改成 react-router@6
浏览:163点赞:0
E
Elliot Yang
公开

设置文件链接访问直接下载

将文件的 HTTP 头中,Content-Type 字段改为 application/octet-stream 即可

浏览:160点赞:0
E
Elliot Yang
公开

How to use React label element?

If you try to render a <label> element bound to a text input using the standard for attribute, then it produces HTML missing that attribute and prints a warning to the console.
js
1<label for={'user'}>{'User'}</label>
2<input type={'text'} id={'user'} />
Since for is a reserved keyword in JavaScript, use htmlFor instead.
js
1<label htmlFor={'user'}>{'User'}</label>
2<input type={'text'} id={'user'} />
浏览:244点赞:0
E
Elliot Yang
公开

React v16 support custom DOM attributes.
In the past, React used to ignore unknown DOM attributes. If you wrote JSX with an attribute that React doesn't recognize, React would just skip it.
For example, let's take a look at the below attribute:

js
1<div mycustomattribute={'something'} />

Would render an empty div to the DOM with React v15:

html
1<div />

In React v16 any unknown attributes will end up in the DOM:

html
1<div mycustomattribute='something' />
浏览:279点赞:0
E
Elliot Yang
公开

2022-10-25 日报

  • fetch method: Patch 会导致 nginx 报 400 Bad Request,需要全大写 PATCH。
浏览:159点赞:0
E
Elliot Yang
公开

2022-10-23 日报

  • 了解到 dvh, 解决 Safari 100% 高度问题
浏览:151点赞:0
E
Elliot Yang
公开

2022-10-18 日报

浏览:170点赞:0
E
Elliot Yang
公开

2022-10-13 日报

深入了解了下 vertical-align 这个玩意

浏览:210点赞:0
E
Elliot Yang
公开

safari 的 border-radius 有 BUG 看能不能优化吧。

  • isolate 可以解决这个问题
浏览:146点赞:0
E
Elliot Yang
公开

不要使用 函数名 当 react-query 的 key,真的蛋疼了。编译后的函数名变了!

浏览:154点赞:0
E
Elliot Yang
公开

block-size, inline-size, writing-mode.

浏览:162点赞:0