└── README.md /README.md: -------------------------------------------------------------------------------- 1 | 我是 null,擅长移动 Web 开发、React 全家桶、前端工程化、Web 渲染等方面的技术栈。 2 | 3 | 闲暇之余,我喜欢在知乎([前端漫谈](https://www.zhihu.com/column/c_158541431))输出技术博客,也是慕课网[《web前端开发修炼指南》](https://www.imooc.com/read/72)的作者,擅长移动 Web 开发、React 全家桶、前端工程化、Web 渲染等方面的技术栈。 4 | 5 | 感兴趣可以加我微信 gioryyin 一起尬聊。 6 | 7 | ## VSCode 源码分析系列 8 | - [VSCode 架构分析:启动和初始化](https://github.com/yinguangyao/blog/issues/86) `2025` 9 | - [VSCode 架构分析:依赖注入和组件](https://github.com/yinguangyao/blog/issues/87) `2025` 10 | 11 | 12 | ## React 系列 13 | - [介绍 Preact Signals](https://github.com/yinguangyao/blog/issues/80) `2022` 14 | - [各流派 React 状态管理对比和原理实现](https://github.com/yinguangyao/blog/issues/56) `2021` 15 | - [从零实现 Redux 和 React-redux][15] `2020` 16 | - [从零实现 Mobx:深入理解 Mobx 原理](https://github.com/yinguangyao/blog/issues/54) `2020` 17 | - [从零实现 React](https://github.com/yinguangyao/blog/issues/73) `2020` 18 | - [怎样用 React Hooks 实现 Vue3 Composition API?][16] `2020` 19 | - [浅谈 React 组件设计](https://github.com/yinguangyao/blog/issues/40) `2020` 20 | - [React Hooks 原理和最佳实践](https://zhuanlan.zhihu.com/p/136171624) `2020` 21 | - [如何写好 React 业务代码?][17] `2019` 22 | - [深入理解 React Lite][11] `2019` 23 | - [浅谈 React Diff 实现][14] `2019` 24 | - [React 入门:生命周期与组件通信](https://github.com/yinguangyao/blog/issues/59) `2019` 25 | - [React 入门:JSX 和组件](https://github.com/yinguangyao/blog/issues/58) `2019` 26 | - [Mobx 项目实践][12] `2018` 27 | 28 | ## 工作沉淀 29 | - [腾讯文档智能表格渲染层 Feature 设计](https://github.com/yinguangyao/blog/issues/83) `2023` 30 | - [异步分片计算在腾讯文档的实践](https://github.com/yinguangyao/blog/issues/82) `2022` 31 | - [回学校教前端的经历](https://github.com/yinguangyao/blog/issues/70) `2021` 32 | - [移动端开发技术详解](https://github.com/yinguangyao/blog/issues/49) `2021` 33 | - [JS Bridge 通信原理与实践](https://github.com/yinguangyao/blog/issues/50) `2021` 34 | - [有必要使用服务端渲染(SSR)吗?](https://github.com/yinguangyao/blog/issues/46) `2021` 35 | - [Web 安全之恶意扫描](https://github.com/yinguangyao/blog/issues/55) `2021` 36 | - [记一个 Nuxt 同构问题](https://github.com/yinguangyao/blog/issues/42) `2020` 37 | - [记一次 Nuxt 登录页优化](https://github.com/yinguangyao/blog/issues/44) `2020` 38 | - [使用 Puppeteer 实现文件下载](https://github.com/yinguangyao/blog/issues/69) `2020` 39 | - [对跨域页面通信的深入思考][24] `2019` 40 | 41 | ## Canvas 42 | - [Leaferjs,全新的 Canvas 渲染引擎](https://github.com/yinguangyao/blog/issues/85) `2023` 43 | - [浅谈 Canvas 渲染引擎设计](https://github.com/yinguangyao/blog/issues/84) `2023` 44 | - [KonvaJS 原理解析](https://github.com/yinguangyao/blog/issues/68) `2021` 45 | - [canvas 画一朵樱花](https://github.com/yinguangyao/blog/issues/48) `2021` 46 | 47 | ## 前端工程化杂谈 48 | - [whistle 开发调试最佳实践](https://github.com/yinguangyao/blog/issues/77) `2022` 49 | - [使用 MonoRepo 管理前端项目](https://zhuanlan.zhihu.com/p/333021512) `2021` 50 | - [深入理解 webpack 模块](https://github.com/yinguangyao/blog/issues/43) `2020` 51 | - [前端 CI/CD 初探][26] `2019` 52 | 53 | ## JavaScript 面向对象 54 | - [JavaScript 面向对象编程](https://github.com/yinguangyao/blog/issues/62) `2020` 55 | - [深入理解 JavaScript 中的类与继承][23] `2020` 56 | - [前端开发中常用的设计模式](https://github.com/yinguangyao/blog/issues/64) `2020` 57 | - [写好业务代码 —— 前端 MVC 分层的实践](https://github.com/yinguangyao/blog/issues/63) `2020` 58 | - [策略模式和表驱动优化你的条件语句][18] `2019` 59 | - [前端开发中的状态机](https://github.com/yinguangyao/blog/issues/57) `2019` 60 | - [前端开发中的 AOP 和 IoC](https://github.com/yinguangyao/blog/issues/39) `2019` 61 | - [Babel 下的 class 和 extends](https://github.com/yinguangyao/blog/issues/72) `2019` 62 | 63 | ## 重学 ES6 64 | - [深入理解 ES6 中的 Class 和 extends 原理](https://github.com/yinguangyao/blog/issues/53) `2020` 65 | - [深入理解 JavaScript 模块系统](https://github.com/yinguangyao/blog/issues/61) `2020` 66 | - [深入理解回调函数与 Promise 原理](https://github.com/yinguangyao/blog/issues/51) `2020` 67 | - [深入理解 generator 和 async 原理](https://github.com/yinguangyao/blog/issues/52) `2020` 68 | - [ES6 Proxy 实践](https://github.com/yinguangyao/blog/issues/41) `2020` 69 | - [一文搞懂 Dynamic Import 和 Top-level await 提案](https://github.com/yinguangyao/blog/issues/38) `2020` 70 | - [都2020年了,你还不会JavaScript 装饰器?](https://github.com/yinguangyao/blog/issues/34) `2020` 71 | - [面向未来的 ECMAScript 标准](https://github.com/yinguangyao/blog/issues/60) `2020` 72 | 73 | ## JavaScript 进阶 74 | - [实现一个bind函数][19] `2019` 75 | - [JS 函数高阶应用][21] `2019` 76 | - [怎么解决跨域问题][25] `2019` 77 | - [从 ECMA 规范看 JavaScript 类型转换][22] `2019` 78 | - [万事开头难 —— 如何起一个好的变量名?](https://github.com/yinguangyao/blog/issues/66) `2019` 79 | - [你不了解的JS运算符小技巧](https://github.com/yinguangyao/blog/issues/67) `2019` 80 | - [JavaScript 的前世今生](https://github.com/yinguangyao/blog/issues/71) `2019` 81 | 82 | ## Underscore 源码解读 83 | - [underscore源码剖析之整体架构][1] `2018` 84 | - [underscore源码剖析之基础方法][2] `2018` 85 | - [underscore源码剖析之数组遍历函数分析(一)][3] `2018` 86 | - [underscore源码剖析之数组遍历函数分析(二)][4] `2018` 87 | - [underscore源码剖析之throttle节流函数][5] `2018` 88 | - [underscore源码剖析之debounce防抖动函数][6] `2018` 89 | - [underscore源码剖析之查找索引函数][7] `2018` 90 | - [underscore源码剖析之实现模板引擎][8] `2018` 91 | 92 | 93 | ## 其他 94 | - [知乎前端回答合集](https://github.com/yinguangyao/blog/issues/81) `2022` 95 | - [前端面试技巧和总结](https://github.com/yinguangyao/blog/issues/75) `2020` 96 | - [《编写可读代码的艺术》笔记][20] `2018` 97 | - [富爸爸,穷爸爸][30] `2018` 98 | - [关于编程学习][31] `2018` 99 | 100 | 101 | [1]: https://github.com/yinguangyao/blog/issues/7 102 | [2]: https://github.com/yinguangyao/blog/issues/15 103 | [3]: https://github.com/yinguangyao/blog/issues/16 104 | [4]: https://github.com/yinguangyao/blog/issues/17 105 | [5]: https://github.com/yinguangyao/blog/issues/18 106 | [6]: https://github.com/yinguangyao/blog/issues/19 107 | [7]: https://github.com/yinguangyao/blog/issues/20 108 | [8]: https://github.com/yinguangyao/blog/issues/4 109 | [9]: https://github.com/yinguangyao/blog/issues/6 110 | [10]: https://github.com/yinguangyao/blog/issues/13 111 | [11]: https://github.com/yinguangyao/blog/issues/10 112 | [12]: https://github.com/yinguangyao/blog/issues/9 113 | [13]: https://github.com/yinguangyao/blog/issues/26 114 | [14]: https://github.com/yinguangyao/blog/issues/27 115 | [15]: https://github.com/yinguangyao/blog/issues/35 116 | [16]: https://github.com/yinguangyao/blog/issues/37 117 | [17]: https://github.com/yinguangyao/blog/issues/23 118 | [18]: https://github.com/yinguangyao/blog/issues/14 119 | [19]: https://github.com/yinguangyao/blog/issues/5 120 | [20]: https://github.com/yinguangyao/blog/issues/1 121 | [21]: https://github.com/yinguangyao/blog/issues/3 122 | [22]: https://github.com/yinguangyao/blog/issues/30 123 | [23]: https://github.com/yinguangyao/blog/issues/29 124 | [24]: https://github.com/yinguangyao/blog/issues/33 125 | [25]: https://github.com/yinguangyao/blog/issues/32 126 | [26]: http://share.gyyin.top/Shopee/CI.html 127 | [27]: https://github.com/yinguangyao/blog/issues/28 128 | [28]: https://github.com/yinguangyao/blog/issues/24 129 | [29]: https://github.com/yinguangyao/blog/issues/21 130 | [30]: https://github.com/yinguangyao/blog/issues/25 131 | [31]: https://github.com/yinguangyao/blog/issues/31 132 | --------------------------------------------------------------------------------