随笔分类 - JS
[JS] ES Modules的运作原理
摘要:本文介绍了 ES Modules (ESM) 在浏览器环境中的运行原理,详细阐述了 ESM 的三大加载步骤:构建、实例化、求值,并讨论了其动态加载能力、循环依赖处理方式及与 CommonJS 的区别。
[js] 页面可见性API 监测用户切屏
摘要:Page Visibility API 可帮助检测用户切换页面,适用于考试或网课系统。本文介绍了 visibilitychange 事件和 document.visibilityState 的状态,并提供了基本的防作弊实现方法,如定期检查页面可见性和监听视频播放状态。
[JS] ArrayBuffer、DataView和TypedArray
摘要:本文介绍了 JavaScript 中 ArrayBuffer 和 TypedArray 的应用。ArrayBuffer 用于预分配内存,存储二进制数据,但需通过 DataView 或 TypedArray 视图来读写。TypedArray 是定型数组,用于高效处理特定数据类型。DataView 则提供了更灵活的方式,适合在二进制文件处理、WebSocket 传输、WebGL 图形处理和音频处理等场景中使用。
[JS] 内存管理与V8垃圾回收机制
摘要:本文介绍了内存管理的基础知识,重点分析了栈区与堆区的区别,并详细讨论了V8引擎的内存管理机制,包括垃圾回收策略和优化技术。文章通过实例代码展示了堆区和栈区的内存变化,并探讨了v8如何通过并行、增量和并发技术优化垃圾回收性能。
[vue3] vue3初始化渲染流程
摘要:本文解析了 Vue3 组件初次渲染的流程,涵盖应用程序初始化、核心渲染步骤,以及 vnode 的创建和渲染,探讨了 Vue3 内部机制及其跨平台实现的关键细节。
[vue3] vue3对比vue2优化项简要概述
摘要:Vue2存在源码可维护性差、性能问题和API兼容性不足等缺点。Vue3通过monorepo管理、TypeScript开发、性能优化和引入Composition API等方式,显著提升了源码可维护性、编程体验、TypeScript支持和逻辑复用实践,从源码、性能和语法API三方面进行了优化。
[vue3] patchFlags与位运算
摘要:Vue 3在编译template过程中,会通过patchFlags优化虚拟DOM更新,提升性能。这些标志通过位运算进行操作,包括动态文本、类、样式、属性、静态提升等。patchFlags的使用极大地提高了diff算法的效率。
[babel] babel的工作原理
摘要:Babel 是一个多功能的 JavaScript 编译器,主要用于将现代 JavaScript 语法转换为向后兼容的代码。其工作流程包括解析(parse)、转换(transform)和生成(generate)三个步骤,最终生成兼容代码和源码映射。通过自定义插件,开发者可以灵活地操作 AST,实现代码转换。
[JS] generator基本使用
摘要:这篇文章介绍了Generator函数的基本使用,包括next方法与yield关键字、throw方法、return关键字及其对应的方法,说明了它们的用法、运行结果和各自的特点,并解析了它们的共同点。
[JS] Reflect的基本使用
摘要:这篇文章介绍了Reflect的优点及其静态方法的使用,并通过Proxy实现了一个观察者模式示例,展示了如何利用Reflect简化和规范对象操作,避免传统方式的局限。
[NodeJS] JavaScript模块化
摘要:这篇文章介绍了JavaScript模块化的发展历程及各种方案,包括IIFE、CommonJS、AMD、CMD、UMD及ESM。对比了各方案的特点和优缺点。同时,深入剖析了Node.js中CommonJS的模块加载机制。
[NodeJS] Streams流式数据处理
摘要:本文介绍了NodeJS中流(Stream)的概念、类型和应用。流通过将数据分成小块进行处理,优化了内存使用和数据处理效率。文章涵盖了四种基本流类型:可读流、可写流、双工流和转换流,并通过实例代码演示了如何使用流进行高效的数据传输和处理。
[NodeJS] NodeJS运行原理简记
摘要:NodeJS是一个基于V8引擎和libuv的JavaScript运行时,适用于轻量级和高效的数据密集型Web应用。其单线程、非阻塞IO模型依赖事件循环和线程池管理异步任务。使用NodeJS开发需避免阻塞主线程,正确处理事件和错误。
[JS] promise知识点与应用场景
摘要:本文探讨了JavaScript中Promise的基础用法和各种静态方法的应用场景。从解决异步编程中的回调地狱问题,到链式调用、并发请求控制,再到最新的Promise.allSettled和Promise.any的应用。每种方法均通过代码示例和详细的应用场景进行了展示。
[NodeJS] timers阶段的源码解析
摘要:本文探讨了Node.js事件循环中的timers阶段,分析了定时器的管理和执行过程。通过源码解析,揭示了定时器超时检查、回调执行以及定时器类型(setTimeout与setInterval)的内部实现机制。文章旨在帮助读者理解Node.js中定时器的工作原理及其在事件驱动编程中的重要性。