Avatar
Avatar

Nexo - ryne's blog

Frontend developer skilled in Vue, React. Interested in full-stack development.

Featured Posts

14548

Vue Computed Watch

本文介绍了 Vue.js 中的两个核心功能:`computed` 和 `watch`。`computed` 用于创建响应式的计算属性,支持只读和可写两种模式。其核心实现通过封装 `getter` 函数,基于依赖追踪机制在响应式数据变化时动态计算最新值。`watch` 则用于监听响应式数据源的变动,并在变动时执行回调函数。支持的特性包括对单一或多个来源的监听、深度监听、立即执行选项以及在数据变化或监听停止时执行的清理函数。文章详细介绍了这两种功能的实现细节,并通过 TypeScript 和面向对象编程思维,构建了对这两者的扩展和优化。提供的代码例子涵盖了如何实现响应式数据的自动依赖追踪与更新,帮助开发者更好地控制 Vue 应用中的数据流和状态管理。

5939

Vue Ref

这篇文章探讨了 Vue 3 中的 `ref` 和 `shallowRef` 的工作原理及其用法。`ref` 是一种允许单个数据变得响应式的 API,通过 `.value` 属性实现对数据的追踪和修改监听,适用于简单数据类型和复杂对象。当对象被赋予 `ref`,借助 `reactive()` 实现深层次响应式,使得对对象属性的更改同样被追踪。若想避免深层绑定,可以使用 `shallowRef`,它限制响应式仅作用于 `.value`,对内部属性的变更不会触发响应。文章还介绍了 `triggerRef` 用于强制更新浅层引用的依赖,`toRef` 及 `toRefs` 用于将响应式数据对象的属性转变为可独立追踪的 ref,从而实现双向绑定。这些机制不仅增进了性能优化,也增强了与外部状态管理系统的整合能力,对开发者在构建复杂的 Vue 应用时提供了强大的工具支持。

34673

Implement promise

本文详细讲述了如何实现一个符合 Promise A+ 规范的 JavaScript Promise 类。从基础原理入手,文章逐步介绍了 Promise 的基本结构和功能,包括创建 Promise 实例和实现状态转换,以及解决异步调用问题。文章通过定义并实现一系列的逻辑步骤,解决了 Promise 的状态管理、结果存储、错误处理等问题。核心过程包括 resolve 和 reject 方法的绑定、异常捕获、以及 then 方法的链式调用支持。特别地,文章深入探讨了 Promise 的解决过程,并通过实现 resolvePromise 函数来保证 Promise 链的正确性和循环引用的处理。此外,文章还采用 promises-aplus-tests 进行测试,验证实现的正确性。读者通过本文可以获得创建一个功能完整且符合规范的 Promise 类的详尽指导,深入理解 JavaScript 异步处理的精髓。

7468

vue的双端对比和最长递增子序列

本文深入分析了 Vue 框架中的虚拟 DOM 更新机制,特别是组件创建和更新时的过程。主要通过对比新旧虚拟 DOM 的差异来更新真实 DOM,这个过程被称为 diff。Vue 使用一个 patch 函数实现了 diff,通过深度优先、逐层比较的方法,结合虚拟节点的 key 和 tag 来判断节点是否相同。在节点的比较过程中,为了最大限度地复用真实 DOM,Vue 使用双端对比策略,用两个指针分别指向子节点数组的头尾进行比对。针对节点移动的优化,文章探讨了 Vue 如何利用最长递增子序列找出需要最少移动的节点序列,有效减少了耗费资源的 DOM 操作。这一分析为开发者提供了深刻理解 Vue diff 算法及其性能优化策略的机会,有助于更有效地利用 Vue 进行应用开发。

1865

事件循环

文章详细解析了进程和线程的概念,尤其是在浏览器环境中的应用。进程代表程序运行所需的独立内存空间,而线程是CPU调度的最小单位,每个进程至少拥有一个线程。在浏览器中,浏览器启动后会生成多个进程,渲染进程包含渲染主线程,负责执行HTML、CSS、和JS代码,并形成任务队列进行事件循环。文章阐述了异步编程的重要性,以防止主线程阻塞,并解释了任务队列根据优先级进行调度的机制。微队列中的任务优先于其他任务执行,以确保效率。而针对JS的单线程处理与异步执行机制,文章指出JS在浏览器中采用异步处理方式,以避免锁死。此外,还回答了关于渲染进程线程使用、异步理解及事件循环的相关问题,明确了JS计时器的局限性及事件调度的影响,帮助读者理解浏览器的工作原理和性能优化方法。

Categories