实现一个简易的React

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

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

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

阅读全文

如何绕开referrer防盗链

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

阅读全文

前端大文件上传

最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。

阅读全文

实现一个简单的编译器

在前端开发中也会或多或少接触到一些与编译相关的内容,常见的有

  • 将ES6、7代码编译成ES5的代码
  • 将SCSS、LESS代码转换成浏览器支持的CSS代码
  • 通过uglifyjs、uglifycss等工具压缩代码
  • 将TypeScript代码转换成JavaScript代码
  • Vue模板语法转换成render函数、JSX语法转换成JS代码

尽管社区的工具如bable*-loader已经帮我们完成了上面的所有工作,我们不用关心编译的过程,甚至也很少有人关注输出的代码,但是了解编译原理还是很有必要的,这篇文章主要用来记录我在学习编译原理时整理的一些笔记。

阅读全文

学习Typescript

最近用TypeScript写了一个游戏,顺道把博客的后端项目也改成了ts版本,下面整理在学习TypeScript时遇见的的问题。

阅读全文