精选分类

Algorithm Notes

C++ Notes

Daily Developing

Interview Records

LittleSharing About

Nest Notes

React Notes

Picals About

Some Research

Next Notes

文章列表

6.5k6 分钟

最近在做了一些 Next.js 的实践之后,逐渐对 React 内部的具体实现起了兴趣,想从源码的角度具体地理解一下 React 的一些核心概念,以及它们到底是怎么实现的。 # React 重难点分类 # Fiber 架构 React 16 及以后的版本引入了全新的 Fiber 架构,它是 React 内部管理 UI 渲染的核心机制。理解 Fiber 是深入 React 的关键。主要难点包括: 可中断渲染:Fiber 允许 React 将工作切分成可中断的任务。由于任务可以被暂停、恢复或者丢弃,这使得 UI 渲染变得更加高效,但也导致了调度机制的复杂性。 协调算法:在 Fiber 中,调和(
4871 分钟

本文是基于 Vue.js 设计与实现 这本书的学习笔记,主要是对 Vue3 的响应式原理进行分析和实现。 响应式原理是 Vue3 的核心,也是 Vue3 的灵魂所在。Vue3 的响应式原理是基于 ES6 的 Proxy 实现的,相比 Vue2 的 Object.defineProperty,Proxy 更加强大,更加灵活,也更加易用。 Vue3 响应式原理的核心难点有以下几个: 如何正确设计保存操作对象(obj)、操作对象具体属性(key)、具体的副作用函数(effectFn) 如何消除以前遗留的副作用函数对 分支切换 造成的影响 如何正确处理嵌套的副作用函数,即 副作用函数内部调用副作
3.4k3 分钟

优先级队列实际上是二叉堆的一种具体实现。它旨在维护一个具有特定固定结构的队列,以保持整个二叉堆的性质。因此我们需要先了解一下 二叉堆 这个数据结构。 # 什么是二叉堆 二叉堆就是一种能够动态排序的数据结构。所谓动态排序,就是说我们可以不断往数据结构里面添加或删除元素,数据结构会自动调整元素的位置,使得我们可以有序地从数据结构中读取元素,这是一般的排序算法做不到的。 能动态排序的常用数据结构其实只有两个,一个是优先级队列(底层用二叉堆实现),另一个是二叉搜索树。二叉搜索树的用途更广泛,优先级队列能做的事情,二叉搜索树其实都能做。但优先级队列的 API 和代码实现相较于二叉搜索树更简单,所以一般能
5.5k5 分钟

参考文献: 简述 Webpack 和 Vite 的区别 为什么 Vite 速度比 Webpack 快? Esbuild 为什么那么快? webpack、rollup、parcel 优势和劣势? 最近在公司也接近实习了差不多 3 个月的时间,期间也不免接触了比较多的真实项目,有用 Vue2 + JS 的,有用 Vue3 + TS 的,也有用 tsx 写 Vue 的。 这些零零散散的项目所使用的上线打包工具都是基于我们公司内部的 workbench 前端脚手架进行启动的,而作为底层的打包工具便是 Webpack。这让我这个基本上只深度接触过 Vite 的人比较感兴趣:为什么公司开发一般都用
2871 分钟

参考文献: 手写 async await 核心原理 我终于搞懂了 async/await、promise 和 setTimeout 的执行顺序 最近在重温 JS 语法为面试做准备的时候,发现我本人对 async/await 的使用虽然在平时几乎已经成为一种肢体习惯,但是却没有真正深入的理解它,因此特地的去进行了一系列的调研。 在正式开始之前,需要介绍一些前置性的东西:
7k6 分钟

代码环境基于:vue3 setup 语法糖、TypeScript 最近在实习的过程中接到了一个需求,需要实现 纯前端(Vue3 + TS)在 el-dialog 上对 PDF 文档进行预览,并且为其添加水印与分页展示。而我本人由于之前对文件预览与 canvas 方面的知识较为欠缺,在这次的实践上实际上也是踩了比较多的坑,在这里稍微记录一下吧。 对于第一个需求,实际上相关的解决方案比较多也容易实践,现在市面上有非常多的 Vue 相关 PDF 预览插件,比如 PDF.js、vue-pdf-app 等,基本上按照它们提供的官方教程一步步跟下来就可以实现,又或者是直接使用 iframe 来触发浏览
18k17 分钟

参考文献: 越来越火的网络请求 Fetch 和 Axios 到底有什么区别 Fetch vs. Axios: 选择正确的 HTTP 请求库 什么是 AJAX?- 异步 JavaScript 和 XML 详解 AJAX - 维基百科,自由的百科全书 ChatGPT-4o,请教了一些概念性的问题 为了拓展我的技术栈,我开始接触到了第二款支持服务端渲染并支持 TS 全栈开发的框架 Next.js。既然是支持全栈,那么其 API 请求 的设计便是重中之重。 以往我自己开发的一些基于 Vue & React 的 SPA 项目,涉及到接口层面无一例外都是通过 二次封装 Axios 来实现。