初识Elm

过年期间一直宅在家,打算学一门新语言,之前看见关注的TJ大神经常在star Elm相关的项目,因此打算尝试一下。

阅读全文

如何优雅地处理loading

在业务代码中,为了判断异步操作是否在运行中,往往通过额外的标志量来区分;本文将从dva-loading源码出发,分析在React项目中如何统一管理loading状态,然后给出一种在Vue项目中管理loading的解决方案。

阅读全文

dva源码分析

dva是基于react的二次封装,在工作中经常用到,因此有必要了解一下其中的实现。本文将从源码层面分析dva是如何将reduxredux-sagareact-router等进行封装的。

阅读全文

使用verdaccio和lerna和管理npm包

封装公共逻辑,我们往往会通过函数->模块文件->包等方式,本文主要研究如何编写和管理公共模块,包括配置模块入口、选择打包方式、搭建本地npm仓库、多模块项目管理等问题。

阅读全文

将博客重构为SSR渲染

前段时间写了一个简易的类React框架:NeZha,现在打算加上服务端渲染的功能,并准备重构整个博客的同构渲染。本文将整理SSR在框架的项目构建方面的原理,然后进行简单实现。

阅读全文

VNode与Component

在前面两篇文章中,我们研究了VNode的基础知识,了解了如何使用VNode描述并渲染视图,实现了递归diff和循环diff两种方案,并在循环diff中给出了一种简单的调度器实现方案。本文将紧接上两篇文章,一步一步思考并实现将VNode封装成组件。

阅读全文

Fiber与循环diff

在上一篇文章VNode与递归diff中,我们了解了VNode的作用,如何将VNode映射为真实DOM,并通过递归实现了diff操作,最后研究了三种不同的diff方式带来的性能差异。

本文将紧接上文,研究如何通过循环的方式实现diff,并在此基础上实现对应的调度系统,从而理解React中的一些核心原理。

阅读全文