如何优雅地处理loading

发表于 | 分类于 技术原理

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

dva源码分析

发表于 | 分类于 源码分析

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

在浏览器运行可交互Python代码

发表于 | 分类于 技术原理

最近研究了一些在线运行代码应用,感觉颇为有趣,在此稍作总结,并尝试实现一种在浏览器运行可交互Python代码的方案。

NodeJS中CommonJS和ESModule混用的问题

发表于 | 分类于 前端/模块化

JavaScript在过去几年飞速发展,同时也带来了很多混乱的问题,比如模块系统cjs、esm混用,或者js、ts混用的项目比比皆是。

能理解将新技术落地到项目中的心情,但同时也需要具备一些知识避免这些混乱带来的影响。

理解分辨率

发表于 | 分类于 前端/CSS

在前端、客户端开发UI的工程中,肯定绕不开分辨率这个东西。我们所说的分辨率到底是什么呢?不同的分辨率对编写代码有什么影响呢?本文将解答这些问题

从源码分析几种中间件的实现方式

发表于 | 分类于 技术原理

在前端比较熟悉的框架如expresskoareduxaxios中,都提供了中间件拦截器的功能,本文将从源码出发,分析这几个框架中对应中间件的实现原理。

将博客重构为SSR渲染

发表于 | 分类于 博客

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

初识动态规划

发表于 | 分类于 数据结构和算法

动态规划是一种经典的算法。本文主要整理如何使用动态规划来解决一些问题。

VNode与Component

发表于 | 分类于 源码分析/diff算法

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

Fiber与循环diff

发表于 | 分类于 源码分析/diff算法

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

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

VNode与递归diff

发表于 | 分类于 源码分析/diff算法

在工作中接触VueReact大概有两三年了,最近一直在学习相关的技术原理,打算整理学习心得。本文深入研究虚拟DOMVNode相关的技术实现,了解前端框架的基础。

理解diff算法

发表于 | 分类于 源码分析/diff算法

本文将从React和Vue源码中,理解diff算法的工作原理和实现方式。

从vue-loader源码分析CSS-Scoped的实现

发表于 | 分类于 源码分析/Vue

虽然写了很长一段时间的Vue了,对于CSS Scoped的原理也大致了解,但一直未曾关注过其实现细节。最近在重新学习webpack,因此查看了vue-loader源码,顺便将从vue-loader的源码中整理CSS Scoped的实现。

单调栈及其应用

发表于 | 分类于 数据结构和算法

单调栈是一种特殊类型的栈,可以用来解决一些特定问题,本文整理了构建单调栈的方式,以及单调栈的一些应用。

CSS中一些属性的计算规则

发表于 | 分类于 前端/CSS

昨天遇见了一个关于flex-shrink计算规则的问题,一时语塞,发现自己居然没有认真研究过这里面的东西,因此在合理整理了关于CSS中一些属性的计算规则。

重新阅读Vue源码

发表于 | 分类于 源码分析/Vue

最近一直在折腾React源码,后来发现有必要重新阅读Vue的源码,从设计思想和底层实现上了解两种框架的差异,因此有了这一篇文章。

实现一个简易的React

发表于 | 分类于 技术原理

前两周一直在学习React源码,发现通过断点观察代码运行流程来理解React源码并不是一个很好的方法:

  • 由于需要支持ReactDOM、SSR、React Native等,React源码抽象程度比较高,分支较多,且函数调用栈也很深
  • React引入的Fiber Reconciler优化diff流程,内部使用了很多状态码和全局变量
  • 我的React开发经验有限,有些API并不是十分熟悉

虽然艰难地将大概看了一些源码,却觉得收获较少,因此决定整理React内相关概念,并手动实现一个简易的React框架,从而更深入地学习React。

webpack折腾记(四):性能优化

发表于 | 分类于 前端/前端工程

之前接手的一个旧项目,使用的是roadhog + dva + antd等技术,里面大概有上百个路由文件,其他model、组件等文件也不少,导致整个项目的模块文件非常多,热更新和打包都速度都比较慢,输出代码体积也很大。基于这个问题,本文整理webpack常用的一些优化手段。

如何绕开referrer防盗链

发表于 | 分类于 前端/前端业务

最近处理了一个与referer有关的需求,发现里面还是有一点门道的。因此在本篇文章整理了referer相关知识点,主要涉及图片防盗链与如何绕开防盗链限制。

Preact技术栈:router和redux

发表于 | 分类于 源码分析/Preact

上篇文章中对Preact源码进行了分析,了解了Componentrenderdiff等核心方法,以及页面渲染的大致流程。在这一篇文章中,将分析preact-router的源码实现,并了解在Preact项目中使用react-redux的方法,构建一个完整的web应用。