VNode与Component

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

阅读全文

Fiber与循环diff

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

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

阅读全文

VNode与递归diff

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

阅读全文

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

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

阅读全文

CSS中一些属性的计算规则

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

阅读全文

重新阅读Vue源码

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

阅读全文

实现一个简易的React

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

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

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

阅读全文

如何绕开referrer防盗链

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

阅读全文