自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 Code Review最佳实践

因为最近在工作上参与制定了团队的一些Code Review(CR)的规范,所以想在这里给大家分享一下我们积累的一些CR最佳实践。本篇文章会包括下面这些内容:为什么需要Code Review什么时候做Code ReviewCommitter需要注意什么Code Reviewer需要看哪方面的内容为什么需要Code Review对于参与人数大于或者等于两个的项目来说,CR是一项必不可少的活动。在我看来它有下面这些好处:可以提高committer对于自己代码的要求按照我以往的经验来说,有些人的

2022-03-21 10:24:53 708

原创 实现JavaScript语言解释器(二)

前言在上一篇文章中我为大家介绍了Simpe项目的一些背景知识以及如何使用有限状态机来实现词法解析,在本篇文章中我将会为大家介绍语法分析的相关内容,并且通过设计一门内部DSL语言来实现Simple语言的语法解析。什么是语法解析词法解析过后,字符串的代码会被解析生成一系列Token串,例如下面是代码let a = 'HelloWorld';的词法解析输出:[ { "type": "LET", "value": "let", "range": { "start":

2022-03-07 23:10:35 631

原创 实现JavaScript语言解释器(三)

前言上篇文章我为大家介绍了语法解析的一些基本概念,以及如何通过自定义的DSL语言实现Simple语言解释器的语法树解析。在本篇也是这个系列最后一篇文章中我将为大家介绍Simple解释器是如何执行生成的语法树的。evaluate函数和作用域前面在介绍语法解析相关知识的时候有出现过evaluate函数,其实基本每一个AST节点都会有一个对应的evaluate函数,这个函数的作用就是告诉Simple解释器如何执行当前AST节点。因此Simple解释器执行代码的过程就是:从根节点开始执行当前节点的evalua

2022-03-07 23:08:07 486

原创 实现JavaScript语言解释器(一)

前言对于大多数前端开发者来说JavaScript可谓是我们最熟悉的编程语言了,它十分强大可是有些语言特性却十分难以理解,例如闭包和this绑定等概念往往会让初学者摸不着头脑。网上有很多诸如《你看完这篇还不懂this绑定就来砍我》之类的文章来为大家传道解惑。可是在我看来这些文章大多流于表面,你读了很多可能还是会被面试官问倒。 那么如何才能彻彻底底理解这些语言特性,从而在面试的时候立于不败之地呢?在我看来要想真的理解一样东西,最好的途径就是实现这样东西,这也是西方程序员非常喜欢说的learning by im

2020-10-29 12:19:08 830 2

原创 React Hook测试指南

在React为什么需要Hook中我们探讨了React为什么需要引入Hook这个属性,在React Hook实战指南中我们深入了解了各种Hook的详细用法以及会遇到的问题,在本篇文章中我将带大家了解一下如何通过为自定义hook编写单元测试来提高我们的代码质量,它会包含下面的内容:什么是单元测试单元测试的定义为什么需要编写单元测试单元测试需要注意什么如何对自定义Hook进行单元测试JestReact-hooks-testing-library例子什么是单元测试单元测试的定义

2020-07-22 14:37:18 1793 2

原创 超详细React Hook实践指南

在React为什么需要Hook这篇文章中我们探讨了React开发团队为什么要为Function Component添加Hook的原因,在本篇文章中我将会为大家提供一份较为全面的React Hook实践指南,其中包括以下方面的内容:什么是React Hook常用Hook介绍useStateuseEffectuseRefuseCallbackuseMemouseContextuseReducer自定义Hook什么是React HookReact Hook是React 16.8版

2020-07-15 19:09:08 384

原创 React为什么需要Hook

自从React 16.8发布Hook之后,笔者已经在实际项目中使用Hook快一年了,虽然Hook在使用中存在着一些坑,但是总的来说它是一个很好的功能,特别是在减少模板代码和提高代码复用率这些方面特别有用。为了让更多的人了解和使用Hook,我决定写一系列和Hook相关的文章,本篇文章就是这个系列的第一篇,主要和大家聊一下React为什么需要Hook。Hook解决的问题Component非UI逻辑...

2020-04-29 12:56:03 253 1

原创 进击的JAMStack

最近在研究JAMStack的一些相关内容,发现这的确是个好东西,所以想写一篇文章把这个概念分享给还不了解JAMStack的同学。本篇文章主要包含以下的内容:什么是JAMStackJAMStack有什么优势JAMStack适合什么应用我的个人思考什么是JAMStack概念JAMStack中的JAM其实是三个词的缩写,它们分别是JavaScript, APIs以及Markdown。而...

2020-04-22 20:19:52 225

原创 Yarn v2介绍

Yarn作为JavaScript生态的一个强大的依赖管理工具在今年1月24日的时候正式发布了v2版本。在本篇文章中,我将会为大家介绍以下内容:为什么要开发v2版本v2都有什么新的特性Yarn的未来计划备注:如果你想知道如何直接使用v2版本可以查看Getting Started,如果你想从v1版本迁移到v2版本可以查看Migrations。为什么要开发v2版本原有代码架构满足不了新的...

2020-02-17 09:20:48 627

原创 CSS in JS的好与坏

是什么CSS-in-JS是一种技术(technique),而不是一个具体的库实现(library)。简单来说CSS-in-JS就是将应用的CSS样式写在JavaScript文件里面,而不是独立为一些.css,.scss或者less之类的文件,这样你就可以在CSS中使用一些属于JS的诸如模块声明,变量定义,函数调用和条件判断等语言特性来提供灵活的可扩展的样式定义。值得一提的是,虽然CSS-in-J...

2020-01-19 19:39:02 479

原创 窥探现代浏览器架构(四)

前言本文是笔者对Mario Kosaka写的inside look at modern web browser系列文章的翻译。这里的翻译不是指直译,而是结合个人的理解将作者想表达的意思表达出来,而且会尽量补充一些相关的内容来帮助大家更好地理解。到达合成线程的输入这篇文章是探究Chrome内部工作原理的四集系列文章中的最后一篇了。在上一篇文章中,我们探讨了一下浏览器渲染页面的过程以及学习了一些...

2020-01-10 15:36:58 135

原创 窥探现代浏览器架构(三)

前言本文是笔者对Mario Kosaka写的inside look at modern web browser系列文章的翻译。这里的翻译不是指直译,而是结合个人的理解将作者想表达的意思表达出来,而且会尽量补充一些相关的内容来帮助大家更好地理解。渲染进程里面发生的事这篇文章是探究Chrome内部工作原理的四集系列文章中的第三篇。之前我们分别探讨了Chrome的多进程架构以及导航的过程都发生了什...

2020-01-08 08:34:51 176

原创 窥探现代浏览器架构(二)

前言本文是笔者对Mario Kosaka写的inside look at modern web browser系列文章的翻译。这里的翻译不是指直译,而是结合个人的理解将作者想表达的意思表达出来,而且会尽量补充一些相关的内容来帮助大家更好地理解。导航的时候都发生了什么这篇文章是探究Chrome内部工作原理的四集系列文章中的第二篇,在上一篇文章中我们探讨了不同进程或者线程是如何负责浏览器各个不同...

2019-12-27 08:35:34 180

原创 窥探现代浏览器架构(一)

前言本文是笔者对Mario Kosaka写的inside look at modern web browser系列文章的翻译。这里的翻译不是指直译,而是结合个人的理解将作者想表达的意思表达出来,而且会尽量补充一些相关的内容来帮助大家更好地理解。这个系列的教程会有四集,我会不定期进行更新,主要看个人时间安排。CPU,GPU,内存和多进程架构在这个4集系列教程里面,我将会从Chrome浏览器的...

2019-12-25 19:33:19 168

原创 console你只会log?

console.log我相信写过JavaScript人一定都有接触过,它可谓是我们debug的灵丹妙药。可是除了log方法,你知道console还有很多可以帮你快速提高代码debug效率(逼格)的方法吗?console.log | console.info | console.debug | console.warn | console.error使用场景输出不同类型(level)的内容。...

2019-12-23 13:02:30 103

原创 都快2020年,你还没听说过SvelteJS?

React, Vue和Angular差不多占据了Web开发的大部分江山,可是最近半年Svelte开始逐渐吸引越来越多人的眼球。这个Svelte框架到底有什么过人之处呢?本文将会为大家分析一下Svelte火起来的原因,并且通过使用Svelte去搭建一个简单的书店应用(bookshop)来帮助大家快速入门这门框架。Svelte为什么会火?要想知道Svelte为什么会火,首先得看看React和Vue...

2019-12-17 15:12:06 880

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除