Skip to content

baooab/baooab.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Zhang Bao's Personal Website

Hello, My Chinese name is "张宝". I am a front-end development programmer (more than 6 years of experience)from Shanghai, China. I usually write in Chinese.

I am active in many Chinese communities, such as juejin(掘金), Yuque(语雀) and bilibili(B站).

Here is a list of what I publish on these platforms:

周刊 & 教程

JavaScript

  • 🎥 手撕 Promise A/+ 实现(分四部分讲解)
    1. Promise API 介绍
    2. 基本功能实现:实现具备 .then 方法的 Promise 对象
    3. 异步功能支持:支持 pending 状态 then 回调函数的收集和异步调用功能(借助更精确的 queueMicrotask 而非 setTimeout
    4. 链式调用支持:实现 .then 方法返回一个 Promise 对象的功能
  • ES2016
  • ES6 class X {} 的 ES5 解释
    • 本质上就是构造函数的语法糖
  • ES6 class X extends P {} 的 ES5 解释
    • 内部执行步骤
      1. X.prototype 的原型对象设置成 P.prototype
      2. X 的原型对象设置成 P
      3. 执行 P 构造函数逻辑
      4. 执行 X 构造函数逻辑

Node.js

  • 图解:Node.js 事件循环系列(共 7 篇)
    • Node.js 事件循环比浏览器稍复杂些
    • 事件循环执行顺序
      • 微任务队列(microtask queue)→计时器队列(timer queue)→I/O 队列(I/O queue)→检查队列(check queue)→关闭队列(close queue)
      • 事件循环的开始、结束以及队列之间都会执行微任务队列,另外
      • 计时器队列/检查队列每执行完一次回调函数之后会执行微任务队列
  • util.promisify() 函数
    • 将基于回调的函数转换为基于 Promise 的,方法是通过代理最后一个 callback 回调参数
  • Koa 与 Express 的比较:多数场景下选择 Express 就对了
    • Express 是现在最流行的 Node.js Web 应用框架,Koa 是它的轻量级版本,相较前者没有内置路由、模板引擎等功能
  • 最小化 JavaScript 中间件模式实现
    • 学习下 Koa 中间件系统是如何运作的(装 middlewares 的 stack + runner(0)

React

  • React Hooks 内部工作原理
    • 没什么魔法,就是使用的数组 + 记录当前要访问的 Hook 的索引值(每次渲染完记得重置)
    • 基于实现方式,因此 Hook 严格依赖执行顺序,所有影响执行顺序的代码组织方式都会导致 BUG(比如:在条件语句或循环语句中使用),因此要求 Hook 要写在函数体顶层(top level)
  • 修复 React useEffect 中的竞态条件问题
    • 这种情况还是蛮常见的,解决方案两个:一个是借助布尔标志 ignore,一个是 AbortController.abort() 方法
  • React:useTransition() vs useDeferredValue()
    • React 18 引入了并发(Concurrency)特性,这两个钩子就是利用了这一特性,达成可中断、非堵塞式的 UI 渲染,提升页面可响应性

Vue

TypeScript

前端工程化

CSS

  • CSS-in-JS 到底是什么?
    • 本文偏理论,介绍 CSS-in-JS 理念产生的背景,CSS 这门语言本身会带来的问题,以及相比传统 CSS 写法,CSS-in-JS 具备哪些优势

其他


常用代码片段

// 获取一个对象上所有的属性键。Symbol 和字符串,枚举和不可枚举
function getOwn(obj) {
    return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj))
}

// 判定一个对象上是否包含指定属性键
Object.hasOwn(obj, propKey)

About

Zhang Bao's Personal Website

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published