文章列表

第 3 页
← 返回首页

细颗粒度更新与自动依赖收集

众所周知,React 并没有实现细颗粒度的状态更新。同时在副作用中也需要我们手动去管理对应依赖。如常见的 和 等: 这里就需要我们手动的去管理 的依赖,否则 则只会执行一次。而在 Vue 等框架中,则可以自动追踪其依赖: 在 Vue 和 Mobx 等框架中使用的“能自动追踪依赖的技术”被称为“细颗粒度更新”(Fine-Grained Reactivity),这也是许多前端框架响应式的原理。 ##
2023-11-09·5 分钟阅读·1058 字·TypeScriptReact

Rust Box 与对象

对于多数高级语言往往会弱化堆栈的概念,它们通常由 GC 等方式来管理内存。而对于像 Rust 这类的低级语言来说,则需要更深入的了解堆栈的概念。 栈内存从高位地址向下增长,且栈内存是连续分配的,一般来说操作系统对栈内存的大小都有限制。这也是为什么 C 语言中无法创建任意长度的数组。在 Rust 中, 线程的栈大小是 8MB,普通线程是 2MB。在函数调用时会在其中创建一个临时的栈空间,调用结束后
2023-02-09·10 分钟阅读·2025 字·Rust

Rust 模式匹配

match 是一个极为强大的控制流运算符,它允许我们将一个值与一系列的模式相比较,并根据相匹配的模式执行相应代码。模式可由字面值、变量、通配符和许多其他内容构成。 ### 绑定值的模式 在匹配到绑定值的模式后,可以增加一个变量用来表示所匹配到的值。 这里的 就是匹配到的对应的 的值。 ### 匹配 Option 这里 Clippy 可能会提示我们有更好的写法: 上有个 方法,可以更好的代替 来做匹
2023-02-07·2 分钟阅读·488 字·Rust

公开密钥密码学-非对称加密 🔑

GPG/PGP 赛高! ## 什么是非对称加密? 人类的历史上加密走了很长的一段路程。想尽了各种办法来保护自己那不想让不该知道的人知道的东西。 加密这东西,在密码学中最直白的解释就是将一般的明文信息改变为难以读取的内容,使其不可读的过程只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。 大概在 1970 年代中期,所谓的“强加密”的使用开始从政府保密机构延申至公共的领域了,也就
2022-10-24·10 分钟阅读·2015 字·Linux

使用 useSyncExternalStore 构建属于自己的全局状态

在 React18 new hooks 中简单了解过并作过一个简单的全局状态,它的参数只有三个: - : 一个当状态更新后可执行的回调函数。该函数会收到一个回调函数,这个回调函数就是当状态后执行,React 用来对比是否需要重新渲染组件。 - : 返回当前状态的函数。 - : 在服务端渲染时返回当前状态的函数,可选。 配合上 就可以非常方便的对接外部状态,了解了这个 hook 之后,对自定义的全局
2022-10-14·6 分钟阅读·1365 字·TypeScriptReact

React 18 中的一些新 hooks

useTransition 返回一个状态值表示过渡任务的等待状态,以及一个启动该过渡任务的函数。它和 CSS 的过渡没有任何关系。useTransition 的主要目的是作用于在复杂的过渡任务时提供一个优先级较低的更新,过渡任务中触发的更新会让更紧急地更新先进行,比如点击。 过渡任务中的更新将不会展示由于再次挂起而导致降级的内容。这个机制允许用户在 React 渲染更新的时候继续与当前内容进行交互
2022-10-11·5 分钟阅读·1096 字·ReactTypeScript

自建简易 FaaS

近些年来,传统的 IaaS、PaaS 已经无法满足人们对资源调度的需求了。各大云厂商相继开始推出自家的 Serverless 服务。Serverless 顾名思义,它是“无服务器”服务器。不过并不是本质上的不需要服务器,而是面向开发者(客户)无需关心底层服务器资源的调度。只需要利用本身业务代码即可完成服务的运行。 Serverless 是近些年的一个发展趋势,它的发展离不开 FaaS 与 BaaS
2022-10-10·23 分钟阅读·4754 字·TypeScript

使用 Turborepo 和 rollup 构建 NPM 包

对于 monorepo 我使用的是 turborepo,创建一个新的项目非常简单: 对于包管理器,这次尝鲜使用了 pnpm 它在安装包到 workspace 中相对于其他两个来说要更加的方便。 ## Turborepo 对于 turborepo 来说没有什么需要过多配置的,比较需要注意的就是它的环境变量需要手动在 配置文件中声明一次: 除此之外,在默认的 tsconfig 中, 其 是 如果需要一
2022-10-10·2 分钟阅读·546 字·JavaScriptNPM

What about this - JavaScript 全面解析

this 全面解析 this 和动态作用域有些许类似,它们都是在执行时决定的。this 是在调用时被绑定的,完全取决于函数的调用位置。 ### 确定调用位置 当一个函数被调用时,会创建一个活动记录(执行期上下文)。这个记录会包含函数在哪里被调用(调用栈)、函数的调用方式、传入的参数等信息。this 就是这个记录里的一个属性。 调用位置就是函数在代码中被调用的位置,而不是声明的位置。我们可以通过分析
2022-09-24·10 分钟阅读·2118 字·JavaScript

Three.js 中的物体围绕运动

使一个物体围绕另一个物体运动,主要是保证围绕物体的运动轨迹。在 three.js 中,一个 Mesh 实例可以通过其自身的 方法,去添加另一个实例。 通过此方法就可以达成添加一个实例成为另一个实例的子节点。当父节点进行运动时(例如自身旋转),子节点也会跟随运动。 在物体围绕运动中,我们可以把围绕物体添加到被围绕物体中。当父节点绕自身旋转时,离父节点有一定距离的围绕物体就会随着父节点的旋转而旋转。但
2022-09-02·2 分钟阅读·553 字·Three.jsReact
© 2026 Yggdrasil