<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Frontend Weekly Blog</title>
        <link>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023</link>
        <description>Frontend Weekly Blog</description>
        <lastBuildDate>Tue, 12 Dec 2023 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[置顶内容]]></title>
            <link>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/welcome</link>
            <guid>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/welcome</guid>
            <pubDate>Tue, 12 Dec 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[⭐️ 每周更新优质技术文章，欢迎点赞关注！]]></description>
            <content:encoded><![CDATA[<p>⭐️ 每周更新优质技术文章，欢迎点赞关注！</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="typescript-工程化方案">TypeScript 工程化方案<a href="#typescript-工程化方案" class="hash-link" aria-label="Direct link to TypeScript 工程化方案" title="Direct link to TypeScript 工程化方案">​</a></h2><ul><li>⭐️ ⭐️ <a href="https://zhuanlan.zhihu.com/p/403970666" target="_blank" rel="noopener noreferrer">2021 年 TypeScript + React 工程化指南</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/7087811040591675428" target="_blank" rel="noopener noreferrer">都 2022 年了，手动搭建 React 开发环境很难吗</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/7039583726375796749#heading-22" target="_blank" rel="noopener noreferrer">会写 TypeScript 但你真的会 TS 编译配置吗？</a></li><li>🌛 <a href="https://juejin.cn/post/6844904102355271694" target="_blank" rel="noopener noreferrer">【开源】一个 React + TS 项目模板</a><ul><li>一种是使用 ts-loader + babel-loader + fork-ts-checker-webpack-plugin 通过 typescript 进行编译和类型检查</li><li>另一种是 babel-loader + @babel/preset-typescript 使用 babel 进行编译，typescript 只负责类型检查（babel 7 以上）</li></ul></li><li>🌛 <a href="https://juejin.cn/post/6999807899149008910" target="_blank" rel="noopener noreferrer">2021年从零开发前端项目指南</a></li><li><a href="https://juejin.cn/post/6844904052094926855" target="_blank" rel="noopener noreferrer">Webpack 转译 Typescript 现有方案</a></li><li>🌛 <a href="https://segmentfault.com/a/1190000015315545" target="_blank" rel="noopener noreferrer">使用ESLint+Prettier来统一前端代码风格</a></li><li>🌛 <a href="https://segmentfault.com/a/1190000009546913" target="_blank" rel="noopener noreferrer">用 husky 和 lint-staged 构建超溜的代码检查工作流</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="ts-高级技巧">TS 高级技巧<a href="#ts-高级技巧" class="hash-link" aria-label="Direct link to TS 高级技巧" title="Direct link to TS 高级技巧">​</a></h2><ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/usDh1-Wzxrf4BftfWhwduA" target="_blank" rel="noopener noreferrer">你需要知道的TypeScript高级类型</a></li><li>🌛 <a href="https://mp.weixin.qq.com/s/WsldmkW2ovp-okxSY3le9g" target="_blank" rel="noopener noreferrer">Typescript 类型编程，从入门到通达</a></li><li>🌛 <a href="https://juejin.cn/post/7089809919251054628" target="_blank" rel="noopener noreferrer">如何进阶TypeScript功底？一文带你理解TS中各种高级语法</a></li><li>🌛 <a href="https://juejin.cn/post/6998785406619615269" target="_blank" rel="noopener noreferrer">TypeScript从平凡到不凡（基础篇）</a></li><li>🌛 <a href="https://juejin.cn/post/7150668738990178312" target="_blank" rel="noopener noreferrer">推荐12个值得学习的TypeScript宝库！</a></li><li>🌛 <a href="https://mp.weixin.qq.com/s/TUv8Cu6_ftQQ6lEWAwIa4w" target="_blank" rel="noopener noreferrer">TypeScript 类型系统：分布式条件类型全解</a></li><li>🌛 <a href="https://juejin.cn/post/7061556434692997156" target="_blank" rel="noopener noreferrer">接近天花板的TS类型体操，看懂你就能玩转TS了</a></li><li>🌛 <a href="https://mp.weixin.qq.com/s/-x8iVK-hlQd3-OZDC04A5A" target="_blank" rel="noopener noreferrer">TypeScript 类型编程: 从基础到编译器实战</a></li><li>🌛 <a href="https://juejin.cn/post/7050099282317148174" target="_blank" rel="noopener noreferrer">知其然，知其所以然：TypeScript 中的协变与逆变</a></li><li>⭐️ <a href="https://juejin.cn/post/7007251289721536543" target="_blank" rel="noopener noreferrer">TypeScript是如何工作的</a></li><li>⭐️ <a href="https://juejin.cn/post/6964692485415108645" target="_blank" rel="noopener noreferrer">TypeScript 高级用法</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/owtE_7PVLyz5XqwGofaTZg" target="_blank" rel="noopener noreferrer">抛砖引玉：TypeScript 从入门到实践</a></li><li>⭐️ <a href="https://juejin.cn/post/6871752423577223176" target="_blank" rel="noopener noreferrer">细数这些年被困扰过的 TS 问题</a></li><li><a href="https://juejin.cn/post/6844904055039344654" target="_blank" rel="noopener noreferrer">TS 常见问题整理（60多个，持续更新ing）</a></li><li><a href="https://juejin.cn/post/6994102811218673700" target="_blank" rel="noopener noreferrer">Ts高手篇：22个示例深入讲解Ts最晦涩难懂的高级类型工具</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="ts--框架">TS &amp;&amp; 框架<a href="#ts--框架" class="hash-link" aria-label="Direct link to TS &amp;&amp; 框架" title="Direct link to TS &amp;&amp; 框架">​</a></h2><ul><li>⭐️ ⭐️ <a href="https://react-typescript-cheatsheet.netlify.app/" target="_blank" rel="noopener noreferrer">一份很全面的 React TypeScript 备忘录</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6952696734078369828" target="_blank" rel="noopener noreferrer">React + TypeScript实践</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/7071066976830881823" target="_blank" rel="noopener noreferrer">用 Redux 做状态管理，真的很简单🦆</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/7069555976717729805" target="_blank" rel="noopener noreferrer">「React进阶」react-router v6 通关指南</a></li><li><a href="https://juejin.cn/post/7058868160706904078" target="_blank" rel="noopener noreferrer">如何在项目中用好 TypeScript</a></li><li><a href="https://mp.weixin.qq.com/s/6DAyXFHIMW95FS0f3GyHpA" target="_blank" rel="noopener noreferrer">TypeScript 终极初学者指南</a></li><li><a href="https://juejin.cn/post/7021674818621669389" target="_blank" rel="noopener noreferrer">如何优雅地在 React 中使用TypeScript，看这一篇就够了！</a></li><li><a href="https://juejin.cn/post/6844904122550845448" target="_blank" rel="noopener noreferrer">精读《@types react 值得注意的 TS 技巧》</a></li><li><a href="https://juejin.cn/post/7068081327857205261" target="_blank" rel="noopener noreferrer">「1.9W字总结」一份通俗易懂的 TS 教程，入门 + 实战！</a></li><li>⭐️ <a href="https://juejin.cn/post/6844903865255477261" target="_blank" rel="noopener noreferrer">Vue3.0 前的 TypeScript 最佳入门实践</a><ul><li>虽然不是 Vue3 但是也推荐看下</li></ul></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="前端框架">前端框架<a href="#前端框架" class="hash-link" aria-label="Direct link to 前端框架" title="Direct link to 前端框架">​</a></h2><ul><li><a href="https://juejin.cn/post/7047705995534925832" target="_blank" rel="noopener noreferrer">盘点掘金 2021 高赞 Vue 文章</a></li><li><a href="https://juejin.cn/post/7047690546417565733" target="_blank" rel="noopener noreferrer">盘点掘金 2021 高赞 React 文章</a></li><li><a href="https://juejin.cn/post/7047153016771706916" target="_blank" rel="noopener noreferrer">盘点掘金 2021 点赞高达 6000，收藏过万的文章</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/5AnRvwmA-U76T52FR47w8Q" target="_blank" rel="noopener noreferrer">在撸 Vue 的 ⌘+K 唤起菜单库时，我学到了很多</a></li><li>⭐️ <a href="https://juejin.cn/post/6844903913410314247" target="_blank" rel="noopener noreferrer">Vue 项目性能优化 — 实践指南（网上最全 / 详细）</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/66sos7nML5rA0ZZGJ5qFIQ" target="_blank" rel="noopener noreferrer">[<!-- -->科普文<!-- -->]<!-- --> Vue3 到底更新了什么？</a></li><li>⭐️ <a href="https://juejin.cn/post/6922641008106668045" target="_blank" rel="noopener noreferrer">揭秘 Vue.js 九个性能优化技巧</a></li><li>🌛 <a href="https://juejin.cn/post/7005880217684148231" target="_blank" rel="noopener noreferrer">我在项目中用实际用到的22个Vue优化技巧</a></li><li>🌛 <a href="https://juejin.cn/post/6844904165500518414" target="_blank" rel="noopener noreferrer">React Hooks 最佳实践</a></li><li>🌛 <a href="https://juejin.cn/post/7046358484610187277" target="_blank" rel="noopener noreferrer">React Hooks 使用误区，驳官方文档</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/7043772161596588046" target="_blank" rel="noopener noreferrer">宝啊～来聊聊 9 种 React Hook</a></li><li>⭐️ <a href="https://juejin.cn/post/6933018383961194509" target="_blank" rel="noopener noreferrer">你可能不知道的流式 React Hooks（关于组织代码的最佳实践）</a></li><li>⭐️ <a href="https://juejin.cn/post/7025524870842679310#heading-58" target="_blank" rel="noopener noreferrer">从 16 个方向逐步搭建基于 vue3 的前端架构</a></li><li>⭐️ <a href="https://juejin.cn/post/6874007172578033677" target="_blank" rel="noopener noreferrer">34条我能告诉你的Vue之实操篇</a></li><li>🌛 <a href="https://zhuanlan.zhihu.com/p/461844358" target="_blank" rel="noopener noreferrer">React 体系下关于 Mobx 与 Redux 的一些思考</a></li><li>🌛 <a href="https://mp.weixin.qq.com/s/aOapwk4_qi8tNM7vaa7jGA" target="_blank" rel="noopener noreferrer">使用 React&amp;Mobx 的几个最佳实践</a></li><li>⭐️ <a href="https://juejin.cn/post/6995834232350179336" target="_blank" rel="noopener noreferrer">当设计模式遇上 Hooks</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6844903985338400782" target="_blank" rel="noopener noreferrer">React Hooks 详解 【近 1W 字】+ 项目实战</a></li><li><a href="https://juejin.cn/post/6989022564043456543" target="_blank" rel="noopener noreferrer">「React进阶」只用两个自定义 Hooks 就能替代 React-Redux ?</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6950063294270930980" target="_blank" rel="noopener noreferrer">「React进阶」 React全部api解读+基础实践大全(夯实基础2万字总结)</a></li><li><a href="https://juejin.cn/post/6963053793613185031" target="_blank" rel="noopener noreferrer">「React进阶」探案揭秘六种React‘灵异’现象</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6944863057000529933" target="_blank" rel="noopener noreferrer">「react进阶」一文吃透react-hooks原理</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="编程范式">编程范式<a href="#编程范式" class="hash-link" aria-label="Direct link to 编程范式" title="Direct link to 编程范式">​</a></h2><ul><li>⭐️ ⭐️ <a href="https://github.com/shfshanyue/fp-jargon-zh" target="_blank" rel="noopener noreferrer">函数式编程术语</a></li><li><a href="https://juejin.cn/post/7065093131233919006" target="_blank" rel="noopener noreferrer">函数式编程（FP）</a></li><li><a href="https://juejin.cn/post/6974377246140301342" target="_blank" rel="noopener noreferrer">coding优雅指南：函数式编程</a></li><li><a href="https://juejin.cn/post/6892886272377880583" target="_blank" rel="noopener noreferrer">这些高阶的函数技术，你掌握了么</a></li><li><a href="https://juejin.cn/post/6844903936378273799" target="_blank" rel="noopener noreferrer">简明 JavaScript 函数式编程——入门篇</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="技术方案">技术方案<a href="#技术方案" class="hash-link" aria-label="Direct link to 技术方案" title="Direct link to 技术方案">​</a></h2><ul><li>⭐️ <a href="https://juejin.cn/post/7144881028661723167" target="_blank" rel="noopener noreferrer">如何去搞前端基建</a></li><li>⭐️ <a href="https://juejin.cn/post/7129298214959710244" target="_blank" rel="noopener noreferrer">一文教你搞定所有前端鉴权与后端鉴权方案，让你不再迷惘</a></li><li>⭐️ <a href="https://juejin.cn/post/7085679511290773534" target="_blank" rel="noopener noreferrer">腾讯二面：现在要你实现一个埋点监控SDK，你会怎么设计</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Fqy_pkgKvZrdZZc3t5xgdA" target="_blank" rel="noopener noreferrer">【第2774期】基于 Module Federation 的模块化跨栈方案探索</a></li><li><a href="https://juejin.cn/post/7087206796351242248" target="_blank" rel="noopener noreferrer">腾讯三面：Cookie的SameSite了解吧，那SameParty呢</a></li><li><a href="https://juejin.cn/post/7081539471585312805" target="_blank" rel="noopener noreferrer">腾讯一面：CORS为什么能保障安全？为什么只对复杂请求做预检</a></li><li><a href="https://mp.weixin.qq.com/s/3hXLSOQC-B5JGmkOaYjgqw" target="_blank" rel="noopener noreferrer">不使用第三方库怎么实现【前端引导页】功能</a></li><li><a href="https://juejin.cn/post/7124573626161954823" target="_blank" rel="noopener noreferrer">前端架构带你 封装axios，一次封装终身受益「美团后端连连点赞」</a></li><li><a href="https://mp.weixin.qq.com/s/d5M_-8XqFGYnpif7GQNmLA" target="_blank" rel="noopener noreferrer">【第2759期】异步分片计算在腾讯文档的实践</a></li><li><a href="https://mp.weixin.qq.com/s/FZUTFvOutS5NvURjj9jOFA" target="_blank" rel="noopener noreferrer">字节前端监控 SDK 体积与性能优化实践</a></li><li><a href="https://mp.weixin.qq.com/s/8cguocg_1DtZkHLfAGLyXg" target="_blank" rel="noopener noreferrer">使用 Vite 插件自动化实现骨架屏</a></li><li><a href="https://mp.weixin.qq.com/s/l7SA04BJovmJTUDIuobYiw" target="_blank" rel="noopener noreferrer">盘点12个yyds的微信小程序开源项目</a></li><li><a href="https://mp.weixin.qq.com/s/1HyQLZcnZN6I27p_hbfUPg" target="_blank" rel="noopener noreferrer">【第2628期】基于设计稿识别的可视化低代码系统实践</a></li><li><a href="https://mp.weixin.qq.com/s/Ba-3fMQXNXqIzVTjVUrWtQ" target="_blank" rel="noopener noreferrer">浅谈文档的实时协同编辑</a></li><li><a href="https://mp.weixin.qq.com/s/-WHafu5z-Ap4tjrbWesnmA" target="_blank" rel="noopener noreferrer">自动化生成骨架屏的技术方案设计与落地</a></li><li>⭐️ <a href="https://juejin.cn/post/7148254347401363463" target="_blank" rel="noopener noreferrer">谈谈JS二进制：File、Blob、FileReader、ArrayBuffer、Base64</a></li><li>⭐️ <a href="https://juejin.cn/post/6844904046436843527" target="_blank" rel="noopener noreferrer">字节跳动面试官：请你实现一个大文件上传和断点续传</a></li><li>⭐️ <a href="https://juejin.cn/post/6990283221170651149" target="_blank" rel="noopener noreferrer">从零开始手写一个「开箱即用的大文件分片上传库」</a></li><li><a href="https://juejin.cn/post/6992007156320960542" target="_blank" rel="noopener noreferrer">5000字带你全面深入理解JS中的Stream API｜8月更文挑战</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="业务成长--软技能">业务成长 &amp;&amp; 软技能<a href="#业务成长--软技能" class="hash-link" aria-label="Direct link to 业务成长 &amp;&amp; 软技能" title="Direct link to 业务成长 &amp;&amp; 软技能">​</a></h2><ul><li>管理相关<ul><li>⭐️ ⭐️ <a href="https://mp.weixin.qq.com/s/neSFlzQMh2P7ROwJxhVNkg" target="_blank" rel="noopener noreferrer">管理小册、一线同学推荐、一线Leader推荐、总监级推荐</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/FDK0a4HeO60fKyr6ioRYcw" target="_blank" rel="noopener noreferrer">谁能成为Leader，大Leader该做什么</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/dTXg9a4kXwVZi2N7mP71mg" target="_blank" rel="noopener noreferrer">少年，知道什么是信息差创造价值吗</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/oodAZtxzHCZVGIGS9rBzIA" target="_blank" rel="noopener noreferrer">什么是向上管理</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/B3qgLTvSHzE33d6O-k7bAQ" target="_blank" rel="noopener noreferrer">你是如何做汇报的</a></li></ul></li><li>⭐️ <a href="https://juejin.cn/post/7073001183123603470" target="_blank" rel="noopener noreferrer">平时的工作如何体现一个人的技术深度</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/U6jAFVrgrKIm9--amZV5rA" target="_blank" rel="noopener noreferrer">如何成为优秀工程师之软技能篇</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/MOWQ3rBFaITHSD2hvSelcw" target="_blank" rel="noopener noreferrer">干货！6个方面，32条总结教你提升职场经验</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/kozXWY95HXiQPGou1sfttg" target="_blank" rel="noopener noreferrer">聊聊如何学习</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/K36xQbYgGVme8v_p9_dhkQ" target="_blank" rel="noopener noreferrer">以前端架构师身份，从零开始搞事搞事搞事</a></li><li>⭐️ <a href="https://juejin.cn/post/7115634967945674765" target="_blank" rel="noopener noreferrer">Umi Core Maintainers，月榜作者，晋升 P8，来听我碎碎念如何｜2022 年中总结</a></li><li>⭐️ <a href="https://juejin.cn/post/7185376363808260152" target="_blank" rel="noopener noreferrer">一图胜千言系列——泳道图和数据流图</a></li><li>⭐️ <a href="https://juejin.cn/post/7153432342919397383" target="_blank" rel="noopener noreferrer">怎么做到一图胜千言</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/URJC9ERPrcniiFinUsIJkg" target="_blank" rel="noopener noreferrer">【图书】程序员的底层思维</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/iTFj1Sn5vPTgkAT2Q9YC0w" target="_blank" rel="noopener noreferrer">作为大厂面试官，原来这种学生最吃香！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/rJN14WFRTKjhoy8oWPulWw" target="_blank" rel="noopener noreferrer">用代码画时序图！YYDS</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/cbKpWKWrhyJwKQhlyYhQ_w" target="_blank" rel="noopener noreferrer">如何在项目开发中逐步成长</a></li><li>⭐️ <a href="https://juejin.cn/post/7114967732805697543" target="_blank" rel="noopener noreferrer">冴羽答读者问：如何在工作中打造影响力，带动同事</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/1BdXL5dQfP6DnK7iJs6zGQ" target="_blank" rel="noopener noreferrer">入职Apifox研发组半年，我所提升的软技能｜文末抽书</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/G8SVu9CWrKwbT5jfXaBmtw" target="_blank" rel="noopener noreferrer">有哪些值得计算机专业学生加入的国企</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/usMxG3cAowUtO3Lvn9VjsQ" target="_blank" rel="noopener noreferrer">晋升，如何减少 50%+ 的答辩材料准备时间、调整心态（个人经验总结）</a></li><li><a href="https://mp.weixin.qq.com/s/1QMPfODUcH1p4pGaoO1owA" target="_blank" rel="noopener noreferrer">如何写好一份晋升PPT（附PPT模板）</a></li><li><a href="https://mp.weixin.qq.com/s/hXFWU6uuil1aC1lEYO_KhQ" target="_blank" rel="noopener noreferrer">如何画出一张优秀的架构图（老鸟必备）</a></li><li>⭐️ <a href="https://juejin.cn/post/6965675185890394119" target="_blank" rel="noopener noreferrer">精读《前端职业规划 - 2021 年》</a></li><li>⭐️ <a href="https://juejin.cn/post/7034419410706104356" target="_blank" rel="noopener noreferrer">2022年如何成为一名优秀的大前端Leader？</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/n4Pa0Bao1ISS68IOPWGI_Q" target="_blank" rel="noopener noreferrer">技术人的七大必备特质</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6906468062943182862#heading-8" target="_blank" rel="noopener noreferrer">初级工程师如何快速成长和寻求突破</a></li><li><a href="https://mp.weixin.qq.com/s/NRqhJax8e6K8LMCNZSSozA" target="_blank" rel="noopener noreferrer">年底了，你是如何做工作汇报的？</a></li><li>⭐️ <a href="https://juejin.cn/post/6844904103504527374" target="_blank" rel="noopener noreferrer">写给初中级前端的高级进阶指南</a></li><li><a href="https://juejin.cn/post/7041713124210114567" target="_blank" rel="noopener noreferrer">在政采云如何写前端技术方案文档</a></li><li><a href="https://juejin.cn/post/7017643726944108558" target="_blank" rel="noopener noreferrer">如何编写前端设计文档</a></li><li>⭐️ <a href="https://juejin.cn/post/6901845776880795662#heading-0" target="_blank" rel="noopener noreferrer">理清思路，前端技术调研到底应该怎么做？</a></li><li><a href="https://juejin.cn/post/6869548364640288781" target="_blank" rel="noopener noreferrer">从实习到入职：与你分享我在政采云的工作和成长</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="git-相关">Git 相关<a href="#git-相关" class="hash-link" aria-label="Direct link to Git 相关" title="Direct link to Git 相关">​</a></h2><ul><li>⭐️ <a href="https://zhuanlan.zhihu.com/p/250493093" target="_blank" rel="noopener noreferrer">血泪教训之请不要再轻视Git —— 我在工作中是如何使用 Git 的</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/aTr6xf4BEuF-yxL340TnLg" target="_blank" rel="noopener noreferrer">GitHub 搜索技巧：如何更有效地搜索 issue、repo 和更多信息</a></li><li>⭐️ <a href="https://juejin.cn/post/7046720828901163016" target="_blank" rel="noopener noreferrer">如果你还不会用git回滚代码，那你一定要来看看</a></li><li>⭐️ <a href="https://juejin.cn/post/7071780876501123085" target="_blank" rel="noopener noreferrer">Git不要只会pull和push，试试这5条提高效率的命令</a></li><li><a href="https://juejin.cn/post/7046409685561245733" target="_blank" rel="noopener noreferrer">利用好 git bisect 这把利器，帮助你快速定位疑难 bug</a></li><li>⭐️ <a href="https://juejin.cn/post/7024043015794589727" target="_blank" rel="noopener noreferrer">前端架构师的 git 功力，你有几成火候？</a></li><li>⭐️ <a href="https://segmentfault.com/a/1190000040712052" target="_blank" rel="noopener noreferrer">两条命令让你的git自动变基</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6844904191203213326" target="_blank" rel="noopener noreferrer">多年 Git 使用心得 &amp; 常见问题整理</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6974184935804534815" target="_blank" rel="noopener noreferrer">我在工作中是如何使用 git 的</a></li><li>🌛 <a href="https://juejin.cn/post/7000186205224566791" target="_blank" rel="noopener noreferrer">为什么 husky 放弃了传统的 JS 配置</a></li><li>⭐️ <a href="https://juejin.cn/post/6844904036068491278" target="_blank" rel="noopener noreferrer">你可能已经忽略的git commit规范</a></li><li><a href="https://gitmoji.dev/" target="_blank" rel="noopener noreferrer">gitmoji: An emoji guide for your commit messages</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="源码系列">源码系列<a href="#源码系列" class="hash-link" aria-label="Direct link to 源码系列" title="Direct link to 源码系列">​</a></h2><ul><li>⭐️ <a href="https://juejin.cn/post/6982004709145968677" target="_blank" rel="noopener noreferrer">[建议收藏] 你想知道的Vue3核心源码这里都有</a></li><li>⭐️ <a href="https://juejin.cn/post/7048970987500470279" target="_blank" rel="noopener noreferrer">六千字详解！vue3 响应式是如何实现的？</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/7019185205336342542" target="_blank" rel="noopener noreferrer">Redux通关简洁攻略 -- 看这一篇就够了！</a></li><li>⭐️ <a href="https://juejin.cn/post/6978654109893132318" target="_blank" rel="noopener noreferrer">手写系列-实现一个铂金段位的 React</a></li><li>⭐️ <a href="https://juejin.cn/post/7010539227284766751" target="_blank" rel="noopener noreferrer">React 运行时优化方案的演进</a></li><li>⭐️ <a href="https://juejin.cn/post/6990974525273800712" target="_blank" rel="noopener noreferrer">带你快速手写一个简易版vue了解vue响应式</a></li><li><a href="https://juejin.cn/post/7072321805792313357" target="_blank" rel="noopener noreferrer">Vue3.2 vDOM diff流程分析之一：diff算法</a></li><li><a href="https://juejin.cn/post/6977363265965785102" target="_blank" rel="noopener noreferrer">2021年，让我们手写一个mini版本的vue2.x和vue3.x框架</a></li><li><a href="https://juejin.cn/post/6846687602679119885" target="_blank" rel="noopener noreferrer">Vue(v2.6.11)万行源码生啃，就硬刚！</a></li><li><a href="https://juejin.cn/post/6992018709439053837" target="_blank" rel="noopener noreferrer">尤雨溪国外教程：亲手带你写个简易版的Vue！</a></li><li><a href="https://codepen.io/collection/DkxpbE?cursor=ZD0wJm89MCZwPTEmdj00" target="_blank" rel="noopener noreferrer">Vue 3 Workshop Code Samples</a></li><li>⭐️ <a href="https://juejin.cn/post/6997965021401579556" target="_blank" rel="noopener noreferrer">diff 算法深入一下？</a></li><li>⭐️ <a href="https://juejin.cn/post/6997943192851054606" target="_blank" rel="noopener noreferrer">Vue 3.2 发布了，那尤雨溪是怎么发布 Vue.js 的？</a></li><li>⭐️ <a href="https://juejin.cn/post/6994976281053888519" target="_blank" rel="noopener noreferrer">初学者也能看懂的 Vue3 源码中那些实用的基础工具函数</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="webpack-系列">Webpack 系列<a href="#webpack-系列" class="hash-link" aria-label="Direct link to Webpack 系列" title="Direct link to Webpack 系列">​</a></h2><ul><li><a href="https://juejin.cn/post/6937125495439900685" target="_blank" rel="noopener noreferrer">Webpack 案例 —— vue-loader 原理分析</a><ul><li>通过编写一个 plugin，在预处理阶段通过插件 apply 函数动态修改 webpack 配置，注入 vue-loader 专用的 rules</li></ul></li><li>⭐️ <a href="https://juejin.cn/post/7047777251949019173" target="_blank" rel="noopener noreferrer">超硬核｜带你畅游在 Webpack 插件开发者的世界</a></li><li>⭐️ <a href="https://juejin.cn/post/7170852747749621791" target="_blank" rel="noopener noreferrer">二十张图片彻底讲明白Webpack设计理念，以看懂为目的</a></li><li>⭐️ <a href="https://juejin.cn/post/7164175171358556173" target="_blank" rel="noopener noreferrer">【中级/高级前端】为什么我建议你一定要读一读 Tapable 源码</a></li><li><a href="https://mp.weixin.qq.com/s/P3mzw_vmOR6K_Mj-963o3g" target="_blank" rel="noopener noreferrer">Tree shaking问题排查指南来啦</a></li><li><a href="https://zhuanlan.zhihu.com/p/32831172" target="_blank" rel="noopener noreferrer">你的Tree-Shaking并没什么卵用</a></li><li><a href="https://juejin.cn/post/6844903939289120782" target="_blank" rel="noopener noreferrer">手摸手 Webpack 多入口配置实践</a></li><li>⭐️ <a href="https://juejin.cn/post/7031546400034947108" target="_blank" rel="noopener noreferrer">Webapck5核心打包原理全流程解析</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/7023242274876162084" target="_blank" rel="noopener noreferrer">【万字】透过分析 webpack 面试题，构建 webpack5.x 知识体系</a></li><li>⭐️ <a href="https://juejin.cn/post/7021729340945596424" target="_blank" rel="noopener noreferrer">Webpack 原理系列十：HMR 原理全解析</a></li><li><a href="https://mp.weixin.qq.com/s/gwHwVxA4zh59SBvq-onM-g" target="_blank" rel="noopener noreferrer">Webpack5 实践 - 构建效率倍速提升！</a></li><li>🌛 <a href="https://mp.weixin.qq.com/s/mpF6W-4dElu0UPed03oJQw" target="_blank" rel="noopener noreferrer">Webpack 性能系列一: 使用 Cache 提升构建性能</a></li><li>🌛 <a href="https://juejin.cn/post/6910893471339708429" target="_blank" rel="noopener noreferrer">我是如何将网页性能提升5倍的 — 构建优化篇</a></li><li>⭐️ <a href="https://juejin.cn/post/6858905382861946894" target="_blank" rel="noopener noreferrer">Webpack配置全解析（优化篇）</a></li><li>⭐️ <a href="https://juejin.cn/post/7144934998884220958" target="_blank" rel="noopener noreferrer">如何快速成为一名熟练的 Webpack 配置工程师 - 上篇</a></li><li>⭐️ <a href="https://juejin.cn/post/7145025071432597541" target="_blank" rel="noopener noreferrer">如何快速成为一名熟练的 Webpack 配置工程师 - 下篇</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6996816316875161637" target="_blank" rel="noopener noreferrer">学习 Webpack5 之路（优化篇）- 近 7k 字</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6991774994552324133" target="_blank" rel="noopener noreferrer">学习 Webpack5 之路（实践篇）</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6991630925792542750" target="_blank" rel="noopener noreferrer">学习 Webpack5 之路（基础篇）</a></li><li>⭐️ <a href="https://juejin.cn/post/6844903912588181511" target="_blank" rel="noopener noreferrer">手把手带你入门 Webpack4</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6949040393165996040" target="_blank" rel="noopener noreferrer">[<!-- -->万字总结<!-- -->]<!-- --> 一文吃透 Webpack 核心原理</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="vite-系列">Vite 系列<a href="#vite-系列" class="hash-link" aria-label="Direct link to Vite 系列" title="Direct link to Vite 系列">​</a></h2><ul><li><a href="https://juejin.cn/post/7124112069355372581" target="_blank" rel="noopener noreferrer">学会这 20 个库，让你快速看懂 vue3 和 vite3 源码 🚀</a></li><li><a href="https://juejin.cn/post/7094984070999834655" target="_blank" rel="noopener noreferrer">面试官：你会看 Vite 源码吗</a></li><li><a href="https://juejin.cn/post/6986533364438138894" target="_blank" rel="noopener noreferrer">前端历史项目的 Vite 迁移实践总结</a></li><li><a href="https://juejin.cn/post/6979932627465666568" target="_blank" rel="noopener noreferrer">下一代前端构建工具 - Vite 2.x 源码级分析</a></li><li><a href="https://juejin.cn/post/6956564266812571656" target="_blank" rel="noopener noreferrer">面向未来的前端构建工具 - Vite ⚡️原理分析</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="pnpm--monorepo">PNPM &amp;&amp; Monorepo<a href="#pnpm--monorepo" class="hash-link" aria-label="Direct link to PNPM &amp;&amp; Monorepo" title="Direct link to PNPM &amp;&amp; Monorepo">​</a></h2><ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/beLkwHan2C8BuSArs53cIA" target="_blank" rel="noopener noreferrer">课代表：Turborepo 笔记</a></li><li>⭐️ <a href="https://juejin.cn/post/7015566240991150117" target="_blank" rel="noopener noreferrer">lerna + dumi + eslint多包管理实践</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/z-tKxgRPmdyR0zwc78Khgw" target="_blank" rel="noopener noreferrer">组件库Monmrepo架构与开发调试环境构建</a></li><li><a href="https://juejin.cn/post/7177585131861835837" target="_blank" rel="noopener noreferrer">React Native工程Monorepo改造实践</a></li><li><a href="https://mp.weixin.qq.com/s/JWks8VyuXoB5zaeYdyJPxw" target="_blank" rel="noopener noreferrer">【第2714期】从Multirepo到Monorepo 袋鼠云数栈前端研发效率提升探索之路</a></li><li><a href="https://mp.weixin.qq.com/s/N0CZABDD0TKTmdljH3y74A" target="_blank" rel="noopener noreferrer">Monorepo，大型前端项目管理模式实践</a></li><li><a href="https://juejin.cn/post/7094984070999834655" target="_blank" rel="noopener noreferrer">面试官：你会看 Vite 源码吗</a></li><li><a href="https://mp.weixin.qq.com/s/6peafvVjmcF65PFSggSLYQ" target="_blank" rel="noopener noreferrer">复活了！ Lerna V6 带来了哪些新东西</a></li><li><a href="https://juejin.cn/post/7098609682519949325" target="_blank" rel="noopener noreferrer">pnpm + workspace + changesets 构建你的 monorepo 工程</a></li><li><a href="https://juejin.cn/post/7161063570594070559" target="_blank" rel="noopener noreferrer">Element Plus 组件库核心技术揭秘：5. 从终端命令解析器说起谈谈 npm 包管理工具的运行原理</a></li><li><a href="https://juejin.cn/post/7157743898939359262" target="_blank" rel="noopener noreferrer">Element Plus 组件库相关技术揭秘：4. ESLint 技术原理与实战及代码规范自动化详解</a></li><li><a href="https://juejin.cn/post/7146183222425518093" target="_blank" rel="noopener noreferrer">Element Plus 组件库相关技术揭秘：2. 组件库工程化实战之 Monorepo 架构搭建</a></li><li><a href="https://juejin.cn/post/7129267782515949575" target="_blank" rel="noopener noreferrer">🚀Turborepo：发布当月就激增 3.8k Star，这款超神的新兴 Monorepo 方案，你不打算尝试下吗</a></li><li><a href="https://juejin.cn/post/7136925215388499998" target="_blank" rel="noopener noreferrer">最详细的 lerna 中文手册</a></li><li><a href="https://turborepo.org/docs/handbook/what-is-a-monorepo" target="_blank" rel="noopener noreferrer">Monorepo Handbook 新鲜出炉</a></li><li><a href="https://mp.weixin.qq.com/s/99nozy-vtFMGcBTxYvumWA" target="_blank" rel="noopener noreferrer">现代 Monorepo 工程技术选型，聊聊我的思考</a></li><li><a href="https://juejin.cn/post/7092766235380678687" target="_blank" rel="noopener noreferrer">看了9个开源的 Vue3 组件库，发现了这些前端的流行趋势</a></li><li><a href="https://zhuanlan.zhihu.com/p/455809528" target="_blank" rel="noopener noreferrer">深入浅出 tnpm rapid 模式 - 如何比 pnpm 快 10 秒</a></li><li><a href="https://mp.weixin.qq.com/s/grb2OlBYiwU3TOkEtNZReA" target="_blank" rel="noopener noreferrer">pnpm 源码结构及调试指南</a></li><li><a href="https://mp.weixin.qq.com/s/0Nx093GdMcYo5Mr5VRFDjw" target="_blank" rel="noopener noreferrer">【第2506期】JavaScript 包管理器简史（npm/yarn/pnpm）</a></li><li><a href="https://juejin.cn/post/7083414641610588168" target="_blank" rel="noopener noreferrer">前端现代包管理器的进化史</a></li><li><a href="https://juejin.cn/post/7053340250210795557" target="_blank" rel="noopener noreferrer">都2022年了，pnpm快到碗里来！</a></li><li><a href="https://juejin.cn/post/6932046455733485575" target="_blank" rel="noopener noreferrer">关于现代包管理器的深度思考——为什么现在我更推荐 pnpm 而不是 npm/yarn?</a></li><li><a href="https://juejin.cn/post/7051929587852247077" target="_blank" rel="noopener noreferrer">年终盘点：2022基于Monorepo的首个大趋势-TurboRepo</a></li><li><a href="https://juejin.cn/post/7030207667457130527" target="_blank" rel="noopener noreferrer">基于 Lerna 实现 Monorepo 项目管理</a></li><li><a href="https://juejin.cn/post/7043998041786810398" target="_blank" rel="noopener noreferrer">One For All：基于pnpm + lerna + typescript的最佳项目实践 - 理论篇</a></li><li><a href="https://juejin.cn/post/7029262501833359368" target="_blank" rel="noopener noreferrer">【我要做开源】Vue DevUI开源指南08：Monorepo改造</a></li><li><a href="https://juejin.cn/post/6972139870231724045" target="_blank" rel="noopener noreferrer">Monorepo 的这些坑，我们帮你踩过了！</a></li><li><a href="https://juejin.cn/post/6950082433647640612" target="_blank" rel="noopener noreferrer">开源项目都在用 monorepo，但是你知道居然有那么多坑么？</a></li><li><a href="https://juejin.cn/post/6924854598268108807" target="_blank" rel="noopener noreferrer">All in one：项目级 monorepo 策略最佳实践</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="rollup-系列">Rollup 系列<a href="#rollup-系列" class="hash-link" aria-label="Direct link to Rollup 系列" title="Direct link to Rollup 系列">​</a></h2><ul><li>⭐️ <a href="https://juejin.cn/post/7145090564801691684" target="_blank" rel="noopener noreferrer">【实战篇】最详细的Rollup打包项目教程</a></li><li>⭐️ <a href="https://juejin.cn/post/7144365208646418462" target="_blank" rel="noopener noreferrer">从0到1开发一个React组件库</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/xjY0d8eNTmAuCZKxKQeu7g" target="_blank" rel="noopener noreferrer">基于storybook组件库的技术选型该怎么选</a></li><li>⭐️ <a href="https://juejin.cn/post/7151653067593613320" target="_blank" rel="noopener noreferrer">一文聊完前端项目中的Babel配置</a></li><li>⭐️ <a href="https://juejin.cn/post/7126394898445500423" target="_blank" rel="noopener noreferrer">从 package.json 来聊聊如何管理一款优秀的 Npm 包</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/mL1pv2kPKvtaHalr7PXKow" target="_blank" rel="noopener noreferrer">前端工程化基建探索：从内部机制和核心原理了解npm</a></li><li><a href="https://juejin.cn/post/7069555431303020580" target="_blank" rel="noopener noreferrer">一文入门rollup🪀！13组demo带你轻松驾驭</a></li><li><a href="https://juejin.cn/post/7051236803344334862" target="_blank" rel="noopener noreferrer">说不清rollup能输出哪6种格式😥差点被鄙视</a></li><li><a href="https://juejin.cn/post/7052307032971411463" target="_blank" rel="noopener noreferrer">从零开始发布自己的NPM包</a></li><li><a href="https://juejin.cn/post/6844903970469576718" target="_blank" rel="noopener noreferrer">前端组件/库打包利器rollup使用与配置实战</a></li><li><a href="https://juejin.cn/post/6869551115420041229" target="_blank" rel="noopener noreferrer">一文带你快速上手Rollup</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="微前端--模块联邦">微前端 &amp;&amp; 模块联邦<a href="#微前端--模块联邦" class="hash-link" aria-label="Direct link to 微前端 &amp;&amp; 模块联邦" title="Direct link to 微前端 &amp;&amp; 模块联邦">​</a></h2><ul><li>🌟 <a href="https://mp.weixin.qq.com/s/pT_tugg_EvE5pnMCaUqliw" target="_blank" rel="noopener noreferrer">Module Federation最佳实践</a></li><li>🌟 <a href="https://mp.weixin.qq.com/s/WXeUuUdgF_3djqBhh1siQA" target="_blank" rel="noopener noreferrer">模块联邦在微前端架构中的实践</a></li><li>🌟 <a href="https://mp.weixin.qq.com/s/u5oAcIYiGrl1qOujOYjzqw" target="_blank" rel="noopener noreferrer">基于 MF 的组件化共享工作流</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/l_KKNRUyJANN6wkoC2TlVQ" target="_blank" rel="noopener noreferrer">聊一聊关于微前端架构的几种技术选型</a></li><li>⭐️ <a href="https://juejin.cn/post/7121244973558661150" target="_blank" rel="noopener noreferrer">超大体量项目，微前端落地方案，看完后悔来找我</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Fqy_pkgKvZrdZZc3t5xgdA" target="_blank" rel="noopener noreferrer">【第2774期】基于 Module Federation 的模块化跨栈方案探索</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/iS-prT1xZPV6cpH7MHRRdQ" target="_blank" rel="noopener noreferrer">【第1912期】探索 webpack5 新特性Module federation在腾讯文档的应用</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/PFKxQgZPER_XHUSbk_SQJA" target="_blank" rel="noopener noreferrer">【第1901期】Webpack 5 Module Federation: JavaScript 架构的变革者</a></li><li><a href="https://mp.weixin.qq.com/s/vy84FY3P6KPeWzDaNl6Ntg" target="_blank" rel="noopener noreferrer">全面敏捷模式下的微前端方案</a></li><li><a href="https://mp.weixin.qq.com/s/mvdOU8uVG9NjGPzInpPxJA" target="_blank" rel="noopener noreferrer">微前端场景下的代码共享</a></li><li><a href="https://mp.weixin.qq.com/s/LL6VZj36PKftbwaybBFmXg" target="_blank" rel="noopener noreferrer">一文带你进入微前端世界</a></li><li><a href="https://mp.weixin.qq.com/s/ylkY9HWTQKPlbDb2M33YWQ" target="_blank" rel="noopener noreferrer">微前端架构的几种技术选型</a></li><li><a href="https://mp.weixin.qq.com/s/yu1tKtwneoTI9eSGS4us-g" target="_blank" rel="noopener noreferrer">我们是怎么在项目中落地qiankun的</a></li><li><a href="https://juejin.cn/post/7101457212085633054" target="_blank" rel="noopener noreferrer">模块联邦浅析</a></li><li><a href="https://mp.weixin.qq.com/s/ovwjufnPmCoYNLMkv5xv2g" target="_blank" rel="noopener noreferrer">【第2618期】手把手教你定制一套适合团队的微前端体系</a></li><li><a href="https://mp.weixin.qq.com/s/zt7x2KjMT_cWvLVVa2-Hww" target="_blank" rel="noopener noreferrer">【工程化】探索webpack5中的Module Federation</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="vs-code-插件">VS Code 插件<a href="#vs-code-插件" class="hash-link" aria-label="Direct link to VS Code 插件" title="Direct link to VS Code 插件">​</a></h2><ul><li><a href="https://mp.weixin.qq.com/s/4MmBSD-d-9T5-kFhcWNlTA" target="_blank" rel="noopener noreferrer">vscode插件原理浅析与实战</a></li><li><a href="https://github.com/microsoft/vscode-extension-samples" target="_blank" rel="noopener noreferrer">vscode-extension-samples</a></li><li><a href="https://mp.weixin.qq.com/s/e2gfSnBrR6rn7x37ZGLplg" target="_blank" rel="noopener noreferrer">开发一款专属的 VSCode 代码提示插件</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="前端工程化">前端工程化<a href="#前端工程化" class="hash-link" aria-label="Direct link to 前端工程化" title="Direct link to 前端工程化">​</a></h2><ul><li>⭐️ <a href="https://juejin.cn/post/7062617190981173278" target="_blank" rel="noopener noreferrer">来自未来，2022 年的前端人都在做什么?</a></li><li><a href="https://juejin.cn/post/7056612950412361741" target="_blank" rel="noopener noreferrer">为什么说 WebAssembly 是 Web 的未来？</a></li><li><a href="https://juejin.cn/post/7057114641507287048" target="_blank" rel="noopener noreferrer">easy-serverless 功能分析</a></li><li><a href="https://mp.weixin.qq.com/s/ckskF06PD43KHpKAGaYmRA" target="_blank" rel="noopener noreferrer">2022 年 JavaScript 开发工具的生态</a></li><li><a href="https://mp.weixin.qq.com/s/JZbsIqsqNeJmc__QFKpo1Q" target="_blank" rel="noopener noreferrer">超全面的前端新一代构建工具对比: esbuild、Snowpack、Vite、wmr</a></li><li><a href="https://mp.weixin.qq.com/s/3aVYGfahv5rZJbWBhaI3BA" target="_blank" rel="noopener noreferrer">esno，基于 Esbuild 的神器</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/qnA1tFKMXr7hwsEKFXKOZg" target="_blank" rel="noopener noreferrer">Deno 简介：它比 Node.js 更好吗？</a></li><li>⭐️ <a href="https://juejin.cn/post/7046204235226021901" target="_blank" rel="noopener noreferrer">基于 Next.js 的 SSR/SSG 方案了解一下？</a></li><li>🌛 <a href="https://juejin.cn/post/7085257325165936648" target="_blank" rel="noopener noreferrer">我是如何带领团队从零到一建立前端规范的</a></li><li>🌛 <a href="https://juejin.cn/post/7029512357428592648" target="_blank" rel="noopener noreferrer">前端架构师神技，三招统一团队代码风格</a></li><li>🌛 <a href="https://juejin.cn/post/6844904110601273357" target="_blank" rel="noopener noreferrer">手把手教你搭建一个灰度发布环境</a></li><li>⭐️ <a href="https://juejin.cn/post/7049696761858195486" target="_blank" rel="noopener noreferrer">ES6 以上版本代码要不要转码成 ES5 ?</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/3TKcUeoyzXvH3MGVI6Dj9A" target="_blank" rel="noopener noreferrer">ESM 与 CJS 的 Interop 来世今生</a></li><li>⭐️ <a href="https://www.zhihu.com/question/493891614/answer/2269197391" target="_blank" rel="noopener noreferrer">2022 前端技术领域会有哪些新的变化？</a></li><li>🌛 <a href="https://segmentfault.com/a/1190000040496020" target="_blank" rel="noopener noreferrer">前端构建这十年</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="软件架构--设计模式">软件架构 &amp;&amp; 设计模式<a href="#软件架构--设计模式" class="hash-link" aria-label="Direct link to 软件架构 &amp;&amp; 设计模式" title="Direct link to 软件架构 &amp;&amp; 设计模式">​</a></h2><ul><li>⭐️ Software Engineering at Google<ul><li>在线阅读：<a href="https://abseil.io/blog/04222021-swe-book" target="_blank" rel="noopener noreferrer">https://abseil.io/blog/04222021-swe-book</a></li><li>PDF 下载：<a href="https://github.com/garfield-dev-team/Frontend-Training-Program/blob/main/OReilly.Software.Engineering.at.Google.2020.3.pdf" target="_blank" rel="noopener noreferrer">https://github.com/garfield-dev-team/Frontend-Training-Program/blob/main/OReilly.Software.Engineering.at.Google.2020.3.pdf</a></li></ul></li><li><a href="https://dev.to/wiseai/the-ultimate-guide-to-software-engineering-545e" target="_blank" rel="noopener noreferrer">The Ultimate Guide To Software Engineering</a></li><li>⭐️ <a href="https://juejin.cn/post/7145014659584622629" target="_blank" rel="noopener noreferrer">语雀桌面端技术架构实践</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/kkSQu7zdr6x_CZRE5uW-lg" target="_blank" rel="noopener noreferrer">聊聊分布式一致性！</a></li><li><a href="https://mp.weixin.qq.com/s/kFjfzwTOdaKA2ym63VR3DQ" target="_blank" rel="noopener noreferrer">探秘微信业务优化：DDD从入门到实践</a></li><li><a href="https://mp.weixin.qq.com/s/12BS4V6fvXkeb84XDpPnHw" target="_blank" rel="noopener noreferrer">了解微前端，深入前端架构的前世今生</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/yyoaDbKsvhdZbAL8T2V-zg" target="_blank" rel="noopener noreferrer">忘了又看，看了又忘？保姆级教学，一口气教你玩转 3 种高频设计模式！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/ocPx6Sw09ioDyz_IOWK69Q" target="_blank" rel="noopener noreferrer">工作中常见的 6 种设计模式，你用过几种</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/3MwRLM0jDmwv5l6gamFjcw" target="_blank" rel="noopener noreferrer">【第2757期】软件架构的23个基本原则</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/iB23DV4hovPDdf5_4TCaOA" target="_blank" rel="noopener noreferrer">【第2677期】如何在React中应用SOLID原则</a></li><li><a href="https://mp.weixin.qq.com/s/1h6yqCWyzYLM8WPGlGdtVA" target="_blank" rel="noopener noreferrer">【第2703期】软件架构手册</a></li><li><a href="https://mp.weixin.qq.com/s/KHeo5bdY4cjPfA5I1mjXWw" target="_blank" rel="noopener noreferrer">【第2126期】每个开发者都应该知道的 SOLID 原则</a></li><li><a href="https://mp.weixin.qq.com/s/mz5S1iiRWkk-KKJg5lOOJQ" target="_blank" rel="noopener noreferrer">基于 TypeScript 理解程序设计的 SOLID 原则</a></li><li><a href="https://www.yuque.com/surfacew/fe/qg0uev" target="_blank" rel="noopener noreferrer">深入浅出前端做控制反转与依赖注入</a></li><li><a href="https://mp.weixin.qq.com/s/hP5YMgJTgaVIlaK-XJ3Bcw" target="_blank" rel="noopener noreferrer">javascript的23种设计模式</a></li><li><a href="https://mp.weixin.qq.com/s/iZ9BX6cCCp_TB-SC3knuew" target="_blank" rel="noopener noreferrer">实战！如何从零搭建10万级 QPS 大流量、高并发优惠券系统</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/jU0awhez7QzN_nKrm4BNwg" target="_blank" rel="noopener noreferrer">肝了一个月的 DDD，一文带你掌握</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/SMAycMJPWr018sU04kbfbQ" target="_blank" rel="noopener noreferrer">领域驱动设计四论</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/BIYp9DNd_9sw5O2daiHmlA" target="_blank" rel="noopener noreferrer">万字长文助你上手软件领域驱动设计 DDD</a></li><li>🌛 <a href="https://mp.weixin.qq.com/s/QCIlheiEgmU4Qi-4b_XoqQ" target="_blank" rel="noopener noreferrer">用DDD(领域驱动设计)和ADT(代数数据类型)提升代码质量</a></li><li>🌛 <a href="https://mp.weixin.qq.com/s/hsH7LMBEDGe_df9UbfOvbQ" target="_blank" rel="noopener noreferrer">后台服务架构高性能设计之道</a></li><li><a href="https://coolshell.cn/articles/21672.html" target="_blank" rel="noopener noreferrer">我做系统架构的一些原则</a></li><li><a href="https://mp.weixin.qq.com/s/m1Dv-YG60AKArGu-URr88w" target="_blank" rel="noopener noreferrer">前端架构设计中如何做好技术决策？</a></li><li><a href="https://mp.weixin.qq.com/s/4bB_B5JTOrev8mqfG7K2cw" target="_blank" rel="noopener noreferrer">前端领域的 “干净架构”</a></li><li><a href="https://mp.weixin.qq.com/s/g9F05SRnQBTzzfx_2CKqhg" target="_blank" rel="noopener noreferrer">只会用传统开发模式？10分钟教你玩转敏捷！</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="持续集成">持续集成<a href="#持续集成" class="hash-link" aria-label="Direct link to 持续集成" title="Direct link to 持续集成">​</a></h2><ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/Bf5JNQjki9xLVzioYPy5qg" target="_blank" rel="noopener noreferrer">【好文分享】基于Jira的运维发布平台的设计与实现</a></li><li><a href="https://zhuanlan.zhihu.com/p/445217118" target="_blank" rel="noopener noreferrer">写给前端的 K8S 上手指南</a></li><li><a href="https://juejin.cn/post/7064906701941506061" target="_blank" rel="noopener noreferrer">GitLab CI 从入门到实践</a></li><li><a href="https://www.youtube.com/watch?v=fqMOX6JJhGo" target="_blank" rel="noopener noreferrer">Docker Tutorial for Beginners - A Full DevOps Course on How to Run Applications in Containers</a></li><li>⭐️ <a href="https://docs.docker.com/develop/develop-images/dockerfile_best-practices/" target="_blank" rel="noopener noreferrer">Best practices for writing Dockerfiles</a></li><li>⭐️ <a href="https://docs.docker.com/engine/reference/builder/" target="_blank" rel="noopener noreferrer">Dockerfile reference</a></li><li><a href="https://juejin.cn/post/6844903793348329486" target="_blank" rel="noopener noreferrer">如何使用 docker 部署前端应用</a></li><li><a href="https://shanyue.tech/op/docker.html" target="_blank" rel="noopener noreferrer">docker 简易入门 - shanyue</a></li><li><a href="https://mp.weixin.qq.com/s/4aFJ7t37IwEMyq-u09Wf1g" target="_blank" rel="noopener noreferrer">小鲸鱼的前世今生--Docker</a></li><li><a href="https://juejin.cn/book/6844733746462064654/section/6844733746504007693" target="_blank" rel="noopener noreferrer">开发者必备的 Docker 实践指南</a></li><li><a href="https://mp.weixin.qq.com/s/U-zK6JEMpmK2Il68-ijcaw" target="_blank" rel="noopener noreferrer">谁说前端不需要学习docker？</a></li><li><a href="https://juejin.cn/post/7028222480326066213" target="_blank" rel="noopener noreferrer">使用Docker Compose、Nginx、SSH和Github Actions实现前端自动化部署测试机</a></li><li><a href="https://juejin.cn/post/6951684431597797389" target="_blank" rel="noopener noreferrer">前端开发者应该知道的 Centos/Docker/Nginx/Node/Jenkins 操作(🍡 长文)</a></li><li><a href="https://juejin.cn/post/7049920990351982628" target="_blank" rel="noopener noreferrer">保姆级指南：jekins+docker构建部署react项目实战</a></li><li><a href="https://juejin.cn/post/6993951401952935972" target="_blank" rel="noopener noreferrer">你的第一个 Docker + React + Express 全栈应用</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="服务端相关">服务端相关<a href="#服务端相关" class="hash-link" aria-label="Direct link to 服务端相关" title="Direct link to 服务端相关">​</a></h2><ul><li>推荐算法<ul><li><a href="https://mp.weixin.qq.com/s/GetU-ULhfvY8ri47Ht28GQ" target="_blank" rel="noopener noreferrer">图文解读：推荐算法架构——精排！</a></li><li><a href="https://mp.weixin.qq.com/s/wXb5uQJBCzSEq6IITP7VCQ" target="_blank" rel="noopener noreferrer">超强指南！推荐算法架构——重排</a></li><li><a href="https://mp.weixin.qq.com/s/1wOnG4dtNSI-x2x15-AjTQ" target="_blank" rel="noopener noreferrer">详细解读！推荐算法架构——召回</a></li><li><a href="https://mp.weixin.qq.com/s/YsK_8yyBNL5z269qT5CrIw" target="_blank" rel="noopener noreferrer">图文并茂！推荐算法架构——粗排</a></li><li><a href="https://juejin.cn/post/7153878508035391502" target="_blank" rel="noopener noreferrer">详解闲鱼推荐系统（长文收藏）</a></li></ul></li><li>Redis 相关<ul><li>⭐️ ⭐️ <a href="https://zhuanlan.zhihu.com/p/469102289" target="_blank" rel="noopener noreferrer">Redis详细入门教程</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/fnOvw4JfwszNGVBMW0N2hw" target="_blank" rel="noopener noreferrer">Redis 只会用缓存？16种妙用让同事直呼牛X</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/ThVtw8TVuhxIyYxJy6sOWw" target="_blank" rel="noopener noreferrer">深入浅出带你走进Redis！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/U87wrGsx0Eop3CbF9mlTwQ" target="_blank" rel="noopener noreferrer">万字图文讲透数据库缓存一致性问题</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/vwx99ER-9qiH9nfwtFW1zQ" target="_blank" rel="noopener noreferrer">Redis 事务遇上 @Transactional 有大坑！！记一次 Redis 生产事故</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/n6IEF2OinYN3slJXqc_xgw" target="_blank" rel="noopener noreferrer">Redis 实现分布式锁的 7 种方案</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/WzAVtmFmEMhY-MiNEgQ0fw" target="_blank" rel="noopener noreferrer">如何保障 MySQL 和 Redis 的数据一致性</a></li><li>🌛 <a href="https://juejin.cn/post/7147602740405862407" target="_blank" rel="noopener noreferrer">Redis 持久化策略浅析</a></li><li>🌛 <a href="https://mp.weixin.qq.com/s/dCZm7e0aSEirhEqiCBvAyQ" target="_blank" rel="noopener noreferrer">图文结合！Redis延迟队列golang高效实践</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/frOhO8rj2Xvdix6tnjTOrw" target="_blank" rel="noopener noreferrer">用 Redis 都能实现哪些功能？这2万字+20张图给分析全了</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/mO819q_r9qLVuRBE8cjx1Q" target="_blank" rel="noopener noreferrer">如何保证数据库和缓存双写一致性</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Cq-CF1BC4PWwGnlRp4HrnQ" target="_blank" rel="noopener noreferrer">为了拿捏 Redis 数据结构，我画了 40 张图（完整版）</a></li><li>⭐️ <a href="https://juejin.cn/post/7124572920403197965" target="_blank" rel="noopener noreferrer">Redis 5 种基本数据结构（String、List、Hash、Set、Sorted Set）详解 | JavaGuide</a></li></ul></li><li>Redis 实现分布式锁<ul><li><a href="https://mp.weixin.qq.com/s/2Rwy19C0eUshTWc_JfTPig" target="_blank" rel="noopener noreferrer">Redis分布式锁的10个坑</a></li><li><a href="https://mp.weixin.qq.com/s/p2rlkCRRj7h7-aojTidQbg" target="_blank" rel="noopener noreferrer">深入理解 go singleflight</a></li><li><a href="https://mp.weixin.qq.com/s/ESdfA5sJa6bmL-HvuWpoJA" target="_blank" rel="noopener noreferrer">面试官：如何用 Redis 实现分布式锁</a></li><li><a href="https://mp.weixin.qq.com/s/RS1kKvF_Ly576GV52bHQPg" target="_blank" rel="noopener noreferrer">如何用Redis实现分布式锁</a></li><li><a href="https://mp.weixin.qq.com/s/lrSQBK-Kihkj6994kQFpUQ" target="_blank" rel="noopener noreferrer">Go：分布式锁实现原理与最佳实践</a></li></ul></li><li>Web Server<ul><li>⭐️ <a href="https://juejin.cn/post/7085519712901136392" target="_blank" rel="noopener noreferrer">超越 Nginx！号称下一代 Web 服务器，用起来够优雅！</a></li></ul></li><li>IO多路复用<ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/j1KjR5bRQV6oGrU5tsyHgg" target="_blank" rel="noopener noreferrer">从Linux零拷贝深入了解Linux-I/O</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/5xj42JPKG8o5T7hjXIKywg" target="_blank" rel="noopener noreferrer">深入学习IO多路复用 select/poll/epoll 实现原理</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/bb7C6VNbq7REP9u8PsreSg" target="_blank" rel="noopener noreferrer">看一遍就理解：IO模型详解</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/qaUZ3AMA_dJkx2ZpyhJN2g" target="_blank" rel="noopener noreferrer">面试必备：零拷贝详解</a></li></ul></li><li>系统设计<ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/FJi3ko9wjTBNWS79RVQf5A" target="_blank" rel="noopener noreferrer">技术总监分享的系统设计技巧，万能通用，稳的一批！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/PPA8Iw6K2M2xVnGE-Tf6zw" target="_blank" rel="noopener noreferrer">高并发系统设计的15个锦囊</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/5Jj-IClPhInXz7xsfUZEnQ" target="_blank" rel="noopener noreferrer">支付系统就该这么设计（万能通用），稳的一批！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/qhsVURhXm0Ot-jWq0khfEg" target="_blank" rel="noopener noreferrer">蚂蚁金服一面：十道经典面试题解析</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Ebh5iVsx0iExb5Wxq3tQFQ" target="_blank" rel="noopener noreferrer">公司新来一个同事，把优惠券系统设计的炉火纯青！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/8GXe6sKPKk7Flbd_kNAp2Q" target="_blank" rel="noopener noreferrer">网关系统就该这么设计（万能通用），稳的一批！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/crzfBEGn78nUZ5H3MF8UZw" target="_blank" rel="noopener noreferrer">高并发下，幂等性如何保证</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/n6IEF2OinYN3slJXqc_xgw" target="_blank" rel="noopener noreferrer">Redis 实现分布式锁的 7 种方案</a></li><li><a href="https://mp.weixin.qq.com/s/Z0xVHgw-ZzZV-jOOOSsMUw" target="_blank" rel="noopener noreferrer">如何设计一个短链服务</a></li></ul></li><li>消息队列<ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/mNpXpSVVVBuI59LI6vVvQA" target="_blank" rel="noopener noreferrer">面渣逆袭：RocketMQ二十三问</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/GeXtCJgo42u92FSS5V6oMQ" target="_blank" rel="noopener noreferrer">刨根问底 Kafka，核心知识点大贯通</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/J0zKPTNoJgiFvNT4M9BVcg" target="_blank" rel="noopener noreferrer">消息队列原理和选型：Kafka、RocketMQ 、RabbitMQ 和 ActiveMQ</a></li><li><a href="https://mp.weixin.qq.com/s/i_bwyEb8QqfVLxY-R9odag" target="_blank" rel="noopener noreferrer">你管这破玩意儿叫 MQ</a></li></ul></li><li>Elasticsearch 相关<ul><li>⭐️ <a href="https://juejin.cn/post/7155662252584992805" target="_blank" rel="noopener noreferrer">MyBatis-Plus同款Elasticsearch ORM框架，用起来够优雅！</a></li><li>⭐️ <a href="https://juejin.cn/post/6844904117580595214" target="_blank" rel="noopener noreferrer">Elasticsearch快速入门，掌握这些刚刚好！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/GG_zrQlaiP2nfPOxzx_j9w" target="_blank" rel="noopener noreferrer">Elasticsearch 基础入门详文</a></li></ul></li><li>大数据相关<ul><li><a href="https://mp.weixin.qq.com/s/vua2g0_t1Y8KW4cNHSQdNw" target="_blank" rel="noopener noreferrer">一文了解-云原生大数据知识地图</a></li><li><a href="https://juejin.cn/post/7149487706991493156" target="_blank" rel="noopener noreferrer">【云原生】Hive on k8s 环境部署</a></li><li><a href="https://juejin.cn/post/7087484692718420005" target="_blank" rel="noopener noreferrer">大数据Hadoop之——数据仓库Hive</a></li><li><a href="https://juejin.cn/post/7136214451678052389" target="_blank" rel="noopener noreferrer">【云原生】Kubernetes（k8s）最完整版环境部署+master高可用实现</a></li><li><a href="https://juejin.cn/post/7141215211586863140" target="_blank" rel="noopener noreferrer">Flink 流批一体在字节跳动的探索与实践</a></li><li><a href="https://mp.weixin.qq.com/s/G66BCDUMzYE30p250JO0hg" target="_blank" rel="noopener noreferrer">大数据架构系列：如何理解湖仓一体</a></li><li><a href="https://mp.weixin.qq.com/s/yQavfvBayYbMEc7c9ObMxg" target="_blank" rel="noopener noreferrer">23张图，带你入门推荐系统</a></li><li><a href="https://mp.weixin.qq.com/s/gAhoIwPoFDlKbBmWzrHu8w" target="_blank" rel="noopener noreferrer">一文看懂大数据生态圈完整知识体系（文末送书）</a></li></ul></li><li>云原生监控<ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/72UbwZTxo36eJVqGq8HBgw" target="_blank" rel="noopener noreferrer">自从项目上了SkyWalking，睡觉真香！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/D1JoTzdQnzUgX_yqT3N1BQ" target="_blank" rel="noopener noreferrer">自从线上项目用了这个监控系统，睡觉真香！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/bSw_QP4-xMKnBTmqAjkUGA" target="_blank" rel="noopener noreferrer">还在服务器上捞日志？快搭建一个ELK日志系统吧，真心强大！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/GfJqTG9XYx58eh5kImyeWg" target="_blank" rel="noopener noreferrer">主流监控系统技术选型，yyds！</a></li></ul></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/hJHMlbQpANwMjx9BetwkUg" target="_blank" rel="noopener noreferrer">一致性哈希算法解决的问题</a></li><li>⭐️ <a href="https://zhuanlan.zhihu.com/p/482549860" target="_blank" rel="noopener noreferrer">一致性Hash算法原理总结</a></li><li>⭐️ ⭐️ <a href="https://mp.weixin.qq.com/s/AGaxg4ymPvSnpt3dZuO9SA" target="_blank" rel="noopener noreferrer">100+篇原创！1900+转载！大家一起加油！</a></li><li><a href="https://mp.weixin.qq.com/s/l3l9d9sLiWoUM381E9o-3Q" target="_blank" rel="noopener noreferrer">解决了 Redis 大 key 问题，同事们都说牛皮！</a></li><li><a href="https://mp.weixin.qq.com/s/l_YdpyHht5Ayvrc7LFZNIA" target="_blank" rel="noopener noreferrer">图解|Linux内存背后的那些神秘往事</a></li><li><a href="https://juejin.cn/post/7064952956201730062" target="_blank" rel="noopener noreferrer">图解|什么是内容分发网络(cdn)</a></li><li><a href="https://juejin.cn/post/7070683049049980941" target="_blank" rel="noopener noreferrer">一键部署 K8S 环境，10分钟玩转，这款开源神器实在太香了！</a></li><li><a href="https://mp.weixin.qq.com/s/KIcn2TAwY58JGoWiz82Q2g" target="_blank" rel="noopener noreferrer">颜值爆表！Redis 官方可视化工具来啦，功能真心强大！</a></li><li><a href="https://juejin.cn/post/6844904017286561799" target="_blank" rel="noopener noreferrer">Nginx的这些妙用，你肯定有不知道的！</a></li><li><a href="https://juejin.cn/post/7064378702779891749" target="_blank" rel="noopener noreferrer">前端到底用nginx来做啥</a></li><li><a href="https://juejin.cn/post/7048952689601806366" target="_blank" rel="noopener noreferrer">一份简单够用的 Nginx Location 配置讲解</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="前端性能优化">前端性能优化<a href="#前端性能优化" class="hash-link" aria-label="Direct link to 前端性能优化" title="Direct link to 前端性能优化">​</a></h2><ul><li>⭐️ <a href="https://juejin.cn/post/6981673766178783262" target="_blank" rel="noopener noreferrer">写给中高级前端关于性能优化的9大策略和6大指标 | 网易四年实践</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Au_NNeamEoFEtlNvvVjpLw" target="_blank" rel="noopener noreferrer">前端监控系列3 ｜ 如何衡量一个站点的性能好坏</a></li><li>⭐️ <a href="https://juejin.cn/post/7052918009555320839" target="_blank" rel="noopener noreferrer">最全的前端性能定位总结</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/wJxj5QbOHwH9cKmqU5eSQw" target="_blank" rel="noopener noreferrer">Web页面全链路性能优化指南</a></li><li>⭐️ <a href="https://juejin.cn/post/7016900744695513125" target="_blank" rel="noopener noreferrer">字节跳动是如何落地微前端的</a></li><li>⭐️ <a href="https://juejin.cn/post/7048260643589193765" target="_blank" rel="noopener noreferrer">2022 年的 CSS</a></li><li>⭐️ <a href="https://juejin.cn/post/7054931603323093022" target="_blank" rel="noopener noreferrer">如何编写防御式的 CSS</a></li><li>⭐️ <a href="https://zhuanlan.zhihu.com/p/396010993" target="_blank" rel="noopener noreferrer">前端 Code Review 不完全指北(万字长文，50+case)</a></li><li>🌛 <a href="https://juejin.cn/post/7020212914020302856" target="_blank" rel="noopener noreferrer">写在 2021 的前端性能优化指南</a></li><li><a href="https://juejin.cn/post/7000728875676205086" target="_blank" rel="noopener noreferrer">深入浅出 Performance 工具 &amp; API</a></li><li><a href="https://juejin.cn/post/6904582930174705677" target="_blank" rel="noopener noreferrer">使用 Performance 看看浏览器在做什么</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="前端组件库实战">前端组件库实战<a href="#前端组件库实战" class="hash-link" aria-label="Direct link to 前端组件库实战" title="Direct link to 前端组件库实战">​</a></h2><ul><li>⭐️ <a href="https://juejin.cn/post/7120893568553582622" target="_blank" rel="noopener noreferrer">快上车！搭建一个属于自己的组件库！</a></li><li>⭐️ <a href="https://juejin.cn/post/7117886038126624805" target="_blank" rel="noopener noreferrer">使用Vite和TypeScript带你从零打造一个属于自己的Vue3组件库</a></li><li>⭐️ <a href="https://juejin.cn/post/7069772395610898462" target="_blank" rel="noopener noreferrer">从arco-design的collapse组件分析如何吸收开源项目的知识</a></li><li>⭐️ <a href="https://juejin.cn/post/6844904197863964685" target="_blank" rel="noopener noreferrer">从 Element UI 源码的构建流程来看前端 UI 库设计</a></li><li>⭐️ <a href="https://juejin.cn/post/7021528826798669854" target="_blank" rel="noopener noreferrer">尤大都推荐的组件库是如何开发出来的？</a></li><li><a href="https://juejin.cn/post/6983854006124675108" target="_blank" rel="noopener noreferrer">每个前端都值得拥有自己的组件库，就像每个夏天都拥有西瓜🍉</a></li><li><a href="https://juejin.cn/post/6930879590554402830" target="_blank" rel="noopener noreferrer">Vue3组件库工程化实战 --Element3</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="nodejs-系列">Node.js 系列<a href="#nodejs-系列" class="hash-link" aria-label="Direct link to Node.js 系列" title="Direct link to Node.js 系列">​</a></h2><ul><li>⭐️ ⭐️ <a href="https://github.com/koala-coding/goodBlog" target="_blank" rel="noopener noreferrer">【程序员成长指北】node 必知必会系列</a></li><li>⭐️ ⭐️ <a href="https://mp.weixin.qq.com/s/B051n14JbNHqJtQb68HBFA" target="_blank" rel="noopener noreferrer">Node.js 概述：架构、API、事件循环、并发</a></li><li>⭐️ ⭐️ <a href="https://mp.weixin.qq.com/s/sSfj4BOjHNyzdjGc90yU8g" target="_blank" rel="noopener noreferrer">一篇文章构建你的 NodeJS 知识体系【上】</a></li><li>⭐️ ⭐️ <a href="https://mp.weixin.qq.com/s/9SJL2UttCedNjF6CKyk3wg" target="_blank" rel="noopener noreferrer">一篇文章构建你的 NodeJS 知识体系【下】</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6887961766170066951" target="_blank" rel="noopener noreferrer">大厂是如何用DevCloud流水线实现自动化部署Web应用的？</a></li><li>⭐️ ⭐️ <a href="https://juejin.cn/post/6902659492161421325" target="_blank" rel="noopener noreferrer">手把手教你使用Rollup打包 📦 并发布自己的工具库 🔧</a></li><li>🌛 <a href="https://zhuanlan.zhihu.com/p/461945753" target="_blank" rel="noopener noreferrer">Node 案发现场揭秘 —— 未定义 “window” 对象引发的 SSR 内存泄露</a></li><li>🌛 <a href="https://cnodejs.org/topic/58eb5d378cda07442731569f" target="_blank" rel="noopener noreferrer">轻松排查线上Node内存泄漏问题</a></li><li>⭐️ <a href="https://zhuanlan.zhihu.com/p/36728655" target="_blank" rel="noopener noreferrer">Node.js 流（stream）：你需要知道的一切</a></li><li>🌛 <a href="https://mp.weixin.qq.com/s/1DIDUvGoQcckRq757R9Ohw" target="_blank" rel="noopener noreferrer">最全面的 Node.js 资源汇总推荐</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/yKm_U9Veh_1twIoXzM8Prw" target="_blank" rel="noopener noreferrer">Nest.js进阶系列四：Node.js中使用Redis原来这么简单！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/TmCtsbhjexZNCdvUSXdNCw" target="_blank" rel="noopener noreferrer">Redis学习-入门篇</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/2CBGgtja04NnOerpKfk0Ug" target="_blank" rel="noopener noreferrer">Node.js 安全最佳实践</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/PhuFfNAhvXAqW4eSbUqpKQ" target="_blank" rel="noopener noreferrer">2022年值得使用的 Node.js 框架</a></li><li>🌛 <a href="https://juejin.cn/post/7095354780079357966" target="_blank" rel="noopener noreferrer">NodeJs进阶开发、性能优化指南</a></li><li>⭐️ <a href="https://zhuanlan.zhihu.com/p/502951532" target="_blank" rel="noopener noreferrer">Node.js 18 新特性解读</a></li><li>🌛 <a href="https://zhuanlan.zhihu.com/p/415361629" target="_blank" rel="noopener noreferrer">那些你应该说再见的 npm 祖传老库</a></li><li>🌛 <a href="https://github.com/unjs" target="_blank" rel="noopener noreferrer">unjs: Unified JavaScript Tools</a></li><li>🌛 <a href="https://github.com/vercel/pkg" target="_blank" rel="noopener noreferrer">pkg - 把 Node.js 项目打包为可执行文件</a></li><li>⭐️ <a href="https://github.com/oclif/oclif" target="_blank" rel="noopener noreferrer">Oclif v2.5：Heroku 开源的 CLI 框架</a></li><li>🌛 <a href="https://juejin.cn/post/6961790494514872333" target="_blank" rel="noopener noreferrer">JavaScript Debugger 原理揭秘</a></li><li>🌛 <a href="https://mp.weixin.qq.com/s/xCoTeyJDifi4Ymk0VsI2Ig" target="_blank" rel="noopener noreferrer">浅谈 Node.js 热更新</a></li><li>⭐️ <a href="https://juejin.cn/post/7044344538969669663" target="_blank" rel="noopener noreferrer">NodeJS加解密之Crypto</a></li><li>🌛 <a href="https://github.com/google/zx" target="_blank" rel="noopener noreferrer">zx - 谷歌开发的命令行脚本工具</a></li><li>🌛 <a href="https://github.com/node-fetch/node-fetch" target="_blank" rel="noopener noreferrer">node-fetch - node 环境下进行网络请求</a></li><li>⭐️ <a href="https://juejin.cn/post/6971770846872338439" target="_blank" rel="noopener noreferrer">浅析 NodeJS 多进程和集群</a></li><li>⭐️ <a href="https://github.com/privatenumber/tasuku" target="_blank" rel="noopener noreferrer">Tasuku - 面向 Node 的最小任务运行器</a></li><li>🌛 <a href="https://juejin.cn/post/7008504029277847565" target="_blank" rel="noopener noreferrer">Node.js的底层原理</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Gcx6E4cYo6WPB8PLI72NWg" target="_blank" rel="noopener noreferrer">认真写了个快速创建 Node 服务的CLI，看看对小伙伴们有帮忙吗？</a><ul><li>项目地址：<a href="https://github.com/koala-coding/create-bff-service-cli" target="_blank" rel="noopener noreferrer">https://github.com/koala-coding/create-bff-service-cli</a></li></ul></li></ul><div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">开源项目</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">React 生态</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">浏览器环境</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">实用工具</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">CLI 工具</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><ul><li>⭐️ <a href="https://github.com/antfu/taze" target="_blank" rel="noopener noreferrer">taze - 更新依赖版本的 CLI 工具</a></li><li>⭐️ <a href="https://github.com/egoist/haya" target="_blank" rel="noopener noreferrer">haya - Vite 的替代方案，提供基于 esbuild 的 devServer 和 bundler</a></li><li>⭐️ <a href="https://github.com/unjs/unbuild" target="_blank" rel="noopener noreferrer">unbuild - 第三方库打包工具</a></li><li>⭐️ <a href="https://github.com/egoist/tsup" target="_blank" rel="noopener noreferrer">tsup - 零配置的 TS 第三方库打包工具</a></li><li>⭐️ <a href="https://github.com/Rich-Harris/degit" target="_blank" rel="noopener noreferrer">degit - 简单的项目脚手架</a></li><li>⭐️ <a href="https://github.com/streamich/react-use" target="_blank" rel="noopener noreferrer">react-use - 一个 React Hooks 库</a></li><li><a href="https://github.com/tannerlinsley/react-query" target="_blank" rel="noopener noreferrer">react-query - 用于获取数据、缓存、异步更新状态的 hook</a></li><li><a href="https://github.com/luin/ioredis" target="_blank" rel="noopener noreferrer">ioredis - 专注于性能的全功能 Redis 客户端</a></li><li><a href="https://github.com/prisma/prisma" target="_blank" rel="noopener noreferrer">prisma - 下一代 Nodejs ORM 工具，支持各种数据库</a></li><li><a href="https://github.com/withastro/astro" target="_blank" rel="noopener noreferrer">astro - 静态站点构建工具</a></li><li><a href="https://github.com/pmndrs/zustand" target="_blank" rel="noopener noreferrer">zustand - 小型、快速可扩展的状态管理解决方案</a></li><li><a href="https://github.com/tauri-apps/tauri" target="_blank" rel="noopener noreferrer">tauri - 将前端项目打包为桌面应用，用于替代 electron</a></li><li><a href="https://github.com/trpc/trpc" target="_blank" rel="noopener noreferrer">tRPC - 方便快速的生成端对端类型安全的 API 定义</a></li><li><a href="https://github.com/MaxLeiter/Drift" target="_blank" rel="noopener noreferrer">Drift - 一个可以自己部署的代码片段服务，基于 Next.js 13 构建</a></li></ul></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><ul><li>⭐️ <a href="https://github.com/bytedance/bytemd" target="_blank" rel="noopener noreferrer">bytemd - 字节出品的 markdown 编辑器</a></li><li>⭐️ <a href="https://github.com/bytedance/guide" target="_blank" rel="noopener noreferrer">guide - 字节出品的 React 新手引导组件</a></li><li>⭐️ <a href="https://github.com/rpearce/react-medium-image-zoom" target="_blank" rel="noopener noreferrer">react-medium-image-zoom - 受 Medium.com 启发的图片预览组件</a></li><li>⭐️ <a href="https://github.com/pacocoursey/cmdk" target="_blank" rel="noopener noreferrer">cmdk - 一个基于 React 的快速、可组合、无风格的命令面板</a></li><li>⭐️ <a href="https://github.com/eBay/nice-modal-react" target="_blank" rel="noopener noreferrer">nice-modal-react：来自 eBay 的模态框状态管理</a></li></ul></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><ul><li>⭐️ <a href="https://github.com/date-fns/date-fns" target="_blank" rel="noopener noreferrer">date-fns - 现代化的 JavaScript 日期类库</a></li><li>⭐️ <a href="https://github.com/ai/nanoid" target="_blank" rel="noopener noreferrer">nanoid - 用于替代 uuid 的随机 id 生成库</a></li><li><code>dayjs</code>：与 <code>moment</code> 的 API 设计保持一样，但体积仅有 2KB；</li><li><code>qs</code>：解析 URL query 参数的库；</li><li><code>js-cookie</code>：简单、轻量的处理 cookie 的库；</li><li><code>flv.js</code>：bilibili 开源的 HTML5 flash 播放器，使浏览器在不借助 flash 插件的情况下可以播放 flv；</li><li><code>vConsole</code>：一个轻量、可拓展、针对手机网页的前端开发者调试面板；</li><li><code>animate.css</code>：一个跨浏览器的 css3 动画库，内置了很多典型的 css3 动画，兼容性好，使用方便；</li><li><code>lodash</code>：一个一致性、模块化、高性能的 JavaScript 实用工具库；</li></ul></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><ul><li>⭐️ <a href="https://github.com/paulmillr/chokidar" target="_blank" rel="noopener noreferrer">chokidar - 跨平台监听文件变化</a></li><li>⭐️ <a href="https://github.com/jprichardson/node-fs-extra" target="_blank" rel="noopener noreferrer">fs-extra - Node 原生 fs 模块的扩展</a></li><li><code>yargs</code>：通过使用 Node.js 构建功能全面的命令行应用</li><li><code>Ajv</code>：一个适用于 Node.js 和浏览器的最快 JSON 验证器</li><li><code>yallist</code>：一个双向链表的实现</li><li><code>rimraf</code>：Node.js 的 rm -rf 实用程序</li><li><code>consola</code>：Nuxt.js 出品的终端日志工具</li><li><code>webpackbar</code>：Nuxt.js 出品的 webpack 编译进度条</li><li><code>pkg</code>: 把 Node.js 项目打包为可执行文件</li><li><code>concurrently</code>：更优雅地并发执行命令</li><li><code>better-logging</code>：Node 默认日志记录方法的替代品</li></ul></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><ul><li><code>chalk/kolorist</code></li><li><code>inquirer/prompts</code></li><li><code>ora</code></li><li><code>semver</code></li><li><code>pkg-install</code></li><li><code>ncp</code>：跨平台递归拷贝文件</li><li><code>commander/yargs</code></li><li><code>execa</code>（个人觉得 Node 原生 <code>child_process</code> 的 <code>exec</code> 就够用了）</li><li><code>minimist</code></li><li><code>oclif</code>：Heroku 开源的 CLI 框架</li></ul></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="前端编译">前端编译<a href="#前端编译" class="hash-link" aria-label="Direct link to 前端编译" title="Direct link to 前端编译">​</a></h2><ul><li><a href="https://mp.weixin.qq.com/s/JMl8LOsNYlttxO-KyVK-Vw" target="_blank" rel="noopener noreferrer">【第2597期】如何用JavaScript实现一门编程语言 - AST</a></li><li><a href="https://juejin.cn/post/7041021350114230285" target="_blank" rel="noopener noreferrer">V8 编译浅谈</a></li><li>⭐️ <a href="https://juejin.cn/post/7057354419888717855" target="_blank" rel="noopener noreferrer">编译技术在前端的实践（二）—— Antlr 及其应用</a></li><li>⭐️ <a href="https://juejin.cn/post/6989509925844041742" target="_blank" rel="noopener noreferrer">编译技术在前端的实践（一）—— 编译原理基础</a></li><li>⭐️ <a href="https://juejin.cn/book/6946117847848321055" target="_blank" rel="noopener noreferrer">Babel 插件通关秘籍</a></li><li>🌛 <a href="https://www.zoo.team/article/the-process-of-executing-js-in-v8" target="_blank" rel="noopener noreferrer">v8 执行 js 的过程</a></li><li>🌛 <a href="https://laocuicode.cn/daydream/2022/04/01/202241-%E7%A1%AC%E6%A0%B8%E5%86%B7%E7%9F%A5%E8%AF%86%EF%BC%9AWebAssembly/" target="_blank" rel="noopener noreferrer">硬核冷知识：V8与WebAssembly不得不说的秘密</a></li><li><a href="https://juejin.cn/post/7018563244679757855" target="_blank" rel="noopener noreferrer">import 方式随意互转，感受 babel 插件的威力</a></li><li><a href="https://mp.weixin.qq.com/s/pNossFUtJrDHshXbWLb4vA" target="_blank" rel="noopener noreferrer">从零到一，我们来一起造个 JS 的编译器</a></li><li><a href="https://juejin.cn/post/7047329886502912030" target="_blank" rel="noopener noreferrer">浅析TypeScript Compiler 原理</a></li><li>⭐️ <a href="https://juejin.cn/post/6962861837800964133" target="_blank" rel="noopener noreferrer">《从 0 到 1 手写 babel》思路分享</a></li><li><a href="https://juejin.cn/post/6953963506693570573" target="_blank" rel="noopener noreferrer">前端也要懂编译：AST 从入门到上手指南</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="网络相关">网络相关<a href="#网络相关" class="hash-link" aria-label="Direct link to 网络相关" title="Direct link to 网络相关">​</a></h2><ul><li><a href="https://www.smashingmagazine.com/2021/08/http3-core-concepts-part1/" target="_blank" rel="noopener noreferrer">HTTP/3 From A To Z: Core Concepts</a></li><li><a href="https://juejin.cn/post/7155280646112280613" target="_blank" rel="noopener noreferrer">502问题怎么排查</a></li><li><a href="https://juejin.cn/post/7153255870447484936" target="_blank" rel="noopener noreferrer">刚插上网线，电脑怎么知道自己的IP是什么</a></li><li><a href="https://juejin.cn/post/7147243567075819557" target="_blank" rel="noopener noreferrer">动图图解 | UDP就一定比TCP快吗</a></li><li><a href="https://juejin.cn/post/7126710506936598558" target="_blank" rel="noopener noreferrer">用了TCP协议，就一定不会丢包吗</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/nS1bMy2TejmGwEfCHPXy5A" target="_blank" rel="noopener noreferrer">HTTPS 就一定安全？我不信</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/fb2uUWz5ZjPEfYv_l6e4Zg" target="_blank" rel="noopener noreferrer">能ping通，TCP就一定能连通吗</a></li><li><a href="https://mp.weixin.qq.com/s/RJp9s_shNckkHBqHsJThuA" target="_blank" rel="noopener noreferrer">Linux 是如何收发网络包的</a></li><li><a href="https://mp.weixin.qq.com/s/7P_1VkBeoArKuuEqGcR9ig" target="_blank" rel="noopener noreferrer">字节三面，答的不满意</a></li><li><a href="https://mp.weixin.qq.com/s/8CPWh_Ly61m8rkHvPT5n2g" target="_blank" rel="noopener noreferrer">体验 http3: 基于 nginx quic 分支</a></li><li><a href="https://mp.weixin.qq.com/s/nRHlwYsr0MaadmaFWEIblQ" target="_blank" rel="noopener noreferrer">HTTP/3发布了，我们来谈谈HTTP/3</a></li><li><a href="https://mp.weixin.qq.com/s/qmnfmUCdekEt1xG0hp_4MQ" target="_blank" rel="noopener noreferrer">既然有 HTTP 协议，为什么还要有 RPC</a></li><li><a href="https://mp.weixin.qq.com/s/3fMZN_LidCi5fiD16nNWWA" target="_blank" rel="noopener noreferrer">字节一面：TCP 和 UDP 可以使用同一个端口吗</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/hVh5PIVaOeLyErZDPXx6mg" target="_blank" rel="noopener noreferrer">面试必备！TCP协议经典十五连问</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/hX75YxVOMtsnB6Sm_yjm0g" target="_blank" rel="noopener noreferrer">字节一面：如何用 UDP 实现可靠传输</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/toQUgqJHeUbFZMtxfzFCxw" target="_blank" rel="noopener noreferrer">TCP 重传、滑动窗口、流量控制、拥塞控好难？看完图解就不愁了</a></li><li>⭐️ <a href="https://juejin.cn/post/6844904070889603085" target="_blank" rel="noopener noreferrer">(建议收藏)TCP协议灵魂之问，巩固你的网路底层基础</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/9kHoRk6QIYOFUR_PCmHY6g" target="_blank" rel="noopener noreferrer">TCP 就没什么缺陷吗？</a></li><li>推荐看看 QUIC 101 视频以及 <a href="https://courses.cs.washington.edu/courses/cse550/20au/papers/CSE550.quic.pdf" target="_blank" rel="noopener noreferrer">The QUIC transport protocol: design and Internet-scale deployment</a> 论文</li><li>⭐️ <a href="https://segmentfault.com/a/1190000024523772" target="_blank" rel="noopener noreferrer">一文彻底搞懂加密、数字签名和数字证书！</a></li><li>⭐️ <a href="https://juejin.cn/post/6944420222757503006" target="_blank" rel="noopener noreferrer">一个Response Header引发的血案(包含CDN的相关概念)</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="操作系统">操作系统<a href="#操作系统" class="hash-link" aria-label="Direct link to 操作系统" title="Direct link to 操作系统">​</a></h2><ul><li>⭐️ ⭐️ <a href="https://github.com/jlevy/the-art-of-command-line" target="_blank" rel="noopener noreferrer">The Art of Command Line</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/xRnG204OW67mKMnbfFHBoA" target="_blank" rel="noopener noreferrer">操作系统常用知识总结！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/94F4v1E9sB82lOr2DeSK0A" target="_blank" rel="noopener noreferrer">Arch Linux 完全手册（上）</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/ev8hnv-coGLobrbezMK1og" target="_blank" rel="noopener noreferrer">Arch Linux 完全手册（下）</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/ZralWEfG2WJfZ-G-x9biow" target="_blank" rel="noopener noreferrer">看完这篇你一定能掌握Linux</a></li><li>⭐️ <a href="https://juejin.cn/post/6938385978004340744" target="_blank" rel="noopener noreferrer">2万字系统总结，带你实现 Linux 命令自由</a></li><li><a href="https://juejin.cn/post/6917096816118857736" target="_blank" rel="noopener noreferrer">6w字搞定Linux基本操作，建议收藏</a></li><li><a href="https://juejin.cn/post/6844904080972709901" target="_blank" rel="noopener noreferrer">半小时搞会 CentOS 入门必备基础知识</a></li><li><a href="https://juejin.cn/post/6875323565479034894" target="_blank" rel="noopener noreferrer">手摸手带你 Docker 从入门到实践</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="机器学习">机器学习<a href="#机器学习" class="hash-link" aria-label="Direct link to 机器学习" title="Direct link to 机器学习">​</a></h2><ul><li>本地运行 Stable Diffusion 预训练模型<ul><li><a href="https://mp.weixin.qq.com/s/nDnQuZn3hVgrwqWVada2cw" target="_blank" rel="noopener noreferrer">AI数字绘画 stable-diffusion 保姆级教程</a></li><li><a href="https://lexica.art/?q=fc98f231-c95f-4a68-8727-899c73dbc486" target="_blank" rel="noopener noreferrer">https://lexica.art/?q=fc98f231-c95f-4a68-8727-899c73dbc486</a></li><li><a href="https://huggingface.co/CompVis/stable-diffusion-v1-4" target="_blank" rel="noopener noreferrer">https://huggingface.co/CompVis/stable-diffusion-v1-4</a></li><li><a href="https://github.com/CompVis/stable-diffusion" target="_blank" rel="noopener noreferrer">https://github.com/CompVis/stable-diffusion</a></li><li><a href="https://huggingface.co/blog/stable_diffusion" target="_blank" rel="noopener noreferrer">https://huggingface.co/blog/stable_diffusion</a></li></ul></li><li><a href="https://juejin.cn/post/7146575333721341966" target="_blank" rel="noopener noreferrer">不会算法也能微调一个 NLP 预训练模型</a></li><li><a href="https://mp.weixin.qq.com/s/BcXl8YQVNQA6auilbxW0kQ" target="_blank" rel="noopener noreferrer">人工神经网络算法入门</a></li><li><a href="https://mp.weixin.qq.com/s/gaOzwCypQMFAJ4X50aUOcg" target="_blank" rel="noopener noreferrer">浅析神经网络 Neural Networks</a></li><li><a href="https://juejin.cn/post/7075518863814869005" target="_blank" rel="noopener noreferrer">前端工程师如何快速使用一个NLP模型</a></li><li>深入理解 Transformer：<ul><li><a href="https://www.bilibili.com/video/BV1P4411F77q" target="_blank" rel="noopener noreferrer">https://www.bilibili.com/video/BV1P4411F77q</a></li><li><a href="https://www.bilibili.com/video/BV1Mt411J734" target="_blank" rel="noopener noreferrer">https://www.bilibili.com/video/BV1Mt411J734</a></li></ul></li><li><a href="https://www.bilibili.com/video/BV1cD4y1D7uR" target="_blank" rel="noopener noreferrer">《深入理解计算机系统》- bilibili</a></li><li><a href="https://www.bilibili.com/video/BV1mb4y1d7K7" target="_blank" rel="noopener noreferrer">《计算机网络自顶向下方法》- bilibili</a><ul><li>这本书重点章节是第2、3、4、5、6章，其他章节可以跳过</li></ul></li><li>学习资源<ul><li><a href="https://github.com/ossu/computer-science" target="_blank" rel="noopener noreferrer">https://github.com/ossu/computer-science</a></li><li><a href="https://github.com/Snailclimb/JavaGuide" target="_blank" rel="noopener noreferrer">https://github.com/Snailclimb/JavaGuide</a></li><li><a href="https://github.com/QSCTech/zju-icicles" target="_blank" rel="noopener noreferrer">https://github.com/QSCTech/zju-icicles</a></li></ul></li><li><a href="https://www.bilibili.com/video/BV1Vt411z7wy" target="_blank" rel="noopener noreferrer">一天学会 MySQL 数据库</a></li><li><a href="https://www.bilibili.com/video/BV1FT4y1E74V" target="_blank" rel="noopener noreferrer">吴恩达《深度学习》</a></li><li><a href="https://www.bilibili.com/video/BV1qK4y1479r" target="_blank" rel="noopener noreferrer">推荐系统算法基础+综合项目实战</a><ul><li>再就是一些我认为很优秀的开源项目：</li><li><a href="https://github.com/zhongqiangwu960812/AI-RecommenderSystem" target="_blank" rel="noopener noreferrer">https://github.com/zhongqiangwu960812/AI-RecommenderSystem</a></li><li><a href="https://github.com/ZiyaoGeng/Recommender-System-with-TF2.0" target="_blank" rel="noopener noreferrer">https://github.com/ZiyaoGeng/Recommender-System-with-TF2.0</a></li></ul></li><li>参考：<a href="https://mp.weixin.qq.com/s/YbwQAPIEkihO7XzVvrlDCg" target="_blank" rel="noopener noreferrer">万字入门推荐系统！</a></li><li><a href="https://juejin.cn/post/7013674501116264484" target="_blank" rel="noopener noreferrer">说一说Web端侧AI</a></li><li><a href="https://juejin.cn/post/6964335363787620383" target="_blank" rel="noopener noreferrer">机器学习初探-线性回归</a></li><li><a href="https://juejin.cn/post/6951340421658181646" target="_blank" rel="noopener noreferrer">机器学习进阶 - 深入思考逻辑回归</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="java-相关">Java 相关<a href="#java-相关" class="hash-link" aria-label="Direct link to Java 相关" title="Direct link to Java 相关">​</a></h2><ul><li>⭐️ ⭐️ <a href="https://mp.weixin.qq.com/s/AGaxg4ymPvSnpt3dZuO9SA" target="_blank" rel="noopener noreferrer">100+篇原创！1900+转载！大家一起加油！</a></li><li>⭐️ ⭐️ <a href="https://mp.weixin.qq.com/s/1Xe16FaHWfihYjqMVWidQg" target="_blank" rel="noopener noreferrer">原创精选荟萃（2022.05.11）</a></li><li><a href="https://mp.weixin.qq.com/s/409QGKe5H7tCP1qpCiY_KA" target="_blank" rel="noopener noreferrer">两万字盘点设计模式！</a></li><li><a href="https://mp.weixin.qq.com/s/J0C9TJF7nVVi2cMiDBqepA" target="_blank" rel="noopener noreferrer">实战，实现幂等的8种方案！</a></li><li><a href="https://mp.weixin.qq.com/s/Jct2rnz_0ahozWNZYfZ4Qg" target="_blank" rel="noopener noreferrer">写优雅代码的45个小技巧</a></li><li><a href="https://mp.weixin.qq.com/s/PzZ31ju32-5epXpQeTZsNA" target="_blank" rel="noopener noreferrer">肝了一周总结的SpringBoot常用注解大全，看完就炉火纯青了！</a></li><li><a href="https://mp.weixin.qq.com/s/rSYOAuJeIXaonHvuR5O47Q" target="_blank" rel="noopener noreferrer">瞧瞧人家写的API接口代码，那叫一个优雅！</a></li><li><a href="https://mp.weixin.qq.com/s/P017RfO8TDL5LxGzBoTLSA" target="_blank" rel="noopener noreferrer">SpringBoot 实现 Excel 导入导出，性能爆表，用起来够优雅！</a></li><li><a href="https://mp.weixin.qq.com/s/SG9sNmMu9acB1xTODkG00Q" target="_blank" rel="noopener noreferrer">还在用HttpUtil？SpringBoot 3.0全新HTTP客户端工具来了，用起来够优雅！</a></li><li><a href="https://mp.weixin.qq.com/s/ezLN8AzVhBaeMdNMK-TS-g" target="_blank" rel="noopener noreferrer">妙用Java 8中的 Function接口，消灭if...else（非常新颖的写法）</a></li><li><a href="https://mp.weixin.qq.com/s/20LjD3_nJYvZrTNo4tqjvA" target="_blank" rel="noopener noreferrer">别再用 if 校验参数了，太Low！这才是专业的 SpringBoot 参数校验方式！</a></li><li><a href="https://mp.weixin.qq.com/s/bb7C6VNbq7REP9u8PsreSg" target="_blank" rel="noopener noreferrer">看一遍就理解：IO模型详解</a></li><li><a href="https://mp.weixin.qq.com/s/qaUZ3AMA_dJkx2ZpyhJN2g" target="_blank" rel="noopener noreferrer">面试必备：零拷贝详解</a></li><li><a href="https://mp.weixin.qq.com/s/DGP1frbIlirZ_C8Vd0OmEA" target="_blank" rel="noopener noreferrer">实战总结！18种接口优化方案的总结</a></li><li><a href="https://mp.weixin.qq.com/s/yyoaDbKsvhdZbAL8T2V-zg" target="_blank" rel="noopener noreferrer">忘了又看，看了又忘？保姆级教学，一口气教你玩转 3 种高频设计模式！</a></li><li><a href="https://mp.weixin.qq.com/s/FX2umO7XCCmj8Bke7uKDZw" target="_blank" rel="noopener noreferrer">11种常用的设计模式</a></li><li><a href="https://mp.weixin.qq.com/s/Va4eoL5xizJasnSUbvvccw" target="_blank" rel="noopener noreferrer">这些并发编程知识，一定要知道</a></li><li><a href="https://mp.weixin.qq.com/s/EVgd689xdOX732hdOxPqcw" target="_blank" rel="noopener noreferrer">这10种神级性能优化手段，你用过几个</a></li><li><a href="https://mp.weixin.qq.com/s/VStQWv_ehN8RFDxpoAnKmg" target="_blank" rel="noopener noreferrer">两万字！多线程硬核50问！</a></li><li><a href="https://mp.weixin.qq.com/s/X11OCZSEh2k5K6uYG768yQ" target="_blank" rel="noopener noreferrer">MyBatis这样用，同事直呼哇塞，堪称最佳实践！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/29xlEK2N_Wptl4TBMg1ZPQ" target="_blank" rel="noopener noreferrer">源码深度解析之 Spring IOC</a></li><li><a href="https://mp.weixin.qq.com/s/T1toQ7NeHQKqof9A0o-99g" target="_blank" rel="noopener noreferrer">76 张图，剖析 Spring AOP 源码，小白居然也能看懂，大神，请收下我的膝盖！</a></li><li><a href="https://mp.weixin.qq.com/s/n8iw_33Wwr9i0mWEXMG6-A" target="_blank" rel="noopener noreferrer">使用 lambda 实现超强的排序功能</a></li><li><a href="https://mp.weixin.qq.com/s/e_uJhaGj4HO1iTS_zCoCXw" target="_blank" rel="noopener noreferrer">万字长文，SpringSecurity实现权限系统设计</a></li><li><a href="https://mp.weixin.qq.com/s/J_11wYusexAjwa1cuckyfw" target="_blank" rel="noopener noreferrer">1.2w+字！Java IO 基础知识总结</a></li><li><a href="https://mp.weixin.qq.com/s/7js2uDZNv2Pb55ihKPc1xg" target="_blank" rel="noopener noreferrer">两万字！多线程硬核50问！</a></li><li><a href="https://mp.weixin.qq.com/s/djVu6SJjfYj4y_LNW-SKyw" target="_blank" rel="noopener noreferrer">源码深度解析，Spring 如何解决循环依赖</a></li><li><a href="https://mp.weixin.qq.com/s/hhjwiMx-ypEbxwHJ9rJoBw" target="_blank" rel="noopener noreferrer">麻了，代码改成多线程，竟有9大问题</a></li><li><a href="https://mp.weixin.qq.com/s/ioDYZjdSii3WUvL9xqc_Sg" target="_blank" rel="noopener noreferrer">别再乱打日志了，这份 Java 日志规范，应有尽有，建议收藏！</a></li><li><a href="https://mp.weixin.qq.com/s/zn4TDT4Vl_MobqNkW1m-jw" target="_blank" rel="noopener noreferrer">聊聊SpringBoot单元测试</a></li><li><a href="https://mp.weixin.qq.com/s/4Sxal7N-uZ8gvphC8XWo8A" target="_blank" rel="noopener noreferrer">总监又来了，人狠话不多，这篇 gRPC，小弟佩服！</a></li><li><a href="https://mp.weixin.qq.com/s/vqKKoPB5FQkCWXFWBLbkZg" target="_blank" rel="noopener noreferrer">腾讯一面：Thread、Runnable、Callable、Future、FutureTask，谈谈他们的关系</a></li><li><a href="https://mp.weixin.qq.com/s/rlfRjCb8EOrpt3xnF7isBw" target="_blank" rel="noopener noreferrer">拜托！面试请不要再问我 @Transactional</a></li><li><a href="https://mp.weixin.qq.com/s/YcyC1Jm4H7uGvSg3rCkDig" target="_blank" rel="noopener noreferrer">7 段小代码，玩转Java程序常见的崩溃场景</a></li><li><a href="https://mp.weixin.qq.com/s/Ua03qsLcrVURtxhSnuU_6w" target="_blank" rel="noopener noreferrer">单例模式 4 种经典实现方法</a></li><li><a href="https://blog.csdn.net/mu_wind/article/details/118423362" target="_blank" rel="noopener noreferrer">ElasticSearch进阶：一文全览各种ES查询在Java中的实现</a></li><li><a href="https://juejin.cn/post/7031047868806873096" target="_blank" rel="noopener noreferrer">使用 @Transactional 时常犯的N种错误</a></li><li><a href="https://juejin.cn/post/6984974277573836830" target="_blank" rel="noopener noreferrer">Spring Boot 2.x基础教程：使用@Scheduled实现定时任务</a></li><li><a href="https://juejin.cn/post/7007642025264676871" target="_blank" rel="noopener noreferrer">Spring Boot中使用@Async实现异步调用，加速任务的执行！</a></li><li><a href="https://github.com/CodingDocs/awesome-idea" target="_blank" rel="noopener noreferrer">IDEA 高效使用指南</a></li><li><a href="https://github.com/fuzhengwei/CodeGuide" target="_blank" rel="noopener noreferrer">CodeGuide | 程序员编码指南</a></li><li><a href="https://github.com/fuzhengwei/small-spring" target="_blank" rel="noopener noreferrer">🌱 Spring 手撸专栏 - 易学、好写、能懂！</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="mysql-学习">MySQL 学习<a href="#mysql-学习" class="hash-link" aria-label="Direct link to MySQL 学习" title="Direct link to MySQL 学习">​</a></h2><ul><li>MySQL 专栏<ul><li>⭐️ ⭐️ <a href="https://mp.weixin.qq.com/s/G8fWBvZPy6yxAyggwwx1NA" target="_blank" rel="noopener noreferrer">田螺哥的MySQL专栏！25篇，真香！</a></li></ul></li><li>表结构设计<ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/3yHSh7djpeeYZkajkTGFKg" target="_blank" rel="noopener noreferrer">推荐一款SQL自动检查神器，再也不用担心SQL出错了！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/sSsZ-w6WzjA_DLZfnsxD2w" target="_blank" rel="noopener noreferrer">21个MySQL表设计的经验准则</a></li><li>⭐️ <a href="https://juejin.cn/post/7136126923851169823" target="_blank" rel="noopener noreferrer">聊聊数据库建表的15个小技巧</a></li><li>⭐️ <a href="https://juejin.cn/post/6844904142733836301" target="_blank" rel="noopener noreferrer">我用起来顺手的数据库设计工具，这次推荐给大家！</a></li><li>⭐️ <a href="https://juejin.cn/post/7108525565157589005" target="_blank" rel="noopener noreferrer">数据库表结构设计一点心得和经验</a></li></ul></li><li>慢 SQL 优化<ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/Pi_SLqs3lwA7vWcT6lVv5g" target="_blank" rel="noopener noreferrer">美团面试：这个 SQL 语句加了哪些锁</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/8X-MuPgS-o53XZywqi_dmA" target="_blank" rel="noopener noreferrer">专坑同事的SQL 就这么写，性能降低100倍，不来看看</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/0_Arz-KO3UqJij1s4DjLNw" target="_blank" rel="noopener noreferrer">完爆90%的性能毛病，数据库优化八大通用绝招！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/3H9SD1dnAH0RoN-RoPXxgQ" target="_blank" rel="noopener noreferrer">公司新来个同事，MyBatis批量插入10w条数据仅用2秒，拍案叫绝！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/OBjRKdGzwFM4PNrbMd7kIA" target="_blank" rel="noopener noreferrer">一次显著的大表查询优化，从20s优化到500ms，查询分离YYDS！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/UxZRGO58kTiX5wUnuzMJ9Q" target="_blank" rel="noopener noreferrer">MySQL表太大，count(*)都能 502，怎么优化</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/exPgSB0MNUnu0wMkThET1w" target="_blank" rel="noopener noreferrer">这15个SQL优化口诀，工作面试都够用了</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/KegqAAvI4KxDffforTQqKA" target="_blank" rel="noopener noreferrer">保姆级教程！2 万字 + 30 张图搞懂 MySQL 是怎么加行级锁的</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/DZbAq9fpPxElhfJCkY53GA" target="_blank" rel="noopener noreferrer">两万字详解！InnoDB锁专题！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/BbrLQWGYlkXiy6t4YANj0Q" target="_blank" rel="noopener noreferrer">SQL优化思路+经典案例分析</a></li><li><a href="https://mp.weixin.qq.com/s/N3te_fVBeqhjIpl25N6kpA" target="_blank" rel="noopener noreferrer">MySQL 单表不要超过 2000W 行，靠谱吗</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/l3jJHIcqMzCcezbpboqyvQ" target="_blank" rel="noopener noreferrer">explain | 索引优化的这把绝世好剑，你真的会用吗</a></li><li><a href="https://mp.weixin.qq.com/s/EVzU7KW9d5_254Kg4LZYQQ" target="_blank" rel="noopener noreferrer">MySQL 优化：Explain 执行计划详解</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/3jrf1GKBBbVzcvJxqYnx9Q" target="_blank" rel="noopener noreferrer">这11条接口性能优化技巧，利好每日睡眠</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Y1Mh-99cgQWuCQ53wAxkUQ" target="_blank" rel="noopener noreferrer">顺丰快递：请签收MySQL灵魂十连</a></li></ul></li><li>MySQL 索引<ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/d3iC_Iokrjdn392I0Y53Og" target="_blank" rel="noopener noreferrer">MySQL索引15连问，抗住！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/sqW51yqeAXcDs9r84UFP7A" target="_blank" rel="noopener noreferrer">跟大家聊聊 MySQL 一行记录是怎么存储的</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/yvgB1a2o-m3_EBLePZM8cw" target="_blank" rel="noopener noreferrer">你管这破玩意叫B+树</a></li></ul></li><li>MySQL 日志<ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/Tfbd-KiBgsZtkiuVc70BFA" target="_blank" rel="noopener noreferrer">聊聊 MySQL 日志，好牛的设计！</a></li></ul></li><li>分库分表<ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/cZ7mUsCvBxmo1dzsPA3WjQ" target="_blank" rel="noopener noreferrer">分库分表经典15连问</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/AjVl-0u3plmL9U77h0VVJw" target="_blank" rel="noopener noreferrer">面试必备：分库分表！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/wYXs7gsID8a9ahJKsWXJ6w" target="_blank" rel="noopener noreferrer">再有人问你什么是分库分表，直接把这篇文章发给他</a></li></ul></li><li>脏读、不可重复读、幻读<ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/VWEKgnOWVnufz5pfvRjUWw" target="_blank" rel="noopener noreferrer">美团三面：一直追问我， MySQL 幻读被彻底解决了吗</a></li></ul></li><li>数据一致性<ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/VEU5p85aTvyBKf2XP5QTSg" target="_blank" rel="noopener noreferrer">数据库锁的12连问，抗住！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/shogIDEgXTtPVPFgsS8crw" target="_blank" rel="noopener noreferrer">聊聊select for update到底加了什么锁</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/WzAVtmFmEMhY-MiNEgQ0fw" target="_blank" rel="noopener noreferrer">如何保障 MySQL 和 Redis 的数据一致性</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/lyqvv-nA_PMUc-eBuCsNTA" target="_blank" rel="noopener noreferrer">如何保障 MySQL 和 Redis 的数据一致性</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/kkSQu7zdr6x_CZRE5uW-lg" target="_blank" rel="noopener noreferrer">聊聊分布式一致性！</a></li><li>⭐️ <a href="https://juejin.cn/post/7104507830522085383" target="_blank" rel="noopener noreferrer">聊聊分布式锁</a></li></ul></li><li>ORM 相关<ul><li>⭐️ <a href="https://mp.weixin.qq.com/s/R2yqW3kfesK-T5oZR2Vl2w" target="_blank" rel="noopener noreferrer">MyBatis 连环 20 问，你能答对几个</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/X11OCZSEh2k5K6uYG768yQ" target="_blank" rel="noopener noreferrer">MyBatis这样用，同事直呼哇塞，堪称最佳实践！</a></li></ul></li><li><a href="https://juejin.cn/post/6850037271233331208" target="_blank" rel="noopener noreferrer">MySQL 三万字精华总结 + 面试100 问，和面试官扯皮绰绰有余（收藏系列）</a></li><li><a href="https://mp.weixin.qq.com/s/vRI-bFB4_IEaoCCQcMqZjw" target="_blank" rel="noopener noreferrer">明明加了唯一索引，为什么还是产生重复数据</a></li><li><a href="https://mp.weixin.qq.com/s/O6sgYSpXBPwAA4Qcstj-BA" target="_blank" rel="noopener noreferrer">互联网公司都怎么实现分页的，拿 MySQL 使劲Limit</a></li><li><a href="https://mp.weixin.qq.com/s/cdc1NCSkvAU4Urk2wVFDMw" target="_blank" rel="noopener noreferrer">MySQL夺命66问</a></li><li><a href="https://mp.weixin.qq.com/s/L9qseWiHGfu1oAuKIhcUhw" target="_blank" rel="noopener noreferrer">一次 MySQL 误操作导致的事故，「高可用」都顶不住了！</a></li><li><a href="https://mp.weixin.qq.com/s/Inocu3vjMG4ivE19HrxR3g" target="_blank" rel="noopener noreferrer">虾皮二面：MySQL 中有哪些锁？表级锁和行级锁有什么区别</a></li><li><a href="https://mp.weixin.qq.com/s/Jhh-_5ynu58EKPMignk5fA" target="_blank" rel="noopener noreferrer">面霸篇：MySQL六十六问，两万字+五十图详解！</a></li><li><a href="https://juejin.cn/post/7101581835527782414" target="_blank" rel="noopener noreferrer">慢SQL分析与优化</a></li><li><a href="https://mp.weixin.qq.com/s/r91hINCgCYJDNHLMeaba8Q" target="_blank" rel="noopener noreferrer">Mysql数据库查询好慢，除了索引，还能因为什么</a></li><li><a href="https://mp.weixin.qq.com/s/8OOSyFB9pzoBMH73ey7YmQ" target="_blank" rel="noopener noreferrer">MySQL 主从，6 分钟带你掌握</a></li><li><a href="https://mp.weixin.qq.com/s/N08tFkGyXtmBSN0nS6S6UA" target="_blank" rel="noopener noreferrer">大厂面试题：日常工作如何做MySQL优化</a></li><li><a href="https://mp.weixin.qq.com/s/i8SHizPrBMQ2GIhQP7ozRw" target="_blank" rel="noopener noreferrer">Mysql完结汇总篇（18W字送给大家），完结撒花</a></li><li><a href="https://juejin.cn/post/7081456994413969445" target="_blank" rel="noopener noreferrer">面试官：什么是MySQL 事务与 MVCC 原理？</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="golang-学习">Golang 学习<a href="#golang-学习" class="hash-link" aria-label="Direct link to Golang 学习" title="Direct link to Golang 学习">​</a></h2><ul><li>Golang 学习路线<ul><li>⭐️ <a href="https://github.com/xiaobaiTech/golangFamily/blob/main/README.md" target="_blank" rel="noopener noreferrer">Go后端开发成长路线</a></li><li>⭐️ <a href="https://juejin.cn/post/7119123646471208968" target="_blank" rel="noopener noreferrer">《Go学习路线图》带你少走弯路，Let's Go ！</a></li><li>⭐️ <a href="https://juejin.cn/post/7176518080674136121" target="_blank" rel="noopener noreferrer">最全的Go资料汇总和最走心的学Go建议</a></li><li>⭐️ <a href="https://juejin.cn/post/7147939014870302756" target="_blank" rel="noopener noreferrer">给想转Go或者Go进阶同学的一些建议</a></li><li><a href="https://juejin.cn/post/7035966042857799687" target="_blank" rel="noopener noreferrer">我肝了三个月，为你写出了GO核心手册</a></li><li><a href="https://juejin.cn/post/7061980386640789540" target="_blank" rel="noopener noreferrer">Go 学习路线（2022）</a></li><li><a href="https://www.bilibili.com/video/BV16E411H7og" target="_blank" rel="noopener noreferrer">Golang学习手册之：带你21周搞定Go语言</a></li><li><a href="https://www.youtube.com/watch?v=YS4e4q9oBaU" target="_blank" rel="noopener noreferrer">Learn Go Programming - Golang Tutorial for Beginners</a></li></ul></li><li>Golang 进阶<ul><li>⭐️ <a href="https://github.com/danielfurman/presentations/blob/master/lets-go-generic/README.md" target="_blank" rel="noopener noreferrer">Golang 泛型介绍</a></li><li>⭐️ <a href="https://www.bilibili.com/video/BV1ry4y1y7V2" target="_blank" rel="noopener noreferrer">GopherCon UK 2018- Florin Patan - Production Ready Go Service in 30 Minutes</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/r4IWY6bzKph2QvxrKZszPA" target="_blank" rel="noopener noreferrer">作为Gopher，你知道Go的注释即文档应该怎么写吗</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Ne0uir1hpMokBUItntkfvw" target="_blank" rel="noopener noreferrer">31个！Golang常用工具来啦（建议收藏）</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Mj-EqwYWZBMr8XNIHxUqDA" target="_blank" rel="noopener noreferrer">Golang依赖注入提升开发效率！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/VFS4TWi3OpeAegScZ4cJRw" target="_blank" rel="noopener noreferrer">Go语言从0到1实现最简单的数据库！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/--ciEa-Oj0NEUxlp1Af_aQ" target="_blank" rel="noopener noreferrer">必撸系列！Go另外几个黑魔法技巧汇总</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/8HNZQrQ2oqMB2fAYbmH2Ow" target="_blank" rel="noopener noreferrer">来了！Go的2个黑魔法技巧</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Zb5zGOy_mdalUQ_Qy0HngQ" target="_blank" rel="noopener noreferrer">3种方式！Go Error处理最佳实践</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/OCpVRwtiphFRZgu9zdae5g" target="_blank" rel="noopener noreferrer">Go组件：context学习笔记！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/NkSyv7iDSZsLhMUgAi-r4w" target="_blank" rel="noopener noreferrer">不得不知道的Golang之sync.Map解读！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/56tth8PSquB1eR5-1XaDWA" target="_blank" rel="noopener noreferrer">鹅厂后台大佬教你Go内存管理！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/QBZ1dp0XIqMo24vVFYf1fA" target="_blank" rel="noopener noreferrer">全面解读！Golang中泛型的使用</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/niLk_n9Yp-iyl_RIie3Umw" target="_blank" rel="noopener noreferrer">超干货！彻底搞懂Golang内存管理和垃圾回收</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/BPcRI0BHBLmuYfzvP10Wvw" target="_blank" rel="noopener noreferrer">关于Go并发编程，你不得不知的“左膀右臂”——并发与通道！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/aoR_69JMBN5ZM10DKqRCyQ" target="_blank" rel="noopener noreferrer">它来了，关于Golang并发编程的超详细教程！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/POZGQXsYu5aWXvu29vSM8g" target="_blank" rel="noopener noreferrer">通俗易懂！图解Go协程原理及实战</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/DpCFUAYpvMzd6138Yp_JUA" target="_blank" rel="noopener noreferrer">拒绝千篇一律，这套Go错误处理的完整解决方案值得一看！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/_VGaV8ef65h9goxxfWejtQ" target="_blank" rel="noopener noreferrer">go语言最全优化技巧总结，值得收藏！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/fXKSr8GXaYxG1WCrLIgneg" target="_blank" rel="noopener noreferrer">再不Go就来不及了！Go高性能编程技法解读</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/T4tk-sckA1oNcWIvp27MMA" target="_blank" rel="noopener noreferrer">看了这篇你会发现，你是懂Go内存分配的</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/SLouDICt3HABv_wh-sSqKw" target="_blank" rel="noopener noreferrer">Go 实战技巧：避免内存分配的小技巧</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/VtDR2uJ8SQ2jiIS2o2uyfA" target="_blank" rel="noopener noreferrer">还咋优化？我是说Go程序</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/aIuta8Lr0govruPTgglw2w" target="_blank" rel="noopener noreferrer">通过一个例子让你彻底掌握 Go 工作区模式</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/_duDs0oHc_z_p--3OoIfVw" target="_blank" rel="noopener noreferrer">Go的方法接收者：值接收者与指针接收者</a></li><li>⭐️ <a href="https://juejin.cn/post/7157594175846744071" target="_blank" rel="noopener noreferrer">适合团队和个人项目的 Golang 编码规范</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/94thx36Ao2PYQ-8Cbto-wQ" target="_blank" rel="noopener noreferrer">程序员应该遵守的编程原则(不止Gopher哦)</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/rPKO23mHDGofeyzeCIHJxQ" target="_blank" rel="noopener noreferrer">给，你要的Go学习路线图来啦</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/UqjSA2i3s1VoLFACt_EL2A" target="_blank" rel="noopener noreferrer">Go 1.18新特性前瞻：原生支持Fuzzing测试</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/PBTP4vnwEXtrtsHdq0oL0g" target="_blank" rel="noopener noreferrer">如何应对不断膨胀的接口</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/pCcNtUykXAwb-BN_prPGpA" target="_blank" rel="noopener noreferrer">每个 gopher 都需要了解的 Go AST</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/xzNqpRbIvoJygSWeQJFjTw" target="_blank" rel="noopener noreferrer">一文搞懂Go标准库context包</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/E4lT4SuWKIlCZd60i7vigQ" target="_blank" rel="noopener noreferrer">使用反射操作channel</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/z75HDSlX0PLCnvL5kAcSDw" target="_blank" rel="noopener noreferrer">Go 1.20新特性前瞻</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/H3iygMqDTRWv6h2VcgVeUg" target="_blank" rel="noopener noreferrer">Go类型系统：有何与众不同</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/MRBEJHZBMS9s0w7UhseQWA" target="_blank" rel="noopener noreferrer">2022年Go语言盘点：泛型落地，无趣很好，稳定为王</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/HbFVODpDEzEZ047kv-LYbg" target="_blank" rel="noopener noreferrer">Go1.20 新特性：context支持自定义取消原因</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/NtBzM8l54HRVSpapKR_0sg" target="_blank" rel="noopener noreferrer">聊聊Go与TLS 1.3</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/CFwiFw00ah0rfdZyv_ppxw" target="_blank" rel="noopener noreferrer">将Roaring Bitmap序列化为JSON</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Y-JxePxv9XlaX_UASlWSvQ" target="_blank" rel="noopener noreferrer">万字长文告诉你Go 1.20中值得关注的几个变化</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/A4m1xlFwh9pD0qy3p7ItSA" target="_blank" rel="noopener noreferrer">Gopher 需要知道的几个结构体骚操作</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/UIeIBtC9MZJh3w-EphWHiA" target="_blank" rel="noopener noreferrer">Gopher 应该记住这 10 个命令</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/HPzoclfCB3UxLScXm4J83w" target="_blank" rel="noopener noreferrer">有趣的 Go HttpClient 超时机制</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/chPDWyBibBlvcEKKENFYGg" target="_blank" rel="noopener noreferrer">零拷贝技术第一篇：综述</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/hXfZImBUYTBe2JvhBD-OmA" target="_blank" rel="noopener noreferrer">零拷贝技术第二篇：Go语言中的应用</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/lE83EZ7eztjEWd_NU796YQ" target="_blank" rel="noopener noreferrer">gin 源码阅读(5) - 灵活的返回值处理</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/d9kP77eKRm2MSW_9ySlVGA" target="_blank" rel="noopener noreferrer">见微知著| 带你透过内存看 Slice 和 Array的异同</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/mrCQyw_dR5VYzf8ejyvHfA" target="_blank" rel="noopener noreferrer">Goland 这些实操技巧，你可能还不会！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/gmKi3bE99K6bXVGcMFz53w" target="_blank" rel="noopener noreferrer">这些 Goland 技巧，学会开发效率翻倍</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/lMvU80jhkabMvqXeTFiDnw" target="_blank" rel="noopener noreferrer">Go interface 原理剖析--类型转换</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/MQWZOkaAc4Bw-PmYHyd9SA" target="_blank" rel="noopener noreferrer">快收藏！最全Go语言实现设计模式（上）</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/NrUWfpyfzX4sag22qF-Y-Q" target="_blank" rel="noopener noreferrer">快收藏！最全GO语言实现设计模式【下】</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/i1N9bmVSW1lGfOezvhcD7g" target="_blank" rel="noopener noreferrer">深入理解 golang 的互斥锁</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/rETmci7xvzf5X9_liS0Hmg" target="_blank" rel="noopener noreferrer">Go 1.20新变化！第一部分：语言特性</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/UQwOJVqm5gnQPMgSE3MW9w" target="_blank" rel="noopener noreferrer">[<!-- -->译<!-- -->]<!-- -->Uber 的 Go语言开发规范</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/jrua9iSa1Huk3UvMluVe7w" target="_blank" rel="noopener noreferrer">这可能是最权威、最全面的Go语言编码风格规范了！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/uWhmvBk_MN23RjmfjkxqeQ" target="_blank" rel="noopener noreferrer">从鹅厂实例出发！分析Go Channel底层原理</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/vB9ElJCfgZeQHtB596XHpA" target="_blank" rel="noopener noreferrer">Go 服务自动收集线上问题现场</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/gLbAZShFnkPcI937pk-wpg" target="_blank" rel="noopener noreferrer">用规则引擎让你一天上线十个需求</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/QQjOyYkDfuxIxHl6k6qkRA" target="_blank" rel="noopener noreferrer">一文彻底理解Go语言栈内存/堆内存</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Oz0Zn8Y43UfHIOPL6rZ5Ig" target="_blank" rel="noopener noreferrer">字节大规模微服务 Go 语言发展之路</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/2FVYnKHXFoj18W62pob_jw" target="_blank" rel="noopener noreferrer">通过分析gin、beego源码，读懂web框架对http请求处理流程的本质</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/aLiqEuD9T8sERVrfGDSxvw" target="_blank" rel="noopener noreferrer">一文读懂 Go Http Server 原理</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/0JbLDkJboDDihy-7N4MMPw" target="_blank" rel="noopener noreferrer">Golang slog 介绍</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Immr4DD-XA-noOEkZ6flKg" target="_blank" rel="noopener noreferrer">Golang 库: golang slog 怎么设置日志 Debug 等级</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/PKtrqHFTYWyAVSolKVOoBQ" target="_blank" rel="noopener noreferrer">Golang 库: 为什么 Golang slog 库不支持 Fatal</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/G8mEAKRYbaae_rFBVJqdeg" target="_blank" rel="noopener noreferrer">发现conc并发库一个有趣的问题</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Rrz-UEx2SwYmyWC5rKh4Wg" target="_blank" rel="noopener noreferrer">Go 语言 Web 应用怎么使用 Nginx 部署</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/irp0uBR-nJ87tZ_elMWPnA" target="_blank" rel="noopener noreferrer">「Go语言进阶」并发编程详解 | 文末抽奖</a></li><li>⭐️ <a href="https://juejin.cn/post/7194334949011357755" target="_blank" rel="noopener noreferrer">一文入门Go云原生微服务「爆肝6千字」</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/jsdGV31yT5AR07BzRovWVw" target="_blank" rel="noopener noreferrer">为什么 Go 不支持 <!-- -->[<!-- -->]<!-- -->T 转换为 <!-- -->[<!-- -->]<!-- -->interface</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/R_2pwdv2V1jj3zMjuUTNHw" target="_blank" rel="noopener noreferrer">Go字符串操作不是你想的那么简单！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/QlzH18i72pWPm012t7d42Q" target="_blank" rel="noopener noreferrer">Golang知识点(defer): 面试经常变量在 defer 中的值， 其实在问变量的作用域</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/VjP9Bv46x7NP6uQ7cbsqmg" target="_blank" rel="noopener noreferrer">Go BIO/NIO探讨(1)：Gin框架中如何处理HTTP请求</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/x5qUJ-htS6ML1Cc8uYIDVQ" target="_blank" rel="noopener noreferrer">Go BIO/NIO探讨(2)：net库对socket/bind/listen/accept的封装</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/WoXZ_i7lJeXny8lIJ_Aj4g" target="_blank" rel="noopener noreferrer">Go BIO/NIO探讨(3): 基于系统调用实现tcp echo server</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/AvtIiC349sDqOe9labc3-A" target="_blank" rel="noopener noreferrer">Go BIO/NIO探讨(4)：net/http 在 tcp conn 上的处理</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/MO5XV40D3MI6NpEEpJiCMA" target="_blank" rel="noopener noreferrer">Go BIO/NIO探讨(5)：net库的非阻塞支持</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/t_4uTGN9DFCjqDw4LZT-0w" target="_blank" rel="noopener noreferrer">Go BIO/NIO探讨(6)：IO多路复用之select</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Zsh92yqK4e6mxNBLgY0Umw" target="_blank" rel="noopener noreferrer">Go BIO/NIO探讨(7)：IO多路复用之epoll</a></li><li>⭐️ <a href="https://juejin.cn/post/7157594175846744071" target="_blank" rel="noopener noreferrer">适合团队和个人项目的 Golang 编码规范</a></li><li>⭐️ <a href="https://juejin.cn/post/7116817920209977351" target="_blank" rel="noopener noreferrer">Golang 泛型初识</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/yHB9BzEGIki1fyjYojdpYQ" target="_blank" rel="noopener noreferrer">Go 语言官方依赖注入工具 Wire 使用指北</a></li><li>⭐️ <a href="https://juejin.cn/post/7043587400131411976" target="_blank" rel="noopener noreferrer">Go 服务端开发总结</a></li><li>🌛 <a href="https://eddycjy.com/go-categories/" target="_blank" rel="noopener noreferrer">Go 语言入门系列：初探 Go 项目实战</a></li><li>🌛 <a href="https://golang2.eddycjy.com/" target="_blank" rel="noopener noreferrer">Go 语言编程之旅：深入用 Go 做项目</a></li><li>🌛 <a href="https://golang3.eddycjy.com/" target="_blank" rel="noopener noreferrer">Go 语言设计哲学：了解 Go 的为什么和设计思考</a></li><li>🌛 <a href="https://golang1.eddycjy.com/" target="_blank" rel="noopener noreferrer">Go 语言进阶之旅：进一步深入 Go 源码</a></li><li>🌛 <a href="https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&amp;__biz=MzUxMDI4MDc1NA==&amp;scene=1&amp;album_id=1383459655464337409&amp;count=3#wechat_redirect" target="_blank" rel="noopener noreferrer">【系列文章】HTTP 系列教程</a></li><li>🌛 <a href="https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&amp;__biz=MzUzNTY5MzU2MA==&amp;scene=1&amp;album_id=1323498303014780929&amp;count=3#wechat_redirect" target="_blank" rel="noopener noreferrer">【系列文章】Go 语言 Web 编程</a></li><li>🌛 <a href="https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUzNTY5MzU2MA==&amp;action=getalbum&amp;album_id=1325302744319737858&amp;scene=21&amp;from_msgid=2247484375&amp;from_itemidx=1&amp;count=3&amp;nolastread=1#wechat_redirect" target="_blank" rel="noopener noreferrer">【系列文章】Go 语言并发编程</a></li><li>🌛 <a href="https://mp.weixin.qq.com/mp/homepage?__biz=MzkyNzI1NzM5NQ==&amp;hid=2&amp;sn=4d298cf2d9ad21260321275cf6c75194&amp;scene=1&amp;devicetype=iOS14.0&amp;version=18000733&amp;lang=zh_CN&amp;nettype=3G+&amp;ascene=7&amp;session_us=gh_169729c17b9c&amp;fontScale=100" target="_blank" rel="noopener noreferrer">【系列文章】Go 源码</a></li><li>🌛 <a href="http://mp.weixin.qq.com/mp/homepage?__biz=MzkyMzIyNjIxMQ==&amp;hid=1&amp;sn=631fe1ce375f2cd672449d0bd01963d2&amp;scene=18#wechat_redirect" target="_blank" rel="noopener noreferrer">【系列文章】Go源码与底层</a></li><li>🌛 <a href="https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&amp;__biz=MzUzNTY5MzU2MA==&amp;scene=1&amp;album_id=1394839706508148737&amp;count=3#wechat_redirect" target="_blank" rel="noopener noreferrer">【系列文章】Kubernetes 学习笔记</a></li><li>🌛 <a href="https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&amp;__biz=MzUxMDI4MDc1NA==&amp;scene=1&amp;album_id=1488826194207752195&amp;count=3#wechat_redirect" target="_blank" rel="noopener noreferrer">【系列文章】微服务设计和思考</a></li><li>🌛 <a href="https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUzNTY5MzU2MA==&amp;action=getalbum&amp;album_id=1809543596702777345&amp;scene=21&amp;from_msgid=2247492061&amp;from_itemidx=1&amp;count=3&amp;nolastread=1#wechat_redirect" target="_blank" rel="noopener noreferrer">【系列文章】Go 微服务实战</a></li><li>🌛 <a href="https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&amp;__biz=MzUzNTY5MzU2MA==&amp;scene=1&amp;album_id=1326949382503219201&amp;count=3#wechat_redirect" target="_blank" rel="noopener noreferrer">【系列文章】Go 语言实战技巧</a></li><li>🌛 <a href="https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&amp;__biz=MzUxMDI4MDc1NA==&amp;scene=1&amp;album_id=1751854579329056768&amp;count=3#wechat_redirect" target="_blank" rel="noopener noreferrer">【系列文章】Go 面试题</a></li><li>⭐️ <a href="https://go.dev/doc/effective_go" target="_blank" rel="noopener noreferrer">Golang 进阶 - Effective Go</a></li><li>⭐️ <a href="https://go.dev/doc/faq" target="_blank" rel="noopener noreferrer">Golang 进阶 - Go FAQ</a></li><li>⭐️ <a href="https://go.dev/blog/all" target="_blank" rel="noopener noreferrer">Golang 进阶 - blog文章</a></li><li>⭐️ <a href="https://go.dev/talks/" target="_blank" rel="noopener noreferrer">Golang 进阶 - 各个talk资料</a></li><li>⭐️ <a href="https://tonybai.com/2019/10/12/uber-go-style-guide/" target="_blank" rel="noopener noreferrer">Golang 进阶 - Uber Go语言编码规范</a></li><li>⭐️ <a href="https://tonybai.com/google-go-style/" target="_blank" rel="noopener noreferrer">Golang 进阶 - Google Go语言编码风格规范</a></li><li>⭐️ <a href="https://github.com/golang/go/wiki/CodeReviewComments" target="_blank" rel="noopener noreferrer">Golang 进阶 - CodeReviewComments</a></li><li>⭐️ <a href="https://github.com/golang/go/wiki/SliceTricks" target="_blank" rel="noopener noreferrer">Golang 进阶 - SliceTricks</a></li><li>⭐️ <a href="https://github.com/golang/go/wiki/CompilerOptimizations#optimized-memclr" target="_blank" rel="noopener noreferrer">Golang 进阶 - CompilerOptimizations</a></li><li>⭐️ <a href="https://github.com/golang/go/wiki#learning-more-about-go" target="_blank" rel="noopener noreferrer">Golang 进阶 - learning-more-about-go</a></li><li>⭐️ <a href="https://github.com/luk4z7/go-concurrency-guide" target="_blank" rel="noopener noreferrer">Golang 进阶 - go-concurrency-guide</a></li></ul></li><li>Golang 文章分享<ul><li>⭐️ <a href="https://github.com/kevinyan815/gocookbook" target="_blank" rel="noopener noreferrer">Golang开发手记</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/ZVLaykgYaOACbT2r-K0qBg" target="_blank" rel="noopener noreferrer">分享三个阅读 Go 源码的窍门</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/2qPeqi3qdk4sqtpqo-3_Uw" target="_blank" rel="noopener noreferrer">成为 Go 高手的 8 个 GitHub 开源项目</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/rOtR8FfMpfBZrIkyRrNsfQ" target="_blank" rel="noopener noreferrer">Go 语言代码风格规范-指南篇</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/RCBUlu0gRuVFSQ2m8Uyycg" target="_blank" rel="noopener noreferrer">Go 语言代码风格规范-概述篇</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/8_pJiuOzoQt6xyoLUX0CIw" target="_blank" rel="noopener noreferrer">Go 服务网络不通？net/http自带的这个工具帮你快速定位</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/i1loQpQufni3v4Ho2J6Pgw" target="_blank" rel="noopener noreferrer">一个 Go 程序的 Benchmark 基准分析工具</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/X9dKNO6sd-OY2VfsZpaElA" target="_blank" rel="noopener noreferrer">Go设计模式实战--用状态模式实现系统工作流和状态机</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/tC9xfZFJvcNEbTXHQYvT6w" target="_blank" rel="noopener noreferrer">外观模式，一个每天都在用，却被多数人在面试中忽视的模式</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/r8975amH-DcJkWQKytIeJQ" target="_blank" rel="noopener noreferrer">Go 设计模式｜项目依赖耦合度太高？可以用适配器做下优化</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/JKWbyr4Yt7A6l1nFsANUcQ" target="_blank" rel="noopener noreferrer">Go 设计模式｜组合，一个对数据结构算法和职场都有提升的设计模式</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/_e9Qa97gZvgv9n-pFB4lFw" target="_blank" rel="noopener noreferrer">Go学设计模式--装饰器和职责链，哪个模式实现中间件更科学</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/59cxPFHWcdnUxKyRyo8SKw" target="_blank" rel="noopener noreferrer">sourcegraph 出品的并发库 conc 详解</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/AUSse5z1YES9wtKCiMdyWA" target="_blank" rel="noopener noreferrer">Go语言实现的可读性更高的并发神库</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/LW8Woq5Rg4x31DbtD-_jeA" target="_blank" rel="noopener noreferrer">两种 Option 编程模式的实现，Uber推荐这一种</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/SFbSAGwQgQBVWpySYF-rkw" target="_blank" rel="noopener noreferrer">Go版本大于1.13，程序里这样做错误处理才地道</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/IelVDnMzGtT5y7hGSb_OxA" target="_blank" rel="noopener noreferrer">面试官：net/http库知道吗？能说说优缺点吗</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/3uWozu4VIUJHyIGut3_0Bg" target="_blank" rel="noopener noreferrer">Go 模糊测试fuzzing的原理分析</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/FTXkgxkUzsHMIspCK60G4w" target="_blank" rel="noopener noreferrer">Go学设计模式--怕把核心代码改乱，记得用代理模式</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/zCh12E10JM24EGTyFS7hPQ" target="_blank" rel="noopener noreferrer">你也是业务开发？提前用这个设计模式预防产品加需求吧</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/IQsojcdwLZ1g0TgVQDoqVw" target="_blank" rel="noopener noreferrer">Go 程序里 if else 分支太多？试着用策略模式治理一下吧</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/-Ysho1jI9MfrAIrplzj7UQ" target="_blank" rel="noopener noreferrer">用Go学设计模式-提炼流程，减少重复开发就靠它了!</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/cAwc6ZhdUwxkI5VT8LY9Hg" target="_blank" rel="noopener noreferrer">Go Gin框架请求自动验证和数据绑定，看完这篇就会用了</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Uu3EAWpRO9pSbg1F1DLa_w" target="_blank" rel="noopener noreferrer">Go开源库、大项目的公共包，是这么用建造者模式的</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/y1qHsQNR7EWeDU5g60Loqg" target="_blank" rel="noopener noreferrer">Go学设计模式--原型模式的考查点和使用推荐</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/MlC6-TDf06LGpF8hxcSV_w" target="_blank" rel="noopener noreferrer">工厂模式有三个Level，你能用Go写到第几层</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/1ZuhUA9Lt2uLFlamIY6fLQ" target="_blank" rel="noopener noreferrer">最简单的单例模式，Go版本的实现你写对了吗</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/OKUeAdicn0Bvkz8dYx1epQ" target="_blank" rel="noopener noreferrer">拒绝 Go 代码臃肿，其实在这几块可以用下观察者模式</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/SpVTl64W1Exy8fuN15-kmA" target="_blank" rel="noopener noreferrer">Go指针的使用限制和突破之路</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/TtN6NZ8hQ2AIf0C8wVzkjA" target="_blank" rel="noopener noreferrer">Go语言的IO库那么多，我该怎么选</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/gYWhjh1BburgeAU72mn_aw" target="_blank" rel="noopener noreferrer">Go 眼中的文件系统是什么？ io.FS</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/zJXPGYwNXIUyEOI0Kc15rg" target="_blank" rel="noopener noreferrer">几个提升Go语言开发效率的小技巧</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/ZVLaykgYaOACbT2r-K0qBg" target="_blank" rel="noopener noreferrer">分享三个阅读 Go 源码的窍门</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Elq7SWRpH08KmhX7auboOA" target="_blank" rel="noopener noreferrer">Gophers如何准备面试</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/FEPXDMFfvKgmtsymVTWzHw" target="_blank" rel="noopener noreferrer">Go Modules知识点总结</a></li><li>🌛 <a href="https://juejin.cn/post/7147939014870302756" target="_blank" rel="noopener noreferrer">给想转Go或者Go进阶同学的一些建议</a></li><li>🌛 <a href="https://juejin.cn/post/7131717990558466062" target="_blank" rel="noopener noreferrer">GO面试必知必会面试题</a></li><li><a href="https://mp.weixin.qq.com/s/kyGNVNDby5uq5JGfQt4Yrg" target="_blank" rel="noopener noreferrer">这些最常用的 Go CLI 命令，新手 Gopher 应该掌握</a></li><li><a href="https://mp.weixin.qq.com/s/7uobN6DmpIYqG34pOpvvlA" target="_blank" rel="noopener noreferrer">PGO 是啥，咋就让 Go 更快更猛了</a></li><li><a href="https://mp.weixin.qq.com/s/Pcp2FjcXk7Q7sV0Z-bEUNw" target="_blank" rel="noopener noreferrer">Go for 循环有时候真的很坑</a></li><li><a href="https://mp.weixin.qq.com/s/6KxJRG3lKUDY734t4EzAaA" target="_blank" rel="noopener noreferrer">深度解密Go语言之关于 interface 的 10 个问题</a></li><li><a href="https://mp.weixin.qq.com/s/qyEiEACuUd8SsyqCDLUjXA" target="_blank" rel="noopener noreferrer">手撸源码系列 - cache2go</a></li><li><a href="https://mp.weixin.qq.com/s/nc4s289ULpQkGlQuaFbZlQ" target="_blank" rel="noopener noreferrer">Go常见错误集锦之函数式选项模式</a></li><li><a href="https://mp.weixin.qq.com/s/THMhcM9TXydW8K5-Vvqvxg" target="_blank" rel="noopener noreferrer">详解并发编程基础之原子操作(atomic包)</a></li><li><a href="https://mp.weixin.qq.com/s/E2XwSIXw1Si1EVSO1tMW7Q" target="_blank" rel="noopener noreferrer">学习channel设计：从入门到放弃</a></li><li><a href="https://mp.weixin.qq.com/s/lJxjlDg5SkQyNLZBpOPP5A" target="_blank" rel="noopener noreferrer">context使用不当引发的一个bug</a></li><li><a href="https://mp.weixin.qq.com/s/S_EzyWZmFzzbBbxoSNe6Hw" target="_blank" rel="noopener noreferrer">Go语言如何实现可重入锁</a></li><li><a href="https://mp.weixin.qq.com/s/zlqZ-4EdzMNt3iubMknKLA" target="_blank" rel="noopener noreferrer">如何在测试中发现goroutine泄漏</a></li><li><a href="https://mp.weixin.qq.com/s/JC14dWffHub0nfPlPipsHQ" target="_blank" rel="noopener noreferrer">请勿滥用goroutine</a></li><li><a href="https://mp.weixin.qq.com/s/bhze_LcFHk7Y-QB4nEQKnA" target="_blank" rel="noopener noreferrer">面试官：哥们Go语言互斥锁了解到什么程度了</a></li><li><a href="https://mp.weixin.qq.com/s/E45dNnEURe87P709Ovu-Qw" target="_blank" rel="noopener noreferrer">Go工具之generate</a></li><li><a href="https://mp.weixin.qq.com/s/dN9G4Tnt9HgVqlNh73HNUQ" target="_blank" rel="noopener noreferrer">探究 Go 源码中 panic &amp; recover 有哪些坑</a></li><li><a href="https://mp.weixin.qq.com/s/s5-Pl5u6yoZCPWwoeINs9g" target="_blank" rel="noopener noreferrer">Go语言中常见100问题-#28 maps and memory leaks</a></li><li><a href="https://mp.weixin.qq.com/s/9pfznxXKHCv-QEZBqHw1YQ" target="_blank" rel="noopener noreferrer">Go语言中常见100问题-#27 Inefficient map initialization</a></li><li><a href="https://mp.weixin.qq.com/s/TYxqo1BniI-wfKVHQsrjjw" target="_blank" rel="noopener noreferrer">Go语言中常见100问题-#26 slices and memory leaks</a></li><li><a href="https://mp.weixin.qq.com/s/lAIB0l666R6Zh9NAdV809g" target="_blank" rel="noopener noreferrer">Go语言中常见100问题-#25 Unexpected side effects using slice append</a></li><li><a href="https://mp.weixin.qq.com/s/vZBePdCuKe12OMQOj6Rz4A" target="_blank" rel="noopener noreferrer">Go语言中常见100问题-#24 Not making slice copies correctly</a></li><li><a href="https://mp.weixin.qq.com/s/WsFGv9tcdRLP9K-NQSqimA" target="_blank" rel="noopener noreferrer">Go语言中常见100问题-#23 Not properly checking if a slice is empty</a></li><li><a href="https://mp.weixin.qq.com/s/uHmCU0v0xJ2RYlmq_lQAiQ" target="_blank" rel="noopener noreferrer">Go语言中常见100问题-#22 Being confused about nil vs. empty slices</a></li><li><a href="https://mp.weixin.qq.com/s/-Kt2QJdzEUDJx8MFvrUo7Q" target="_blank" rel="noopener noreferrer">Go语言中常见100问题-#20 Not understanding slice length and capacity</a></li><li><a href="https://mp.weixin.qq.com/s/epK_0yn_EPIWJjz9xmddcA" target="_blank" rel="noopener noreferrer">Go语言中常见100问题-#12 Project misorganization</a></li><li><a href="https://github.com/teivah/100-go-mistakes" target="_blank" rel="noopener noreferrer">100 Go Mistakes and How to Avoid Them</a></li><li><a href="https://mp.weixin.qq.com/s/aj_hULmeqy3whILr2ytECQ" target="_blank" rel="noopener noreferrer">Go 中基于 IP 地址的 HTTP 请求限流</a></li><li><a href="https://mp.weixin.qq.com/s/pe0CQa3tdrUmC86OSRBNeg" target="_blank" rel="noopener noreferrer">项目实战：用 Go 创建一个简易负载均衡器</a></li><li><a href="https://mp.weixin.qq.com/s/tloEYzrnKNrrAo1YKdeyrw" target="_blank" rel="noopener noreferrer">你知道几种Go并发控制方式</a></li><li><a href="https://mp.weixin.qq.com/s/H5HDrwhxZ_4v6Vf5xXUsIg" target="_blank" rel="noopener noreferrer">浅谈Golang两种线程安全的map</a></li><li><a href="https://mp.weixin.qq.com/s/YYvoeDfPMm8Y2kFu9uesGw" target="_blank" rel="noopener noreferrer">Go精妙的互斥锁设计</a></li><li><a href="https://mp.weixin.qq.com/s/CEIQUa7H43FR7M1ghkDSGg" target="_blank" rel="noopener noreferrer">Go更细粒度的读写锁设计</a></li><li><a href="https://mp.weixin.qq.com/s/Mro5XC8dS5ZAMvEVbJZsCw" target="_blank" rel="noopener noreferrer">Go 的 TryLock 实现</a></li><li><a href="https://mp.weixin.qq.com/s/oA6UJ-0R2OucFl-fbgrvWA" target="_blank" rel="noopener noreferrer">Go1.18 新特性：TryLock 是什么？需要它吗</a></li><li><a href="https://mp.weixin.qq.com/s/V2x0Nw3Y8lZxHYJh_yQ0dQ" target="_blank" rel="noopener noreferrer">Go中看似简单的WaitGroup源码设计，竟然暗含这么多知识</a></li><li><a href="https://mp.weixin.qq.com/s/Lsm-BMdKCKNQjRndNCLwLw" target="_blank" rel="noopener noreferrer">Go 标准库源码学习（一）详解短小精悍的 Once</a></li><li><a href="https://mp.weixin.qq.com/s/3VkcIg7NhCCiIwVRjuwR0A" target="_blank" rel="noopener noreferrer">Go 中为什么建议使用 NewXxx 这样的构造函数</a></li><li><a href="https://mp.weixin.qq.com/s/nA26g46tM_hu-khaGYniAQ" target="_blank" rel="noopener noreferrer">Uber Go语言编码规范</a></li><li><a href="https://mp.weixin.qq.com/s/KHzdEE_w_ev9p4v6MR7M8Q" target="_blank" rel="noopener noreferrer">怎么选择 Go 文件读取方案</a></li><li><a href="https://mp.weixin.qq.com/s/EeOxPkTe8WkOide49yIfEg" target="_blank" rel="noopener noreferrer">如何有效控制 Go 线程数</a></li><li><a href="https://mp.weixin.qq.com/s/OIqgqjXEvVmDUmnRqq4PGw" target="_blank" rel="noopener noreferrer">加大力度！Go 将会增强 Go1 向后兼容性</a></li><li><a href="https://mp.weixin.qq.com/s/Ucqqg4h9uRo7RVd8XCz80w" target="_blank" rel="noopener noreferrer">Go 的零值有什么用？看看这 4 个场景</a></li><li><a href="https://mp.weixin.qq.com/s/L_Sy4_6BURL4XWDK6bpEwg" target="_blank" rel="noopener noreferrer">Go 只会 if err != nil？这是不对的，分享这些优雅的处理姿势给你！</a></li><li><a href="https://mp.weixin.qq.com/s/cJON1H68eBFeuBpWhFbXXw" target="_blank" rel="noopener noreferrer">10+ 条 Go 官方谚语，你知道几条？</a></li><li><a href="https://mp.weixin.qq.com/s/xDXwsVjOfU2j3gisiHTZTQ" target="_blank" rel="noopener noreferrer">Go 适合 IO 密集型？并不准确！</a></li><li><a href="https://mp.weixin.qq.com/s/fzmN6zFVioQGedTdSDmyqQ" target="_blank" rel="noopener noreferrer">如何让 Go 反射变快</a></li><li><a href="https://mp.weixin.qq.com/s/y60q0-RMh8isd4u4PuLfUg" target="_blank" rel="noopener noreferrer">深入理解StatefulSet，用Kubernetes编排有状态应用</a></li><li><a href="https://juejin.cn/post/6844903433846145038" target="_blank" rel="noopener noreferrer">Go Modules 终极入门</a></li><li><a href="https://juejin.cn/post/7075098594151235597" target="_blank" rel="noopener noreferrer">非常适合PHP同学使用的GO框架：GoFrame</a></li><li><a href="https://mp.weixin.qq.com/s/EGN7G8ku-zkaZuzfBwx9Qw" target="_blank" rel="noopener noreferrer">看 Go 中的 struct 如何被优化，还有小插曲</a></li><li><a href="https://mp.weixin.qq.com/s/Qlqt1pP_Li-PxOICrz7bAw" target="_blank" rel="noopener noreferrer">在 Go 里用 CGO？这 7 个问题你要关注！</a></li><li><a href="https://mp.weixin.qq.com/s/Am0ORd08GsMc4xSdLG9kgg" target="_blank" rel="noopener noreferrer">Go 探讨了 13 年，怎么解决再赋值的坑</a></li><li><a href="https://juejin.cn/post/7134497015576133669" target="_blank" rel="noopener noreferrer">Go如何优雅的记录操作日志 | 冲刺掘金一周</a></li><li><a href="https://mp.weixin.qq.com/s/0c7emt54ayCrm1K16lk2SQ" target="_blank" rel="noopener noreferrer">如何更直观地理解 Go 调度过程</a></li><li><a href="https://mp.weixin.qq.com/s/FviFOLkIHuEjZdTg_qCoNQ" target="_blank" rel="noopener noreferrer">Go1.19 那些你不知道的新特性</a></li><li><a href="https://mp.weixin.qq.com/s/SrqJdng9cNUEVAS7nFaqAA" target="_blank" rel="noopener noreferrer">Go 中可别用复制锁，会有这些大问题！</a></li><li><a href="https://mp.weixin.qq.com/s/zyvO_hhUo1TRm6kMPcaFFQ" target="_blank" rel="noopener noreferrer">伙计，Go项目怎么使用枚举</a></li><li><a href="https://mp.weixin.qq.com/s/XPPwHd7eDUjvzsnuFwgbyw" target="_blank" rel="noopener noreferrer">Go ORM 单元测试全流程讲解</a></li><li><a href="https://mp.weixin.qq.com/s/r30z2i_sSuRfEnM_23wFlg" target="_blank" rel="noopener noreferrer">超全总结：Go语言如何操作文件</a></li><li><a href="https://mp.weixin.qq.com/s/HaF9qieEJWNUoyY9qTvnKw" target="_blank" rel="noopener noreferrer">Go 的时间转换和时区校对总记不住？给你一份备忘单</a></li><li><a href="https://mp.weixin.qq.com/s/ptJK7CDHCr6P4JCdsUXKdg" target="_blank" rel="noopener noreferrer">搞清楚 Go Mod的版本和伪版本，下次别乱用了</a></li><li><a href="https://mp.weixin.qq.com/s/7jLmwtP3xk-wbCFKqPLK2g" target="_blank" rel="noopener noreferrer">自己的项目，如何发布到Go Module上</a></li><li><a href="https://mp.weixin.qq.com/s/Dn2oM89mHEgoz8yVQnNEoQ" target="_blank" rel="noopener noreferrer">这不会又是一个Go的BUG吧</a></li><li><a href="https://mp.weixin.qq.com/s/YojNHW7kkjmmdjqBXCuQYA" target="_blank" rel="noopener noreferrer">这三个 Go 水平自测题，手写不出来还是先老实上班吧</a></li><li><a href="https://mp.weixin.qq.com/s/pR_XHTnhft2Hi_mY7JuEJg" target="_blank" rel="noopener noreferrer">不想Go 错误处理太臃肿，可以参考这个代码设计</a></li><li><a href="https://mp.weixin.qq.com/s/HuZn9hnHUBx3J4bAGYBYpw" target="_blank" rel="noopener noreferrer">关于Go程序错误处理的一些建议</a></li></ul></li><li>Golang 部署<ul><li>使用 Docker Desktop 搭建 k8s 集群</li><li><a href="https://mp.weixin.qq.com/s/MFd1R5VeEW0eLk-A4BqSQQ" target="_blank" rel="noopener noreferrer">天呐！我用 go 从零开始写了一个 k8s 应用管理工具（附完整代码和开发过程）</a></li><li><a href="https://mp.weixin.qq.com/s/Rrz-UEx2SwYmyWC5rKh4Wg" target="_blank" rel="noopener noreferrer">Go 语言 Web 应用怎么使用 Nginx 部署</a></li><li><a href="https://mp.weixin.qq.com/s/i3n0hoHRaYoDMWcC5DSQ3w" target="_blank" rel="noopener noreferrer">掌握了这篇 Dockerfile 中的 ARG 作用域， 就算 Build 镜像 CI 入门了 【文末抽奖】</a></li><li><a href="https://mp.weixin.qq.com/s/pen6G2aFsPfSqhKjgocVjQ" target="_blank" rel="noopener noreferrer">面试问 Dockerfile 的优化， 千万不要只会说减少层数</a></li><li><a href="https://mp.weixin.qq.com/s/10Ll8ipVGWg4HU4hjwILsQ" target="_blank" rel="noopener noreferrer">没想到在 Docker 容器中设置时区这么简单</a></li><li><a href="https://mp.weixin.qq.com/s/5NTgcdhn6CiZ2tg44_T-FQ" target="_blank" rel="noopener noreferrer">快收藏！超强图解Docker常见命令与实战！</a></li><li><a href="https://mp.weixin.qq.com/s/rDSKItZ8hvgjvpp4f4VzCQ" target="_blank" rel="noopener noreferrer">实时可视化Go Runtime指标，这个Go库超赞</a></li><li><a href="https://mp.weixin.qq.com/s/GfJqTG9XYx58eh5kImyeWg" target="_blank" rel="noopener noreferrer">主流监控系统技术选型，yyds！</a></li><li><a href="https://mp.weixin.qq.com/s/DEZPCzQul7wnZKqm1Ue6rg" target="_blank" rel="noopener noreferrer">从Go程序第一行代码，到在 K8s 上运行，要经历多少步</a></li><li><a href="https://mp.weixin.qq.com/s/ZU61NIMxh_UOo-chNvkPXA" target="_blank" rel="noopener noreferrer">在K8S上的Web服务该怎么做域名解析呢</a></li><li><a href="https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/" target="_blank" rel="noopener noreferrer">https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/</a></li><li><a href="https://mp.weixin.qq.com/s/uruu3qbpSLbTRJJRcWTYqg" target="_blank" rel="noopener noreferrer">Kubernetes入门实践--部署运行Go项目</a></li><li><a href="https://mp.weixin.qq.com/s/hoJgL-sP2OtMEFAhYNCItA" target="_blank" rel="noopener noreferrer">线上Go项目的Docker镜像应该怎么构建</a></li><li><a href="https://blog.opskumu.com/docker.html" target="_blank" rel="noopener noreferrer">Docker 学习笔记</a></li><li><a href="https://mp.weixin.qq.com/s/Ze096f0Utcl84c6gBwrCYw" target="_blank" rel="noopener noreferrer">程序解Bug最常用的K8s命令，外加使用窍门</a></li></ul></li><li>Golang 开源库推荐<ul><li>⭐️ 字节跳动大规模企业级 HTTP 框架 Hertz 设计实践<ul><li><a href="https://mp.weixin.qq.com/s/J6ziP7VOitGk-lz8NGdDrA" target="_blank" rel="noopener noreferrer">HTTP 框架 Hertz 实践入门：性能测试指南</a></li><li><a href="https://juejin.cn/post/7124337913352945672" target="_blank" rel="noopener noreferrer">字节开源WEB框架Hertz太香啦！</a></li><li><a href="https://juejin.cn/post/7153889167385526308" target="_blank" rel="noopener noreferrer">字节跳动大规模企业级 HTTP 框架 Hertz 设计实践</a></li><li><a href="https://github.com/cloudwego/hertz" target="_blank" rel="noopener noreferrer">https://github.com/cloudwego/hertz</a></li><li><a href="https://www.cloudwego.io/blog/2021/10/09/bytedance-practices-on-go-network-library/" target="_blank" rel="noopener noreferrer">ByteDance Practices on Go Network Library</a></li><li><a href="https://www.cloudwego.io/docs/hertz/getting-started/" target="_blank" rel="noopener noreferrer">https://www.cloudwego.io/docs/hertz/getting-started/</a></li></ul></li><li><a href="https://mp.weixin.qq.com/s/025-MLMAbdT38kWI--AoYg" target="_blank" rel="noopener noreferrer">Go 语言终极搜索插件</a></li><li><a href="https://mp.weixin.qq.com/s/8YRqypiW1dQQVlZkmCd1mQ" target="_blank" rel="noopener noreferrer">「Go工具箱」解析http中的user-agent，就用这个包：user_agent</a></li><li><a href="https://mp.weixin.qq.com/s/92O1SHs4tw1FMcDeQoSfkA" target="_blank" rel="noopener noreferrer">「Go工具箱」推荐一个轻量级、语义化的时间处理库：carbon</a></li><li><a href="https://mp.weixin.qq.com/s/n-kU6nwhOH6ouhufrP_1kQ" target="_blank" rel="noopener noreferrer">Go每日一库之CSRF库的使用方式和实现原理</a></li><li><a href="https://mp.weixin.qq.com/s/f4FAt-RgraOFXSfZmWjeoQ" target="_blank" rel="noopener noreferrer">Go 每日一库之 go-cache 缓存</a></li><li><a href="https://mp.weixin.qq.com/s/KCj-mCkZpcEu3GXkuRLTuA" target="_blank" rel="noopener noreferrer">「Go工具箱」redis官网推荐的go版本的分布式锁：redsync</a></li><li><a href="https://github.com/samber/lo" target="_blank" rel="noopener noreferrer">https://github.com/samber/lo</a></li><li><a href="https://github.com/nikoksr/notify" target="_blank" rel="noopener noreferrer">https://github.com/nikoksr/notify</a></li><li><a href="https://github.com/go-chi/chi" target="_blank" rel="noopener noreferrer">https://github.com/go-chi/chi</a></li><li><a href="https://github.com/gin-gonic/examples" target="_blank" rel="noopener noreferrer">https://github.com/gin-gonic/examples</a></li><li><a href="https://mp.weixin.qq.com/s/zLNwq32UKaCsaAXn2BaZkw" target="_blank" rel="noopener noreferrer">「Go工具箱」重磅推荐：一个国产的，star高达12k+的操作excel的包：Excelize</a></li><li><a href="https://mp.weixin.qq.com/s/Y3NGQH3hrT85O7aN7IrCIQ" target="_blank" rel="noopener noreferrer">「Go工具箱」一个让终端内容彩色化的工具：Color</a></li></ul></li><li>Golang 相关资源<ul><li>🌟 <a href="https://tonybai.com/articles/" target="_blank" rel="noopener noreferrer">Tony Bai 博客</a></li><li>🌟 <a href="https://github.com/golang-design/go-questions" target="_blank" rel="noopener noreferrer">Go 程序员面试笔试宝典</a></li><li>🌟 <a href="https://books.studygolang.com/gopl-zh/" target="_blank" rel="noopener noreferrer">Go语言圣经（中文版）</a></li><li>🌟 <a href="http://books.studygolang.com/The-Golang-Standard-Library-by-Example/" target="_blank" rel="noopener noreferrer">Go语言标准库书籍</a></li><li>🌟 <a href="https://www.topgoer.cn/" target="_blank" rel="noopener noreferrer">地鼠文档</a></li><li>🌟 <a href="https://www.topgoer.cn/docs/golang/golang-1ccjbpfstsfi1" target="_blank" rel="noopener noreferrer">go语言中文文档 - 地鼠文档</a></li><li><a href="https://mp.weixin.qq.com/s/IvL24_7iuuRp9Y3dljHaHQ" target="_blank" rel="noopener noreferrer">GoLand 迎来五周年，同时发布 2022.3：有彩蛋</a></li><li>🌟 <a href="https://mp.weixin.qq.com/s/jrua9iSa1Huk3UvMluVe7w" target="_blank" rel="noopener noreferrer">这可能是最权威、最全面的Go语言编码风格规范了！</a></li><li><a href="https://mp.weixin.qq.com/s/2qPeqi3qdk4sqtpqo-3_Uw" target="_blank" rel="noopener noreferrer">成为 Go 高手的 8 个 GitHub 开源项目</a></li><li><a href="https://github.com/Alikhll/golang-developer-roadmap" target="_blank" rel="noopener noreferrer">golang-developer-roadmap: 2020 年成为 Go 开发者的路线图</a></li><li><a href="https://github.com/go-admin-team/go-admin" target="_blank" rel="noopener noreferrer">go-admin: 基于 Gin + Vue + Element UI 的独立前后端权限管理系统的脚手架</a></li><li><a href="https://github.com/avelino/awesome-go" target="_blank" rel="noopener noreferrer">awesome-go: 精选的 Go 框架、库和软件的列表</a></li><li><a href="https://mp.weixin.qq.com/s/wKxg6IVZCNK3NG2Os9_3jg" target="_blank" rel="noopener noreferrer">Go 13 周年啦！</a></li><li><a href="https://mp.weixin.qq.com/s/rPKO23mHDGofeyzeCIHJxQ" target="_blank" rel="noopener noreferrer">给，你要的Go学习路线图来啦</a><ul><li>🌟 <a href="https://golangbyexample.com/" target="_blank" rel="noopener noreferrer">Golang By Example</a></li><li><a href="https://golangbyexample.com/golang-comprehensive-tutorial/" target="_blank" rel="noopener noreferrer">Golang Advanced Tutorial</a></li><li><a href="https://golangbyexample.com/all-design-patterns-golang/" target="_blank" rel="noopener noreferrer">All Design Patterns in Go (Golang)</a></li><li><a href="https://techbyexample.com/system-design-questions/" target="_blank" rel="noopener noreferrer">System Design Questions</a></li><li><a href="https://blog.gokit.info/post/go-solid-design/" target="_blank" rel="noopener noreferrer">SOLID Go Design - Go语言面向对象设计</a></li><li><a href="https://github.com/mohuishou/go-design-pattern" target="_blank" rel="noopener noreferrer">go design pattern</a></li><li><a href="https://mp.weixin.qq.com/s/XIwfj_AdZqX_vHM4VIq9EA" target="_blank" rel="noopener noreferrer">万字详文阐释程序员修炼之道</a></li><li><a href="https://mp.weixin.qq.com/s/c3RApB8a98tWahgC9mahJg" target="_blank" rel="noopener noreferrer">万字详文告诉你如何做 Code Review</a></li></ul></li><li><a href="https://github.com/talkgo/read" target="_blank" rel="noopener noreferrer">Go 学习之路</a></li><li><a href="https://mp.weixin.qq.com/s/ipbUy3GBRMFat9jUSssMMw" target="_blank" rel="noopener noreferrer">1024，我们的节日，Gopher 该干点啥</a><ul><li>🌟 <a href="https://www.yuque.com/qyuhen/go" target="_blank" rel="noopener noreferrer">Go 语言学习笔记</a></li><li>🌟 <a href="https://books.studygolang.com/GoExpertProgramming/" target="_blank" rel="noopener noreferrer">GO专家编程</a></li><li><a href="https://books.studygolang.com/" target="_blank" rel="noopener noreferrer">开源图书在线阅读 - Go语言中文网</a></li></ul></li><li>🌟 <a href="https://www.yuque.com/go-interview/set/xq5788" target="_blank" rel="noopener noreferrer">Go Interview</a></li><li>🌟 <a href="https://github.com/halfrost/LeetCode-Go" target="_blank" rel="noopener noreferrer">LeetCode Cookbook</a></li><li>🌟 <a href="https://books.halfrost.com/leetcode/" target="_blank" rel="noopener noreferrer">LeetCode Cookbook（在线阅读）</a></li><li>🌟 <a href="https://draveness.me/golang/docs/part1-prerequisite/ch02-compile/golang-compile-intro/" target="_blank" rel="noopener noreferrer">Go 语言设计与实现</a></li><li>🌟 <a href="https://books.studygolang.com/advanced-go-programming-book/" target="_blank" rel="noopener noreferrer">Go语言高级编程(Advanced Go Programming)</a></li><li><a href="https://github.com/geektutu/high-performance-go" target="_blank" rel="noopener noreferrer">Go 语言高性能编程</a></li><li>🌟 <a href="https://github.com/golang-design/under-the-hood" target="_blank" rel="noopener noreferrer">Go 语言原本</a></li><li>🌟 <a href="https://golang.design/under-the-hood/" target="_blank" rel="noopener noreferrer">Go 语言原本（在线阅读）</a></li><li><a href="https://github.com/talkgo/night" target="_blank" rel="noopener noreferrer">Go 夜读</a></li><li><a href="https://mp.weixin.qq.com/s/VKPSqS50Un29x30KIgB0tA" target="_blank" rel="noopener noreferrer">已入字节的大佬各厂三年Go面经</a></li></ul></li><li>Golang 算法<ul><li><a href="https://github.com/fangbinwei/algorithm-practice" target="_blank" rel="noopener noreferrer">https://github.com/fangbinwei/algorithm-practice</a></li></ul></li><li>Golang 项目参考<ul><li><a href="https://github.com/fangbinwei/aliyun-oss-website-action" target="_blank" rel="noopener noreferrer">https://github.com/fangbinwei/aliyun-oss-website-action</a></li></ul></li><li>Golang 教程<ul><li><a href="https://www.w3cschool.cn/go/" target="_blank" rel="noopener noreferrer">https://www.w3cschool.cn/go/</a></li></ul></li><li>Golang 标准库文档<ul><li><a href="https://pkg.go.dev/std" target="_blank" rel="noopener noreferrer">https://pkg.go.dev/std</a></li></ul></li><li>Golang 单元测试<ul><li><a href="https://blog.csdn.net/ALEX_CYL/article/details/121793330" target="_blank" rel="noopener noreferrer">Golang-单元测试</a></li><li><a href="https://zhuanlan.zhihu.com/p/377834750" target="_blank" rel="noopener noreferrer">手把手教你如何进行 Golang 单元测试</a></li></ul></li><li>⭐️ <a href="https://zhuanlan.zhihu.com/p/471317280" target="_blank" rel="noopener noreferrer">Go 语言与并发编程</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/Xzlt_WcdcfLWhofafY3c6g" target="_blank" rel="noopener noreferrer">Golang 简洁架构实战</a></li><li>⭐️ <a href="https://juejin.cn/post/7065197280223035422" target="_blank" rel="noopener noreferrer">如何使用高阶函数编程提升代码的简洁性</a></li><li>🌛 <a href="https://mp.weixin.qq.com/s/36CqC1U54LUd4-izt4iZ1g" target="_blank" rel="noopener noreferrer">深入理解Go Json.Unmarshal精度丢失之谜</a></li><li><a href="https://mp.weixin.qq.com/s/EvkMQCPwg-B0fZonpwXodg" target="_blank" rel="noopener noreferrer">Go Error 处理最佳实践</a></li><li><a href="https://segmentfault.com/a/1190000013739000" target="_blank" rel="noopener noreferrer">Golang 新手可能会踩的 50 个坑</a></li><li><a href="https://zhuanlan.zhihu.com/p/437626980" target="_blank" rel="noopener noreferrer">Golang设计模式总结</a></li><li><a href="https://zhuanlan.zhihu.com/p/267341653" target="_blank" rel="noopener noreferrer">Golang 单元测试指引</a></li><li>⭐️ <a href="https://juejin.cn/post/7041846339189080101" target="_blank" rel="noopener noreferrer">使用Golang、Gin和React、esbuild开发的Blog</a></li><li>⭐️ <a href="https://github.com/go-gorm/gorm" target="_blank" rel="noopener noreferrer">gorm - Golang 的出色 ORM 库</a></li><li>⭐️ <a href="https://github.com/gofiber/fiber" target="_blank" rel="noopener noreferrer">fiber：受到 Express 启发的 Web 应用框架</a></li><li><a href="https://go.dev/" target="_blank" rel="noopener noreferrer">Golang 官方文档</a></li><li><a href="https://zhuanlan.zhihu.com/p/426368274" target="_blank" rel="noopener noreferrer">Golang 编程思维和工程实战</a></li><li>⭐️ <a href="https://gobyexample.com/" target="_blank" rel="noopener noreferrer">Go by example</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="rust-学习">Rust 学习<a href="#rust-学习" class="hash-link" aria-label="Direct link to Rust 学习" title="Direct link to Rust 学习">​</a></h2><ul><li>⭐️ <a href="https://github.com/vinodotdev/node-to-rust/releases/download/v1/from-javascript-to-rust.pdf" target="_blank" rel="noopener noreferrer">PDF：从 JavaScript 到 Rust：新书免费发布</a></li><li>⭐️ <a href="https://github.com/google/comprehensive-rust" target="_blank" rel="noopener noreferrer">Google 出品的 Rust 教程</a></li><li>⭐️ <a href="https://course.rs/about-book.html" target="_blank" rel="noopener noreferrer">Rust语言圣经(Rust Course)</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/HKkt9cNZsUFdCR4nAlHeBA" target="_blank" rel="noopener noreferrer">揭秘前端眼中的Rust！</a></li><li>🌛 <a href="https://doc.rust-lang.org/book/" target="_blank" rel="noopener noreferrer">Rust 官方文档</a></li><li>🌛 <a href="https://doc.rust-lang.org/std/" target="_blank" rel="noopener noreferrer">Rust 标准库文档</a></li><li>🌛 <a href="https://doc.rust-lang.org/stable/rust-by-example/" target="_blank" rel="noopener noreferrer">Rust by Example</a></li><li>🌛 <a href="https://juejin.cn/post/7143822279992934436" target="_blank" rel="noopener noreferrer">选择 Go 还是 Rust？CloudWeGo-Volo 基于 Rust 语言的探索实践</a></li><li>🌛 <a href="https://zhuanlan.zhihu.com/p/417534662" target="_blank" rel="noopener noreferrer">用Rust锈化Vue Compiler</a></li><li>🌛 <a href="https://github.com/TheAlgorithms/Rust" target="_blank" rel="noopener noreferrer">用 Rust 实现的数据结构与算法合辑</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="网站推荐">网站推荐<a href="#网站推荐" class="hash-link" aria-label="Direct link to 网站推荐" title="Direct link to 网站推荐">​</a></h2><p><strong>文档相关</strong></p><ul><li><a href="https://github.com/search?q=&amp;type=" target="_blank" rel="noopener noreferrer">GitHub 搜索页面</a></li><li><a href="https://developer.mozilla.org/zh-CN/" target="_blank" rel="noopener noreferrer">MDN 文档</a></li><li><a href="https://caniuse.com/" target="_blank" rel="noopener noreferrer">caniuse：查询 API 兼容性</a></li><li><a href="https://snyk.io/advisor/" target="_blank" rel="noopener noreferrer">snyk：查询 NPM、Go、Docker 安全性</a></li><li><a href="https://bundlephobia.com/" target="_blank" rel="noopener noreferrer">bundlephobia：查询 NPM 包体积</a></li><li><a href="https://oscarotero.com/deno/" target="_blank" rel="noopener noreferrer">Deno cheat sheet</a></li><li><a href="https://beta.reactjs.org/learn" target="_blank" rel="noopener noreferrer">React Docs Beta</a></li><li><a href="https://overreacted.io/" target="_blank" rel="noopener noreferrer">Overreacted</a></li><li><a href="https://tailwindcss.com/docs/configuration" target="_blank" rel="noopener noreferrer">tailwindcss 样式参考</a></li><li><a href="https://explainshell.com/" target="_blank" rel="noopener noreferrer">Explain Shell</a></li><li><a href="https://es6.ruanyifeng.com/" target="_blank" rel="noopener noreferrer">《阮一峰 ES6 教程》</a></li><li><a href="https://github.com/yeasy/docker_practice" target="_blank" rel="noopener noreferrer">Docker 从入门到实践</a></li><li><a href="https://github.com/koala-coding/goodBlog" target="_blank" rel="noopener noreferrer">【程序员成长指北】node 必知必会系列</a></li><li><a href="https://link.juejin.cn/?target=https%3A%2F%2Fblog.poetries.top%2Fbrowser-working-principle%2F" target="_blank" rel="noopener noreferrer">《浏览器工作原理与实践》</a></li><li><a href="https://link.juejin.cn/?target=https%3A%2F%2Fwebpack.wuhaolin.cn%2F" target="_blank" rel="noopener noreferrer">《深入浅出 webpack》</a></li><li><a href="https://link.juejin.cn/?target=https%3A%2F%2Fprogrammercarl.com%2F" target="_blank" rel="noopener noreferrer">《代码随想录》</a></li><li><a href="https://link.juejin.cn/?target=https%3A%2F%2Fyuchengkai.cn%2F" target="_blank" rel="noopener noreferrer">《前端进阶之道》</a></li><li><a href="https://link.juejin.cn/?target=https%3A%2F%2Freact.iamkasong.com%2F" target="_blank" rel="noopener noreferrer">《React 技术揭秘》</a></li><li><a href="https://github.com/7kms/react-illustration-series" target="_blank" rel="noopener noreferrer">《图解 React 源码系列》</a></li><li><a href="https://link.juejin.cn/?target=https%3A%2F%2Fustbhuangyi.github.io%2Fvue-analysis%2Fv2%2Fprepare%2F" target="_blank" rel="noopener noreferrer">《Vue 技术揭秘》</a></li><li><a href="http://caibaojian.com/vue-design/" target="_blank" rel="noopener noreferrer">《Vue技术内幕》</a></li><li><a href="https://i5ting.github.io/How-to-learn-node-correctly/" target="_blank" rel="noopener noreferrer">狼叔：如何正确的学习Node.js</a></li><li><a href="https://q.shanyue.tech/engineering/" target="_blank" rel="noopener noreferrer">大厂面试题每日一题</a></li><li><a href="https://shanyue.tech/op/#%E9%A2%84%E8%A7%88" target="_blank" rel="noopener noreferrer">前端工程化、个人服务器运维指南</a></li><li><a href="https://xiaoflyfish.cn/" target="_blank" rel="noopener noreferrer">MySQL、Linux、服务端架构</a></li><li><a href="https://xcoder.in/" target="_blank" rel="noopener noreferrer">Khaidi Chu 的博客</a></li><li><a href="https://github.com/chenyuntc/pytorch-book" target="_blank" rel="noopener noreferrer">《深度学习框架PyTorch：入门与实践》</a></li><li><a href="https://github.com/datawhalechina/pumpkin-book" target="_blank" rel="noopener noreferrer">《机器学习》（西瓜书）</a></li><li><a href="https://www.bilibili.com/video/BV1Mh411e7VU" target="_blank" rel="noopener noreferrer">《机器学习》配套视频教程</a></li><li>⭐️ <a href="https://abseil.io/blog/04222021-swe-book" target="_blank" rel="noopener noreferrer">Software Engineering at Google</a></li><li>⭐️ <a href="https://github.com/dair-ai/ML-YouTube-Courses" target="_blank" rel="noopener noreferrer">ML YouTube Courses</a></li><li>⭐️ <a href="https://github.com/vasanthk/how-web-works" target="_blank" rel="noopener noreferrer">How Web Works</a></li></ul><p><strong>开源推荐</strong></p><ul><li><a href="https://nextjs.org/docs/getting-started" target="_blank" rel="noopener noreferrer">Next.js</a></li><li><a href="https://tailwindcss.com/docs/configuration" target="_blank" rel="noopener noreferrer">tailwindcss 样式参考</a></li><li><a href="https://pnpm.io/installation" target="_blank" rel="noopener noreferrer">PNPM</a></li><li><a href="https://www.typescriptlang.org/docs/" target="_blank" rel="noopener noreferrer">TypeScript</a></li><li><a href="https://vitejs.dev/" target="_blank" rel="noopener noreferrer">Vite</a></li><li><a href="https://storybook.js.org/" target="_blank" rel="noopener noreferrer">Storybook</a></li></ul><p><strong>在线 Plyaground</strong></p><ul><li><a href="https://godbolt.org/" target="_blank" rel="noopener noreferrer">生成各个语言的汇编代码</a></li><li><a href="https://sfc.vuejs.org/" target="_blank" rel="noopener noreferrer">Vue SFC Playground</a></li><li><a href="https://link.juejin.cn/?target=https%3A%2F%2Fcodesandbox.io%2Fdashboard%2Fhome" target="_blank" rel="noopener noreferrer">CodeSandBox</a></li><li><a href="https://codepen.io/" target="_blank" rel="noopener noreferrer">CodePen</a></li><li><a href="https://www.astexplorer.net/" target="_blank" rel="noopener noreferrer">AST explorer：可视化 AST</a></li><li><a href="https://link.juejin.cn/?target=https%3A%2F%2Fjex.im%2Fregulex" target="_blank" rel="noopener noreferrer">正则表达式可视化</a></li></ul><p><strong>编程风格指南</strong></p><ul><li>⭐️ <a href="https://github.com/typescript-eslint/typescript-eslint" target="_blank" rel="noopener noreferrer">typescript-eslint</a></li><li>⭐️ <a href="https://github.com/AlloyTeam/eslint-config-alloy" target="_blank" rel="noopener noreferrer">eslint-config-alloy</a></li><li>⭐️ <a href="https://github.com/airbnb/javascript" target="_blank" rel="noopener noreferrer">Airbnb JavaScript Style Guide</a></li><li>⭐️ <a href="https://github.com/ryanmcdermott/clean-code-javascript" target="_blank" rel="noopener noreferrer">clean-code-javascript</a></li></ul><p><strong>技术社区</strong></p><ul><li><a href="https://dev.to/" target="_blank" rel="noopener noreferrer">https://dev.to/</a></li><li><a href="https://medium.com/" target="_blank" rel="noopener noreferrer">https://medium.com/</a></li><li><a href="https://linuxhandbook.com/" target="_blank" rel="noopener noreferrer">https://linuxhandbook.com/</a></li></ul><p><strong>工具相关</strong></p><ul><li><a href="https://plantuml.com/" target="_blank" rel="noopener noreferrer">plantuml：用代码画时序图、用例图、类图、思维导图</a></li><li><a href="https://www.npmjs.com/package/njt" target="_blank" rel="noopener noreferrer">njt：快速导航至 npm 包资源</a></li><li><a href="https://www.skypack.dev/" target="_blank" rel="noopener noreferrer">skypack：无需构建工具使用各种经过优化的 npm 包</a></li><li><a href="https://link.juejin.cn/?target=https%3A%2F%2Fcarbon.now.sh%2F" target="_blank" rel="noopener noreferrer">carbon：生成代码片</a></li><li><a href="https://unbug.github.io/codelf/" target="_blank" rel="noopener noreferrer">codelf 变量命名神器</a></li><li><a href="https://openbase.com/" target="_blank" rel="noopener noreferrer">openbase：查询各种第三方库</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="学习资源">学习资源<a href="#学习资源" class="hash-link" aria-label="Direct link to 学习资源" title="Direct link to 学习资源">​</a></h2><ul><li>《Linux Shell 脚本攻略（第2版）》</li><li>《推荐系统——技术、评估及高效算法》</li><li>《Go 语言编程》</li><li>《Go 语言高级编程》</li><li>《操作系统导论》</li><li>《深入理解计算机系统》</li><li>《MySQL技术内幕》</li><li>《Redis设计与实现》</li><li>⭐️ <a href="https://mp.weixin.qq.com/s/xRnG204OW67mKMnbfFHBoA" target="_blank" rel="noopener noreferrer">操作系统常用知识总结！</a></li><li>⭐️ <a href="https://www.bilibili.com/video/BV1EW411u7th" target="_blank" rel="noopener noreferrer">【计算机科学速成课】<!-- -->[<!-- -->40集全/精校<!-- -->]<!-- --> - Crash Course Computer Science</a></li><li>⭐️ <a href="https://www.bilibili.com/video/BV1iW411d7hd" target="_blank" rel="noopener noreferrer">【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="面试相关">面试相关<a href="#面试相关" class="hash-link" aria-label="Direct link to 面试相关" title="Direct link to 面试相关">​</a></h2><ul><li><a href="https://github.com/ConardLi/awesome-coding-js" target="_blank" rel="noopener noreferrer">JS 数据结构与算法 - awesome-coding-js</a></li><li><a href="https://github.com/trekhleb/javascript-algorithms" target="_blank" rel="noopener noreferrer">JavaScript Algorithms and Data Structures</a></li><li><a href="https://juejin.cn/post/7023208826472005668" target="_blank" rel="noopener noreferrer">JavaScript算法基础及面试总结（1w1字）</a></li><li>⭐️ <a href="https://juejin.cn/post/6844903929705136141" target="_blank" rel="noopener noreferrer">如何写出一个惊艳面试官的深拷贝?</a></li><li>⭐️ <a href="https://juejin.cn/post/6844904118704668685" target="_blank" rel="noopener noreferrer">面了几个说自己精通 Vue 的同学</a></li><li><a href="https://blog.csdn.net/xgangzai/article/details/120375992" target="_blank" rel="noopener noreferrer">高频react面试题20道（附详解）</a></li><li><a href="https://juejin.cn/post/6844903885488783374" target="_blank" rel="noopener noreferrer">【1 月最新】前端 100 问：能搞懂 80% 的请把简历给我</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="-掘金大佬汇总">📒 掘金大佬汇总<a href="#-掘金大佬汇总" class="hash-link" aria-label="Direct link to 📒 掘金大佬汇总" title="Direct link to 📒 掘金大佬汇总">​</a></h2><ul><li>Vue 源码、响应式机制：<a href="https://juejin.cn/user/2330620350708823/posts" target="_blank" rel="noopener noreferrer">ssh</a> 、<a href="https://juejin.cn/user/2137106333044861/posts" target="_blank" rel="noopener noreferrer">黄轶</a></li><li>React 进阶系列：<a href="https://juejin.cn/user/2418581313687390/posts" target="_blank" rel="noopener noreferrer">我不是外星人</a></li><li>Webpack 相关：<a href="https://juejin.cn/user/1820446985555544/posts" target="_blank" rel="noopener noreferrer">Tecvan</a></li><li>设计模式：<a href="https://juejin.cn/user/3544481219495806/posts" target="_blank" rel="noopener noreferrer">DYBOY</a></li><li>手写源码、设计模式：<a href="https://juejin.cn/user/2295436011645655/posts" target="_blank" rel="noopener noreferrer">蒋鹏飞</a> 、<a href="https://juejin.cn/user/1204720476893064/posts" target="_blank" rel="noopener noreferrer">前端阳光</a></li><li>Webpack5、设计模式：<a href="https://juejin.cn/user/4300945218607197" target="_blank" rel="noopener noreferrer">清汤饺子</a></li><li>前端架构设计：<a href="https://juejin.cn/user/703340610597064/posts" target="_blank" rel="noopener noreferrer">寒草</a></li><li>总结大师：<a href="https://juejin.cn/user/2330620350432110/posts" target="_blank" rel="noopener noreferrer">JowayYoung</a></li><li>源码分析：若川</li><li>工程化知识卡片：<a href="https://juejin.cn/user/1556564164489389/posts" target="_blank" rel="noopener noreferrer">shanyue</a></li><li>CSS 各种特效：<a href="https://juejin.cn/user/2330620350437678/posts" target="_blank" rel="noopener noreferrer">chokcoco</a></li><li>Nodejs 相关：<a href="https://www.zhihu.com/people/liuyong25/posts" target="_blank" rel="noopener noreferrer">天猪</a></li><li>Umi 相关：<a href="https://www.yuque.com/mdh/weekly/rhiudh" target="_blank" rel="noopener noreferrer">MDH 前端周刊</a></li><li>Antd、Umi、Node.js：<a href="https://www.yuque.com/antfe/featured/ys58hy" target="_blank" rel="noopener noreferrer">支付宝体验科技精选</a></li><li>前端、全栈技术专刊：<a href="https://www.zhihu.com/column/ali-nanjing" target="_blank" rel="noopener noreferrer">阿里 CCO 体验技术专刊</a></li><li>Golang 相关：<a href="https://zhuanlan.zhihu.com/p/340814811" target="_blank" rel="noopener noreferrer">腾讯技术工程</a></li><li>前端装逼技巧108式：<a href="https://segmentfault.com/u/king_hcj" target="_blank" rel="noopener noreferrer">独钓寒江雪</a></li><li>前端九条 bug 分享：<a href="https://segmentfault.com/u/lulu_up" target="_blank" rel="noopener noreferrer">lulu_up</a></li><li>Vue3 源码共读：<a href="https://www.bilibili.com/video/BV1bS4y1T7ng" target="_blank" rel="noopener noreferrer">前端杨村长</a></li><li>前端工程化、学习 Golang：洛竹</li><li>Node.js 相关：五月君</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="-待学习内容">📒 待学习内容<a href="#-待学习内容" class="hash-link" aria-label="Direct link to 📒 待学习内容" title="Direct link to 📒 待学习内容">​</a></h2><ul><li><a href="https://juejin.cn/post/7017360824939315207" target="_blank" rel="noopener noreferrer">babel源码详解-v1.7.8</a></li><li><a href="https://juejin.cn/post/6844904094079926286" target="_blank" rel="noopener noreferrer">最简实现Promise，支持异步链式调用（20行）</a></li><li><a href="https://juejin.cn/post/6844904116913700877" target="_blank" rel="noopener noreferrer">手写一个Promise/A+,完美通过官方872个测试用例</a></li><li><a href="https://juejin.cn/post/6889247428797530126" target="_blank" rel="noopener noreferrer">我在工作中写React，学到了什么？性能优化篇</a></li><li><a href="https://juejin.cn/post/6844903783005175815" target="_blank" rel="noopener noreferrer">如何利用lerna管理模块</a></li><li><a href="https://juejin.cn/post/6969544464113074189" target="_blank" rel="noopener noreferrer">基于 lerna 的多包 JavaScript 项目搭建维护</a></li><li><a href="https://juejin.cn/post/6844903896767283207#heading-5" target="_blank" rel="noopener noreferrer">React性能优化小贴士</a></li><li><a href="https://juejin.cn/post/6844903929726107655" target="_blank" rel="noopener noreferrer">神奇的lambda表达式——函数式编程必学</a></li><li><a href="https://juejin.cn/post/6844903954002739213" target="_blank" rel="noopener noreferrer">npm进阶——如何拥有自己的包和流程自动化</a></li><li><a href="https://juejin.cn/post/6844904162124103693" target="_blank" rel="noopener noreferrer">React Hooks的花样玩法</a><ul><li>useDark，useClickOutside，全局状态管理</li></ul></li><li><a href="https://juejin.cn/post/6844903845227659271" target="_blank" rel="noopener noreferrer">正则表达式不要背</a></li><li><a href="https://juejin.cn/post/6844903825145511950" target="_blank" rel="noopener noreferrer">我们或许不需要 classnames 这个库</a></li><li><a href="https://juejin.cn/post/7014431215302213668" target="_blank" rel="noopener noreferrer">国庆爆肝，用vite+vue3+ts实现一个网页版的typora！</a></li><li><a href="https://juejin.cn/post/6982192362583752741" target="_blank" rel="noopener noreferrer">手摸手教你使用最新版husky(v7.0.1)让代码更优雅规范</a></li><li><a href="https://juejin.cn/post/7015476516196712462" target="_blank" rel="noopener noreferrer">快速入手Electron，拥有一个自己的桌面应用</a></li><li><a href="https://juejin.cn/post/6945236994247098381" target="_blank" rel="noopener noreferrer">在大厂是如何高效组织 npm script 的</a></li><li><a href="https://juejin.cn/post/6940042028243746823" target="_blank" rel="noopener noreferrer">前端开发者周刊第三期：各大厂 webpack5 实践</a></li><li><a href="https://juejin.cn/post/6937176680251424775#heading-7" target="_blank" rel="noopener noreferrer">【译】下一代前端构建工具 ViteJS 中英双语字幕 ｜ 技术点评</a></li><li>⭐️ <a href="https://juejin.cn/post/6924258563862822919" target="_blank" rel="noopener noreferrer">Webpack5 新特性业务落地实战</a></li><li>⭐️ <a href="https://webpack.docschina.org/guides/development/#choosing-a-development-tool" target="_blank" rel="noopener noreferrer">Webpack 官方开发指南</a></li><li><a href="https://mp.weixin.qq.com/s/P3foOrcu4StJDGdX9xavng" target="_blank" rel="noopener noreferrer">构建效率大幅提升，webpack5 在企鹅辅导的升级实践</a></li><li><a href="https://mp.weixin.qq.com/s/ZP2IigNVSIZKGuYxNYOYgw" target="_blank" rel="noopener noreferrer">如何利用 monorepo 策略管理代码？</a></li><li><a href="https://juejin.cn/post/6924854598268108807" target="_blank" rel="noopener noreferrer">All in one：项目级 monorepo 策略最佳实践</a></li><li><a href="https://juejin.cn/post/7007252464726458399" target="_blank" rel="noopener noreferrer">一顿操作，我把 Table 组件性能提升了十倍</a></li><li><a href="https://juejin.cn/post/7005019784429469704" target="_blank" rel="noopener noreferrer">MySQL 从入门到实践，万字详解</a></li><li><a href="https://juejin.cn/post/6844904080972709901" target="_blank" rel="noopener noreferrer">半小时搞会 CentOS 入门必备基础知识</a></li><li><a href="https://juejin.cn/post/6844903919995322382" target="_blank" rel="noopener noreferrer">手摸手带你 Docker 从入门到实践</a></li></ul><ul><li><a href="https://mp.weixin.qq.com/s/DswfPb6J1w2B_MWj1TjyOg" target="_blank" rel="noopener noreferrer">从源码中来，到业务中去，React性能优化终极指南</a></li><li><a href="https://juejin.cn/post/7026119446162997261" target="_blank" rel="noopener noreferrer">在 Vue 中为什么不推荐用 index 做 key</a></li><li><a href="https://juejin.cn/post/7077365102743126052" target="_blank" rel="noopener noreferrer">四个真秀React用法，你值得拥有</a></li><li><a href="https://mp.weixin.qq.com/s/0Nx093GdMcYo5Mr5VRFDjw" target="_blank" rel="noopener noreferrer">【第2506期】JavaScript 包管理器简史（npm/yarn/pnpm）</a></li><li><a href="https://mp.weixin.qq.com/s/grb2OlBYiwU3TOkEtNZReA" target="_blank" rel="noopener noreferrer">pnpm 源码结构及调试指南</a></li><li><a href="https://zhuanlan.zhihu.com/p/455809528" target="_blank" rel="noopener noreferrer">深入浅出 tnpm rapid 模式 - 如何比 pnpm 快 10 秒</a></li><li><a href="https://juejin.cn/post/7152898360498716702" target="_blank" rel="noopener noreferrer">Vue组件库文档站点的搭建思路</a></li><li><a href="https://juejin.cn/post/7151653067593613320#heading-18" target="_blank" rel="noopener noreferrer">一文聊完前端项目中的Babel配置</a></li><li><a href="https://juejin.cn/post/7148746931802472485#heading-8" target="_blank" rel="noopener noreferrer">React-router从0到1</a></li><li><a href="https://juejin.cn/post/7118937685653192735#heading-7" target="_blank" rel="noopener noreferrer">「React 进阶」 React 全部 Hooks 使用大全 （包含 React v18 版本 ）</a></li><li><a href="https://juejin.cn/post/7131222991681093639" target="_blank" rel="noopener noreferrer">768. 最多能完成排序的块 II : 常规贪心构造题</a></li><li><a href="https://juejin.cn/post/7128597557634138148" target="_blank" rel="noopener noreferrer">🦊【前端工程化】为什么大厂都要开发自己的脚手架？🦄️</a></li><li><a href="https://juejin.cn/post/7120893568553582622" target="_blank" rel="noopener noreferrer">快上车！从零开始搭建一个属于自己的组件库！</a></li><li><a href="https://juejin.cn/post/6938201650012094495" target="_blank" rel="noopener noreferrer">写给前端的手动内存管理基础入门（一）返璞归真：从引用类型到裸指针</a></li><li><a href="https://juejin.cn/post/7101457212085633054#heading-1" target="_blank" rel="noopener noreferrer">模块联邦浅析</a></li><li><a href="https://mp.weixin.qq.com/s/KHeo5bdY4cjPfA5I1mjXWw" target="_blank" rel="noopener noreferrer">【第2126期】每个开发者都应该知道的 SOLID 原则</a></li><li><a href="https://www.yuque.com/go-interview/set/xq5788" target="_blank" rel="noopener noreferrer">Go Interview</a></li><li><a href="https://books.halfrost.com/leetcode/ChapterFour/0200~0299/0287.Find-the-Duplicate-Number/" target="_blank" rel="noopener noreferrer">LeetCode Cookbook</a></li><li><a href="https://mp.weixin.qq.com/s?__biz=MzUxMDI4MDc1NA==&amp;mid=2247483807&amp;idx=1&amp;sn=9c7aede4f675f2de49ddc08ab1a95a71&amp;chksm=f90414c2ce739dd4b8711c0043286fba9744b8d9c86c75c7ac7750d28cd2fed43f749eb5de99&amp;scene=178&amp;cur_album_id=1383459655464337409#rd" target="_blank" rel="noopener noreferrer">Go Gin 系列二：初始化项目及公共库</a></li><li><a href="https://orizens.com/blog/500ms-to-1-7ms-in-react-a-journey-and-a%20checklist/" target="_blank" rel="noopener noreferrer">500ms to 1.7ms In React: A Journey And A Checklist</a></li><li><a href="https://juejin.cn/post/7157902763534319624" target="_blank" rel="noopener noreferrer">漫谈构建工具(十):聊一聊常见的构建工具关于插件机制的那些通用套路</a></li><li><a href="https://juejin.cn/post/7170852747749621791" target="_blank" rel="noopener noreferrer">二十张图片彻底讲明白Webpack设计理念，以看懂为目的</a></li><li><a href="https://juejin.cn/post/7085257325165936648" target="_blank" rel="noopener noreferrer">我是如何带领团队从零到一建立前端规范的？🎉🎉🎉</a></li><li><a href="https://mp.weixin.qq.com/s/H3iygMqDTRWv6h2VcgVeUg" target="_blank" rel="noopener noreferrer">Go类型系统：有何与众不同</a></li><li><a href="https://dev.to/aurelievache/learning-go-by-examples-part-7-create-a-cross-platform-gui-desktop-app-in-go-44j1" target="_blank" rel="noopener noreferrer">Learning Go by examples: part 7 - Create a cross-platform GUI/Desktop app in Go</a></li><li><a href="https://dev.to/aurelievache/understanding-docker-part-37-content-trust-18n3" target="_blank" rel="noopener noreferrer">Understanding Docker: part 37 – Content Trust</a></li><li><a href="https://dev.to/aurelievache/understanding-kubernetes-part-47-kubernetes-126-changelog-2404" target="_blank" rel="noopener noreferrer">Understanding Kubernetes: part 47 – Kubernetes 1.26 Changelog</a></li><li><a href="https://juejin.cn/post/7115634967945674765" target="_blank" rel="noopener noreferrer">Umi Core Maintainers，月榜作者，晋升 P8，来听我碎碎念如何｜2022 年中总结</a></li><li><a href="https://juejin.cn/post/7116141318853623839" target="_blank" rel="noopener noreferrer">为什么 React 的 Diff 算法不采用 Vue 的双端对比算法</a></li><li><a href="https://juejin.cn/post/7121378029682556958" target="_blank" rel="noopener noreferrer">「万字总结」🍒动画 + 大白话讲清楚React渲染原理</a></li></ul><ul><li><a href="https://juejin.cn/post/7094984070999834655" target="_blank" rel="noopener noreferrer">面试官：你会看 Vite 源码吗</a></li><li><a href="https://juejin.cn/post/7147939014870302756" target="_blank" rel="noopener noreferrer">给想转Go或者Go进阶同学的一些建议</a></li><li><a href="https://juejin.cn/post/7117512204059934733" target="_blank" rel="noopener noreferrer">react18新特性及实践总结</a></li><li><a href="https://juejin.cn/post/7118937685653192735" target="_blank" rel="noopener noreferrer">「React 进阶」 React 全部 Hooks 使用大全 （包含 React v18 版本 ）</a></li><li><a href="https://juejin.cn/post/6944863057000529933" target="_blank" rel="noopener noreferrer">「react进阶」一文吃透react-hooks原理</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="-小目标">📒 小目标<a href="#-小目标" class="hash-link" aria-label="Direct link to 📒 小目标" title="Direct link to 📒 小目标">​</a></h2><ul><li>Vue 3.x 源码；</li><li>Vuex 4.x 源码；</li><li>Vue-Router 源码；</li><li>搭建脚手架工具（Webpack5 新特性实践）；</li><li>VS Code extension ；</li><li>cocos 游戏开发；</li><li>手写 redux 源码；</li><li>手写 redux-thunk 源码；</li><li>手写 Promise/A+ ；<ul><li><a href="https://juejin.cn/post/6844904116913700877" target="_blank" rel="noopener noreferrer">手写一个Promise/A+,完美通过官方872个测试用例</a></li><li><a href="https://juejin.cn/post/6945319439772434469" target="_blank" rel="noopener noreferrer">从一道让我失眠的 Promise 面试题开始，深入分析 Promise 实现细节</a></li><li><a href="https://juejin.cn/post/7055202073511460895" target="_blank" rel="noopener noreferrer">V8 Promise源码全面解读，其实你对Promise一无所知</a></li><li><a href="https://juejin.cn/post/6844904094079926286" target="_blank" rel="noopener noreferrer">最简实现Promise，支持异步链式调用（20行）</a></li><li><a href="https://juejin.cn/post/7043758954496655397" target="_blank" rel="noopener noreferrer">手把手一行一行代码教你“手写Promise“，完美通过 Promises/A+ 官方872个测试用例</a></li></ul></li><li>排序算法，桶排序、计数排序，时间复杂度 O(n) ；</li><li>每日算法<ul><li><a href="https://labuladong.gitee.io/algo/" target="_blank" rel="noopener noreferrer">https://labuladong.gitee.io/algo/</a>（国内速度快，体验好，推荐）</li><li><a href="https://labuladong.github.io/algo/" target="_blank" rel="noopener noreferrer">https://labuladong.github.io/algo/</a></li><li><a href="https://mp.weixin.qq.com/s/AzQzw-pC8A-0kS0NJn2eWw" target="_blank" rel="noopener noreferrer">手把手刷二叉树系列完结篇</a></li><li><a href="https://mp.weixin.qq.com/s/hGrTUmM1zusPZZ0nA9aaNw" target="_blank" rel="noopener noreferrer">前缀树算法模板秒杀 5 道算法题</a></li><li><a href="https://mp.weixin.qq.com/s/5GO2ZITncVArdm4KITBd9g" target="_blank" rel="noopener noreferrer">集合划分问题：排列组合中的回溯思想（修订版）</a></li><li><a href="https://mp.weixin.qq.com/s/8ZTMhvHJK_He48PpSt_AmQ" target="_blank" rel="noopener noreferrer">快速排序的正确理解方式及运用</a></li><li><a href="https://mp.weixin.qq.com/s/dg4WI2eJzh6b3OAzHN0q3A" target="_blank" rel="noopener noreferrer">十道腾讯算法真题解析！</a></li><li><a href="https://mp.weixin.qq.com/s/njl6nuid0aalZdH5tuDpqQ" target="_blank" rel="noopener noreferrer">一文秒杀 5 道最近公共祖先问题</a></li><li><a href="https://mp.weixin.qq.com/s/OQAzopRncZe5cb9_of4mCQ" target="_blank" rel="noopener noreferrer">算法时空复杂度分析实用指南</a></li><li><a href="https://mp.weixin.qq.com/s/zhaurXhrAiHsfgGAOfAuMw" target="_blank" rel="noopener noreferrer">动态规划答疑篇（修订版）</a></li><li><a href="https://mp.weixin.qq.com/s/6vwNBr48D36n6E3EawFUqg" target="_blank" rel="noopener noreferrer">论动态规划穷举的两种视角</a></li><li><a href="https://mp.weixin.qq.com/s/iL7tCl6pqw0fTatGSemY-g" target="_blank" rel="noopener noreferrer">高频面试系列：单词拆分问题</a></li><li><a href="https://mp.weixin.qq.com/s/HiEft8sW5QzHcM5mb5_V6g" target="_blank" rel="noopener noreferrer">别用 KMP 了， Rabin-Karp 算法了解下</a></li><li><a href="https://mp.weixin.qq.com/s/XXsWwDml_zHiTEFPZtbe3g" target="_blank" rel="noopener noreferrer">微软面试题解析：丑数系列算法</a></li><li><a href="https://mp.weixin.qq.com/s/vxQDGfshcSVjs9EYmV8q3Q" target="_blank" rel="noopener noreferrer">说透游戏中常用的两种随机算法</a></li><li><a href="https://mp.weixin.qq.com/s/kI0HUTFVr4YEBpLRZWLEDg" target="_blank" rel="noopener noreferrer">我用消息队列做了一款联机小游戏</a></li><li><a href="https://mp.weixin.qq.com/s/mFLCL_Dyz5-CtZMZJmOXKw" target="_blank" rel="noopener noreferrer">Union Find 并查集算法原理及应用</a></li><li><a href="https://mp.weixin.qq.com/s/4vHfaNnn1OpWQJcsssWWdQ" target="_blank" rel="noopener noreferrer">必知必会位运算技巧手册</a></li><li><a href="https://juejin.cn/post/7152708637817831432" target="_blank" rel="noopener noreferrer">【面试高频题】难度 1.5/5，多解法经典面试题</a></li><li><a href="https://mp.weixin.qq.com/s/ir1Hk06HcT8W_qz0MtyONA" target="_blank" rel="noopener noreferrer">2021 公众号精选文章目录</a></li></ul></li><li>看下面的文章，手写一个 Webpack<ul><li><a href="https://juejin.cn/post/6930877602840182791" target="_blank" rel="noopener noreferrer">手写一个webpack，看看AST怎么用｜牛气冲天新年征文</a></li><li><a href="https://juejin.cn/post/6987036612035084296" target="_blank" rel="noopener noreferrer">今天，我们来实现一个基础版的webpack</a></li><li><a href="https://juejin.cn/post/6854573217336541192" target="_blank" rel="noopener noreferrer">手写webpack核心原理，再也不怕面试官问我webpack原理</a></li></ul></li><li>Webapck 编译流程<ul><li>⭐️ <a href="https://juejin.cn/book/7115598540721618944" target="_blank" rel="noopener noreferrer">Webpack5 核心原理与应用实践</a></li><li><a href="https://juejin.cn/post/7031546400034947108" target="_blank" rel="noopener noreferrer">Webapck5核心打包原理全流程解析</a></li><li><a href="https://juejin.cn/post/7026658230365323301" target="_blank" rel="noopener noreferrer">跟着源码了解Webpack编译流程</a></li><li><a href="https://juejin.cn/post/6859538537830858759" target="_blank" rel="noopener noreferrer">面试官：webpack原理都不会？</a></li><li><a href="https://juejin.cn/post/7077484559893266439" target="_blank" rel="noopener noreferrer">100行代码实现一个组件引用次数统计插件</a></li><li><a href="https://github.com/ronami/minipack" target="_blank" rel="noopener noreferrer">https://github.com/ronami/minipack</a></li></ul></li><li>手把手实现一个 babel 插件<ul><li>Babel 插件常用 API、配合 TS 开发、如何测试插件等等<ul><li>⭐️ <a href="https://juejin.cn/post/7143921535445631012" target="_blank" rel="noopener noreferrer">Babel 插件：30分钟从入门到实战</a></li></ul></li><li>这篇做的 demo 是一个简单的 babel-plugin-import<ul><li><a href="https://juejin.cn/post/6844903746804137991" target="_blank" rel="noopener noreferrer">深入Babel，这一篇就够了</a></li></ul></li><li>这篇做的 demo 类似 Java 中的 lambok<ul><li><a href="https://juejin.cn/post/7012424646247055390" target="_blank" rel="noopener noreferrer">保姆级教学！这次一定学会babel插件开发！</a></li></ul></li><li><a href="https://github.com/jamiebuilds/babel-handbook/blob/master/translations/en/plugin-handbook.md" target="_blank" rel="noopener noreferrer">babel-handbook - 各种 ast 操作指南</a></li><li><a href="https://mp.weixin.qq.com/s/R6Xr8SoJicZB8-P4H2SSPA" target="_blank" rel="noopener noreferrer">你还在手动部署埋点吗？从0到1开发Babel埋点自动植入插件</a></li><li><a href="https://juejin.cn/post/7061808830274863118" target="_blank" rel="noopener noreferrer">操作 JavaScript 的 AST</a></li><li><a href="https://juejin.cn/post/6953963506693570573" target="_blank" rel="noopener noreferrer">前端也要懂编译：AST 从入门到上手指南</a></li><li><a href="https://juejin.cn/post/7026671646555504676" target="_blank" rel="noopener noreferrer">让 AST 操作像呼吸一样自然</a></li></ul></li><li>diff 算法相关<ul><li><a href="https://github.com/snabbdom/snabbdom" target="_blank" rel="noopener noreferrer">https://github.com/snabbdom/snabbdom</a></li><li><a href="https://github.com/snabbdom/snabbdom/blob/master/src/init.ts" target="_blank" rel="noopener noreferrer">https://github.com/snabbdom/snabbdom/blob/master/src/init.ts</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/8M-pJdKjF6bx5ijtSFKIcw" target="_blank" rel="noopener noreferrer">图解Diff算法——Vue篇</a></li><li>⭐️ <a href="https://juejin.cn/post/7067693810918096903" target="_blank" rel="noopener noreferrer">浅析 Snabbdom 中 vnode 和 diff 算法</a></li><li><a href="https://juejin.cn/post/7161063643105198093" target="_blank" rel="noopener noreferrer">一文吃透 React 和 Vue 的多节点 diff 原理</a></li><li><a href="https://juejin.cn/post/6997965021401579556" target="_blank" rel="noopener noreferrer">diff 算法深入一下？</a></li><li><a href="https://juejin.cn/post/7000266544181674014" target="_blank" rel="noopener noreferrer">DIff算法看不懂就一起来砍我(带图)</a></li><li><a href="https://juejin.cn/post/6966215704634720287" target="_blank" rel="noopener noreferrer">关于Virtual DOM理解和Snabbdom源码浅析</a></li><li><a href="https://github.com/shfshanyue/mini-code/blob/master/code/vdom/index.js" target="_blank" rel="noopener noreferrer">shanyue mini-code vdom</a></li><li><a href="https://juejin.cn/post/6976232466059100197" target="_blank" rel="noopener noreferrer">Virtual DOM到底有什么迷人之处？如何搭建一款迷你版Virtual DOM库？</a></li><li><a href="https://juejin.cn/post/6919376064833667080" target="_blank" rel="noopener noreferrer">React、Vue2、Vue3的三种Diff算法</a></li><li><a href="https://www.zhihu.com/question/31809713/answer/53544875" target="_blank" rel="noopener noreferrer">网上都说操作真实 DOM 慢，但测试结果却比 React 更快，为什么？- 知乎</a></li></ul></li><li>webpack 热模块替换看下源码<ul><li><a href="https://juejin.cn/post/7049608872553611301" target="_blank" rel="noopener noreferrer">webpack模块热更新原理</a></li><li><a href="https://juejin.cn/post/7021729340945596424" target="_blank" rel="noopener noreferrer">Webpack 原理系列十：HMR 原理全解析</a></li><li><a href="https://juejin.cn/post/7031546400034947108" target="_blank" rel="noopener noreferrer">Webapck5核心打包原理全流程解析</a></li></ul></li><li>Docker 相关总结一下<ul><li><a href="https://juejin.cn/post/7064906701941506061" target="_blank" rel="noopener noreferrer">GitLab CI 从入门到实践</a></li><li><a href="https://mp.weixin.qq.com/s/5LLX__x-yamgR83e0NKAtA" target="_blank" rel="noopener noreferrer">写给前端的 Docker 上手指南</a></li><li><a href="https://mp.weixin.qq.com/s/0Il5o9CRgZI3LbuR0LjAtQ" target="_blank" rel="noopener noreferrer">写给前端的 K8S 上手指南</a></li><li><a href="https://juejin.cn/post/7069609959985512484" target="_blank" rel="noopener noreferrer">前端抢饭碗系列之初识Docker容器化部署</a></li><li><a href="https://juejin.cn/post/7083009375387779085" target="_blank" rel="noopener noreferrer">前端抢饭碗系列之Docker进阶部署</a></li><li><a href="https://juejin.cn/post/7113712658850775048" target="_blank" rel="noopener noreferrer">前端抢饭碗系列之Docker容器编排</a></li><li><a href="https://mp.weixin.qq.com/s/f581rfvKWE3KGgWfZDJ2cA" target="_blank" rel="noopener noreferrer">云计算时代，你还不会 Docker ？ 一万字总结（建议收藏）</a></li></ul></li><li>前端框架源码<ul><li>⭐️ ⭐️ <a href="https://juejin.cn/book/6945998773818490884" target="_blank" rel="noopener noreferrer">React 进阶实践指南</a></li><li>⭐️ <a href="https://juejin.cn/post/7117512204059934733" target="_blank" rel="noopener noreferrer">react18新特性及实践总结</a></li><li>⭐️ <a href="https://juejin.cn/post/7122617883837857806" target="_blank" rel="noopener noreferrer">「React进阶」React中没有keepalive？没事！手把手教你从零到一设计并实现一个！</a></li><li>⭐️ <a href="https://juejin.cn/post/7118937685653192735" target="_blank" rel="noopener noreferrer">「React 进阶」 React 全部 Hooks 使用大全 （包含 React v18 版本 ）</a></li><li>⭐️ <a href="https://juejin.cn/post/7069555976717729805" target="_blank" rel="noopener noreferrer">「React进阶」react-router v6 通关指南</a></li><li>⭐️ <a href="https://juejin.cn/post/6944863057000529933" target="_blank" rel="noopener noreferrer">「react进阶」一文吃透react-hooks原理</a></li><li>⭐️ <a href="https://juejin.cn/post/7085542534943883301" target="_blank" rel="noopener noreferrer">2022 年的 React 生态</a></li><li>⭐️ <a href="https://juejin.cn/post/7010539227284766751" target="_blank" rel="noopener noreferrer">React 运行时优化方案的演进</a></li><li>🌛 <a href="https://overreacted.io/before-you-memo/" target="_blank" rel="noopener noreferrer">Before You memo()</a></li><li>🌛 <a href="https://7kms.github.io/react-illustration-series/main/fibertree-update/#bailout%E9%80%BB%E8%BE%91-bailout" target="_blank" rel="noopener noreferrer">图解 React - bailout逻辑</a></li><li>🌛 <a href="https://www.zhihu.com/question/434791954/answer/2453356416" target="_blank" rel="noopener noreferrer">React 的 Concurrent Mode 是否有过度设计的成分</a></li><li>🌛 <a href="https://www.bilibili.com/video/BV1Yr4y1J7oc" target="_blank" rel="noopener noreferrer">「上集」React性能优化，你需要知道的一切</a></li><li>🌛 <a href="https://www.bilibili.com/video/BV1j44y1g74m" target="_blank" rel="noopener noreferrer">「下集」React性能优化，你需要知道的一切</a></li><li>🌛 <a href="https://pomb.us/build-your-own-react/" target="_blank" rel="noopener noreferrer">Build your own React</a></li><li><a href="https://juejin.cn/post/6844903913410314247" target="_blank" rel="noopener noreferrer">Vue 项目性能优化 — 实践指南（网上最全 / 详细）</a></li><li><a href="https://juejin.cn/post/7121378029682556958" target="_blank" rel="noopener noreferrer">「万字总结」🍒动画 + 大白话讲清楚React渲染原理</a></li><li><a href="https://juejin.cn/post/7154175507280429070" target="_blank" rel="noopener noreferrer">React 渲染的未来</a></li><li><a href="https://mp.weixin.qq.com/s/METf8Ng6Qnsu1uWGTzan8g" target="_blank" rel="noopener noreferrer">React 中常见的 8 个错误，如何避免</a></li><li><a href="https://juejin.cn/post/7104460511869141006" target="_blank" rel="noopener noreferrer">20个GitHub仓库助你成为React大师</a></li><li><a href="https://juejin.cn/post/7094424941541457933" target="_blank" rel="noopener noreferrer">React官方团队出手，补齐原生Hook短板</a></li><li><a href="https://juejin.cn/post/7075701341997236261" target="_blank" rel="noopener noreferrer">React Hooks 的原理，有的简单有的不简单</a></li><li><a href="https://juejin.cn/post/6844904193044512782" target="_blank" rel="noopener noreferrer">从react hooks“闭包陷阱”切入，浅谈react hooks</a></li><li><a href="https://mp.weixin.qq.com/s/7LXeQomcHK4zcuRqB32JDg" target="_blank" rel="noopener noreferrer">React+Ts，这样学起来确实简单！！！</a></li><li><a href="https://mp.weixin.qq.com/s/byD6xm3O6MzX8kksjBmqpA" target="_blank" rel="noopener noreferrer">React 18 超全升级指南</a></li><li><a href="https://juejin.cn/post/7077545184807878692" target="_blank" rel="noopener noreferrer">阿里三面：灵魂拷问——有react fiber，为什么不需要vue fiber呢</a></li><li><a href="https://juejin.cn/post/6982004709145968677" target="_blank" rel="noopener noreferrer">[<!-- -->建议收藏<!-- -->]<!-- --> 你想知道的Vue3核心源码这里都有</a></li><li><a href="https://juejin.cn/post/6978654109893132318" target="_blank" rel="noopener noreferrer">手写系列-实现一个铂金段位的 React</a></li><li><a href="https://juejin.cn/post/6844904197008130062" target="_blank" rel="noopener noreferrer">手写React的Fiber架构，深入理解其原理</a></li><li><a href="https://juejin.cn/post/6859528127010471949" target="_blank" rel="noopener noreferrer">React Fiber 源码解析</a></li><li><a href="https://juejin.cn/post/6943896410987659277" target="_blank" rel="noopener noreferrer">走进React Fiber的世界</a></li><li><a href="https://juejin.cn/post/6911681589558640654" target="_blank" rel="noopener noreferrer">前端工程师的自我修养：React Fiber 是如何实现更新过程可控的</a></li><li><a href="https://juejin.cn/post/6984949525928476703" target="_blank" rel="noopener noreferrer">React Fiber很难？六个问题助你理解 React Fiber</a></li></ul></li><li>Vite 源码<ul><li>⭐️ <a href="https://juejin.cn/book/7050063811973218341" target="_blank" rel="noopener noreferrer">深入浅出 Vite</a></li><li><a href="https://mp.weixin.qq.com/s/UD0-7rWtOAxMuDpOR77gug" target="_blank" rel="noopener noreferrer">详解 Vite 依赖预构建流程</a></li><li><a href="https://mp.weixin.qq.com/s/bf11t1rH6NllKDA0IKR9Lw" target="_blank" rel="noopener noreferrer">授人予渔，VSCode 如何调试 Vite 代码</a></li><li><a href="https://mp.weixin.qq.com/s/3dfbu7lZJLd6cJSp9XLcVQ" target="_blank" rel="noopener noreferrer">敲下 vite 命令后，server 做了哪些事</a></li></ul></li><li>包管理方案、PNPM</li><li>Arch Linux<ul><li><a href="https://linuxhandbook.com/grep-command-examples/" target="_blank" rel="noopener noreferrer">10 Practical Grep Command Examples for Developers</a></li><li><a href="https://www.freecodecamp.org/news/the-linux-commands-handbook/#the-linux-grep-command" target="_blank" rel="noopener noreferrer">The Linux Command Handbook – Learn Linux Commands for Beginners</a></li></ul></li><li>如何搭建个人博客<ul><li>使用 Next.js，开箱即用文件系统路由、静态站点生成（SSG）</li><li><a href="https://nextjs.org/learn/basics/create-nextjs-app" target="_blank" rel="noopener noreferrer">https://nextjs.org/learn/basics/create-nextjs-app</a></li></ul></li><li>工程化方案总结下<ul><li><a href="https://zhuanlan.zhihu.com/p/403970666" target="_blank" rel="noopener noreferrer">2021 年 TypeScript + React 工程化指南</a></li><li><a href="https://juejin.cn/post/7017710911443959839" target="_blank" rel="noopener noreferrer">2021 年当我们聊前端部署时，我们在聊什么</a></li><li><a href="https://juejin.cn/post/7023242274876162084" target="_blank" rel="noopener noreferrer">🔥【万字】透过分析 webpack 面试题，构建 webpack5.x 知识体系</a></li><li><a href="https://github.com/vercel/next.js/blob/canary/packages/next/build/webpack-config.ts" target="_blank" rel="noopener noreferrer">Next.js webpack 配置</a></li></ul></li><li>静态页面部署方案<ul><li>上传阿里云 OSS
<a href="https://github.com/Menci/upload-to-oss" target="_blank" rel="noopener noreferrer">https://github.com/Menci/upload-to-oss</a></li></ul></li><li><a href="https://juejin.cn/post/6992172458748936222" target="_blank" rel="noopener noreferrer">面向未来的前端开发模式 - 写于2021年</a></li><li><a href="https://juejin.cn/post/6990538424545443854" target="_blank" rel="noopener noreferrer">从零搭建Webpack5-react脚手架(附源码)</a></li><li><a href="https://github.com/JinJieTan/Peter-" target="_blank" rel="noopener noreferrer">手写各种源码</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="-推荐阅读">📒 推荐阅读<a href="#-推荐阅读" class="hash-link" aria-label="Direct link to 📒 推荐阅读" title="Direct link to 📒 推荐阅读">​</a></h2><ul><li><a href="https://zhuanlan.zhihu.com/p/403970666" target="_blank" rel="noopener noreferrer">2021 年 TypeScript + React 工程化指南</a></li><li><a href="https://juejin.cn/post/6996816316875161637#heading-15" target="_blank" rel="noopener noreferrer">学习 Webpack5 之路（优化篇）- 近 7k 字</a></li><li><a href="https://github.com/webpack/webpack-dev-middleware" target="_blank" rel="noopener noreferrer">https://github.com/webpack/webpack-dev-middleware</a></li><li><a href="https://segmentfault.com/a/1190000011761306" target="_blank" rel="noopener noreferrer">webpack-dev-middleware 插件的使用</a></li><li><a href="https://juejin.cn/post/6844904099985489927" target="_blank" rel="noopener noreferrer">webpack-dev-middleware 源码解读</a></li><li><a href="https://juejin.cn/post/6949040393165996040#heading-2" target="_blank" rel="noopener noreferrer">[<!-- -->万字总结<!-- -->]<!-- --> 一文吃透 Webpack 核心原理</a></li><li><a href="https://juejin.cn/post/7020678344219820068" target="_blank" rel="noopener noreferrer">跟村长老师做【Vue DevUI 开源指南】直播一个月的感受</a></li><li><a href="https://juejin.cn/post/7021167384484380709" target="_blank" rel="noopener noreferrer">工程化知识卡片 008: webpack HMR 实现的核心原理</a></li><li><a href="https://juejin.cn/post/7030207667457130527" target="_blank" rel="noopener noreferrer">基于 Lerna 实现 Monorepo 项目管理</a></li><li><a href="https://juejin.cn/post/6959115798841393160" target="_blank" rel="noopener noreferrer">手摸手教你用Vue3+Typescript+Rollup+Tailwinds打造插拔式的业务组件库</a></li><li><a href="https://juejin.cn/post/6869551115420041229" target="_blank" rel="noopener noreferrer">一文带你快速上手Rollup</a></li><li>🌛 <a href="https://juejin.cn/post/7029525775321661470" target="_blank" rel="noopener noreferrer">手摸手学会搭建一个 TS+Rollup 的初始开发环境</a></li><li><a href="https://juejin.cn/post/7029292539479867429" target="_blank" rel="noopener noreferrer">【我要做开源】Vue DevUI开源指南08：如何实现组件的按需打包📦</a></li><li><a href="https://juejin.cn/post/7029262501833359368" target="_blank" rel="noopener noreferrer">【我要做开源】Vue DevUI开源指南08：Monorepo改造</a></li><li><a href="https://juejin.cn/post/6974377246140301342" target="_blank" rel="noopener noreferrer">coding优雅指南：函数式编程</a></li><li><a href="https://juejin.cn/post/6892886272377880583" target="_blank" rel="noopener noreferrer">这些高阶的函数技术，你掌握了么</a></li><li>🌛 <a href="https://juejin.cn/post/7028222480326066213" target="_blank" rel="noopener noreferrer">使用Docker Compose、Nginx、SSH和Github Actions实现前端自动化部署测试机</a></li><li><a href="https://juejin.cn/post/6844904093434019853" target="_blank" rel="noopener noreferrer">如何推动前端团队的基础设施建设</a></li><li>⭐️ <a href="https://juejin.cn/post/6966491047257964575" target="_blank" rel="noopener noreferrer">Element UI源码中学到的技巧</a></li><li><a href="https://juejin.cn/post/7026658230365323301" target="_blank" rel="noopener noreferrer">跟着源码了解Webpack编译流程</a></li><li><a href="https://juejin.cn/post/6859538537830858759" target="_blank" rel="noopener noreferrer">面试官：webpack原理都不会？</a></li><li><a href="https://juejin.cn/post/7026671646555504676" target="_blank" rel="noopener noreferrer">让 AST 操作像呼吸一样自然</a></li><li><a href="https://juejin.cn/post/6920044884594425864" target="_blank" rel="noopener noreferrer">从零撸一个CLI命令行脚手架工具</a></li><li><a href="https://juejin.cn/post/6844904197863964685" target="_blank" rel="noopener noreferrer">从 Element UI 源码的构建流程来看前端 UI 库设计</a></li><li><a href="https://juejin.cn/post/6943430853972852750" target="_blank" rel="noopener noreferrer">那些年错过的React组件单元测试（上）</a></li><li><a href="https://juejin.cn/post/6946008649026240519" target="_blank" rel="noopener noreferrer">那些年错过的React组件单元测试（下）</a></li><li><a href="https://juejin.cn/post/7026274816734789663" target="_blank" rel="noopener noreferrer">git hooks 的库 husky 源码这么简单，你也可以实现一个！</a></li><li><a href="https://juejin.cn/post/7026210002042011655" target="_blank" rel="noopener noreferrer">「React18新特性」深度解读之useMutableSource</a></li><li><a href="https://juejin.cn/post/6953452438300917790" target="_blank" rel="noopener noreferrer">【V8源码补充篇】从一道让我失眠的 Promise 面试题开始，深入分析 Promise 实现细节</a></li><li><a href="https://juejin.cn/post/6966422095274180639" target="_blank" rel="noopener noreferrer">[<!-- -->探索<!-- -->]<!-- -->Webpack DevServer和HMR原理</a></li><li><a href="https://juejin.cn/post/7023242274876162084" target="_blank" rel="noopener noreferrer">【万字】透过分析 webpack 面试题，构建 webpack5.x 知识体系</a></li><li><a href="https://juejin.cn/post/6844903881390964744" target="_blank" rel="noopener noreferrer">从头开始，彻底理解服务端渲染原理(8千字汇总长文)</a></li><li><a href="https://juejin.cn/post/6982157120594509837" target="_blank" rel="noopener noreferrer">剖析 Webpack SplitChunksPlugin 源码: 学完你也能写一个</a></li><li><a href="https://juejin.cn/post/7025164660751990798" target="_blank" rel="noopener noreferrer">一点关于服务端渲染的分享</a></li><li><a href="https://juejin.cn/post/6966119324478079007" target="_blank" rel="noopener noreferrer">从 0 构建自己的脚手架/CLI知识体系（万字） 🛠</a></li><li><a href="https://juejin.cn/post/6984939221681176607" target="_blank" rel="noopener noreferrer">手写一个虚拟DOM库，彻底让你理解diff算法</a></li><li><a href="https://juejin.cn/post/6854573215969181703" target="_blank" rel="noopener noreferrer">10个简单的技巧让你的 vue.js 代码更优雅🍊</a></li><li><a href="https://juejin.cn/post/7026119446162997261" target="_blank" rel="noopener noreferrer">在 Vue 中为什么不推荐用 index 做 key</a></li><li><a href="https://www.zhihu.com/question/384048633/answer/1134746899" target="_blank" rel="noopener noreferrer">做了两年前端开发，平时就是拿 Vue 写写页面和组件，简历的项目经历应该怎么写得好看？</a></li><li><a href="https://juejin.cn/post/7017710911443959839" target="_blank" rel="noopener noreferrer">2021 年当我们聊前端部署时，我们在聊什么</a></li><li><a href="https://juejin.cn/post/7016534471734198279" target="_blank" rel="noopener noreferrer">分享一年以来的Electron开发经验</a></li><li><a href="https://juejin.cn/post/6844903938894872589" target="_blank" rel="noopener noreferrer">「前端进阶」高性能渲染十万条数据(时间分片)</a></li><li>⭐️ <a href="https://juejin.cn/post/6978654109893132318" target="_blank" rel="noopener noreferrer">手写系列-实现一个铂金段位的 React</a></li><li><a href="https://juejin.cn/post/6973155726302642206" target="_blank" rel="noopener noreferrer">手写系列-这一次，彻底搞懂 Promise</a></li><li><a href="https://juejin.cn/post/7005375860509245471" target="_blank" rel="noopener noreferrer">50行代码串行Promise，koa洋葱模型原来是这么实现？</a></li><li><a href="https://juejin.cn/post/6882290865763680264" target="_blank" rel="noopener noreferrer">玩转 node 子进程 — child_process</a></li><li><a href="https://juejin.cn/post/6844903895467032589" target="_blank" rel="noopener noreferrer">深入剖析：Vue核心之虚拟DOM</a></li><li>⭐️ <a href="https://juejin.cn/post/6844904055618158600" target="_blank" rel="noopener noreferrer">从零开始配置 react + typescript（一）：dotfiles</a></li><li><a href="https://juejin.cn/post/6937125495439900685" target="_blank" rel="noopener noreferrer">Webpack 案例 —— vue-loader 原理分析</a></li><li><a href="https://juejin.cn/post/7025213391618703367" target="_blank" rel="noopener noreferrer">TypeScript 实现斐波那契数列</a></li><li><a href="https://juejin.cn/post/6965320374451961886" target="_blank" rel="noopener noreferrer">用ts类型系统实现斐波那契数列</a></li><li><a href="https://juejin.cn/post/7059400669916037133" target="_blank" rel="noopener noreferrer">初步尝试 tauri，并且与 electron.js 对比</a></li><li><a href="https://juejin.cn/post/7057178581897740319" target="_blank" rel="noopener noreferrer">和大多数的前端开发者相比，我并没有选择node.js做cli而投靠了golang</a></li><li><a href="https://github.com/acdlite/react-fiber-architecture" target="_blank" rel="noopener noreferrer">React Fiber Architecture</a></li><li><a href="https://www.cnblogs.com/ginvip/p/6367939.html" target="_blank" rel="noopener noreferrer">linux命令总结之lsof命令</a></li><li><a href="https://www.smashingmagazine.com/2019/09/machine-learning-front-end-developers-tensorflowjs/" target="_blank" rel="noopener noreferrer">Machine Learning For Front-End Developers With Tensorflow.js</a></li><li><a href="https://mp.weixin.qq.com/s/hP5YMgJTgaVIlaK-XJ3Bcw" target="_blank" rel="noopener noreferrer">javascript的23种设计模式</a></li><li><a href="https://zhuanlan.zhihu.com/p/476712416" target="_blank" rel="noopener noreferrer">我的第一次webpack优化，首屏渲染从9s到1s</a></li><li><a href="https://juejin.cn/post/7071518211392405541" target="_blank" rel="noopener noreferrer">在项目中用ts封装axios，一次封装整个团队受益😁</a></li><li><a href="https://mp.weixin.qq.com/s/usMxG3cAowUtO3Lvn9VjsQ" target="_blank" rel="noopener noreferrer">晋升，如何减少 50%+ 的答辩材料准备时间、调整心态（个人经验总结）</a></li><li><a href="https://mp.weixin.qq.com/s/mz5S1iiRWkk-KKJg5lOOJQ" target="_blank" rel="noopener noreferrer">基于 TypeScript 理解程序设计的 SOLID 原则</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/dg4WI2eJzh6b3OAzHN0q3A" target="_blank" rel="noopener noreferrer">十道腾讯算法真题解析！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/aMYJODhtWsBt9CTJxySQEQ" target="_blank" rel="noopener noreferrer">腾讯云后端15连问！</a></li><li>⭐️ <a href="https://mp.weixin.qq.com/s/0kUf1ujPUuieyOSMsBIzaw" target="_blank" rel="noopener noreferrer">字节国际支付十连问</a></li><li><a href="https://juejin.cn/post/7080032725477883917" target="_blank" rel="noopener noreferrer">如何成为一个优秀的复制粘贴工程师</a></li><li><a href="https://blog.csdn.net/zhydream77/article/details/81909706" target="_blank" rel="noopener noreferrer">docker文件夹映射的两种方式---主机卷映射和共享文件夹映射</a></li><li><a href="https://studygolang.com/articles/25997?fr=sidebar" target="_blank" rel="noopener noreferrer">为什么golang没有min/max以及三元操作符</a></li><li><a href="https://juejin.cn/post/7084882650233569317" target="_blank" rel="noopener noreferrer">编译 ts 代码用 tsc 还是 babel</a></li><li><a href="https://juejin.cn/post/7031122959637217310" target="_blank" rel="noopener noreferrer">如果没有 package-lock.json，那将如何</a></li><li><a href="https://juejin.cn/post/7030084290989948935" target="_blank" rel="noopener noreferrer">工程化知识卡片 023：node_modules 版本重复的困境</a></li><li><a href="https://juejin.cn/post/7083468345579667493" target="_blank" rel="noopener noreferrer">【混淆系列】三问：npx、npm、cnpm、pnpm区别你搞清楚了吗？</a></li><li><a href="https://juejin.cn/post/7082738107237433375" target="_blank" rel="noopener noreferrer">Webpack组件库打包超详细指南</a></li><li><a href="https://mp.weixin.qq.com/s/XWZsKQECcsHAlE9cyqi9Eg" target="_blank" rel="noopener noreferrer">写好 JavaScript 异步代码的几个推荐做法</a></li><li><a href="https://mp.weixin.qq.com/s/WisEGFz2yn_ZeekViofMnA" target="_blank" rel="noopener noreferrer">Node.js 进阶 - 多文件 Stream 合并，串行和并发两种模式实现</a></li><li><a href="https://juejin.cn/post/7046898330000949285" target="_blank" rel="noopener noreferrer">服务端渲染SSR及实现原理</a></li><li><a href="https://mp.weixin.qq.com/s/lyff2svfHh4rdsWRL4H5uA" target="_blank" rel="noopener noreferrer">手摸手服务端渲染-react</a></li><li><a href="https://juejin.cn/post/7058868160706904078" target="_blank" rel="noopener noreferrer">如何在项目中用好 TypeScript</a></li><li><a href="https://mp.weixin.qq.com/s/kGMsNmIXlT25NfRrifjnTQ" target="_blank" rel="noopener noreferrer">选择第三方 NPM 包时的 5 条最佳实践</a></li><li><a href="https://juejin.cn/post/7071066976830881823" target="_blank" rel="noopener noreferrer">用 Redux 做状态管理，真的很简单🦆</a></li><li><a href="https://mp.weixin.qq.com/s/t3dYc3Md1dpiv1vaFa5plA" target="_blank" rel="noopener noreferrer">React 18 全览</a></li><li><a href="https://mp.weixin.qq.com/s/fgT7Kxs_0feRx4TkBe6G5Q" target="_blank" rel="noopener noreferrer">React 18 对 Hooks 的影响</a></li><li><a href="https://mp.weixin.qq.com/s/GatHpP3BRLV_I48MfpzR4A" target="_blank" rel="noopener noreferrer">React 的心智模型</a></li><li><a href="https://mp.weixin.qq.com/s/qyr6MnPtvnELDSbPJ2VtIw" target="_blank" rel="noopener noreferrer">你不知道的 React v18 的任务调度机制</a></li><li><a href="https://segmentfault.com/a/1190000041683300" target="_blank" rel="noopener noreferrer">一些关于react的keep-alive功能相关知识在这里(上)</a></li><li><a href="https://segmentfault.com/a/1190000041683421" target="_blank" rel="noopener noreferrer">一些关于react的keep-alive功能相关知识在这里(下)</a></li><li><a href="https://zhuanlan.zhihu.com/p/502951532" target="_blank" rel="noopener noreferrer">Node.js 18 新特性解读</a></li><li><a href="https://zhuanlan.zhihu.com/p/415361629" target="_blank" rel="noopener noreferrer">那些你应该说再见的 npm 祖传老库</a></li><li><a href="https://mp.weixin.qq.com/s/tWbeOTx0JpiZOD0YaC1P2A" target="_blank" rel="noopener noreferrer">前端算法系统练习: 栈和队列篇</a></li><li><a href="https://mp.weixin.qq.com/s/MYLi4mSgoi5KXj4-_OgT3A" target="_blank" rel="noopener noreferrer">【第2602期】设置 NPM Registry 的 4 种姿势</a></li><li><a href="https://juejin.cn/post/6844903919995322382" target="_blank" rel="noopener noreferrer">「手摸手设计模式系列」 享元模式与资源池</a></li><li><a href="https://juejin.cn/post/6889247428797530126" target="_blank" rel="noopener noreferrer">我在工作中写React，学到了什么？性能优化篇</a></li><li><a href="https://juejin.cn/post/6844904165500518414" target="_blank" rel="noopener noreferrer">React Hooks 最佳实践</a></li><li><a href="https://mp.weixin.qq.com/s/3xhNcfI4pTm0n-naSsOBwg" target="_blank" rel="noopener noreferrer">手写 CSS-modules 来深入理解它的原理</a></li><li><a href="https://www.bilibili.com/video/BV1j44y1g74m" target="_blank" rel="noopener noreferrer">下集」React性能优化，你需要知道的一切</a></li><li><a href="https://mp.weixin.qq.com/s/-B5M7pjIWZzFNvq-hyr1Mw" target="_blank" rel="noopener noreferrer">Umi 4 特性合集，比 Vite 还要快？</a></li><li><a href="https://juejin.cn/post/7094296981001994277" target="_blank" rel="noopener noreferrer">你可能并没有理解的 babel 配置的原理</a></li><li><a href="https://juejin.cn/post/7052307032971411463" target="_blank" rel="noopener noreferrer">从零开始发布自己的NPM包</a></li><li><a href="https://juejin.cn/post/7069609959985512484" target="_blank" rel="noopener noreferrer">前端抢饭碗系列之初识Docker容器化部署</a></li><li><a href="https://juejin.cn/post/7083009375387779085" target="_blank" rel="noopener noreferrer">前端抢饭碗系列之Docker进阶部署</a></li><li><a href="https://mp.weixin.qq.com/s/zt7x2KjMT_cWvLVVa2-Hww" target="_blank" rel="noopener noreferrer">【工程化】探索webpack5中的Module Federation</a></li><li><a href="https://juejin.cn/post/7095354780079357966" target="_blank" rel="noopener noreferrer">NodeJs进阶开发、性能优化指南</a></li><li><a href="https://mp.weixin.qq.com/s/P3mzw_vmOR6K_Mj-963o3g" target="_blank" rel="noopener noreferrer">Tree shaking问题排查指南来啦</a></li><li><a href="https://mp.weixin.qq.com/s/FPupefVg4zphOfIERZOvHQ" target="_blank" rel="noopener noreferrer">如何设计更优雅的 React 组件</a></li><li><a href="https://mp.weixin.qq.com/s/01sTK6w4BFUzoRc2NKCs1w" target="_blank" rel="noopener noreferrer">React 并发渲染的前世今生</a></li><li><a href="https://www.freecodecamp.org/news/how-to-build-your-own-blog-with-next-js-and-mdx/" target="_blank" rel="noopener noreferrer">使用 Next.js 和 MDX 构建你自己的博客</a></li><li><a href="https://mp.weixin.qq.com/s/toQUgqJHeUbFZMtxfzFCxw" target="_blank" rel="noopener noreferrer">TCP 重传、滑动窗口、流量控制、拥塞控好难？看完图解就不愁了</a></li><li><a href="https://mp.weixin.qq.com/s/9kHoRk6QIYOFUR_PCmHY6g" target="_blank" rel="noopener noreferrer">TCP 就没什么缺陷吗？</a></li><li><a href="https://mp.weixin.qq.com/s/ovwjufnPmCoYNLMkv5xv2g" target="_blank" rel="noopener noreferrer">【第2618期】手把手教你定制一套适合团队的微前端体系</a></li><li><a href="https://juejin.cn/post/7099402445989609479" target="_blank" rel="noopener noreferrer">前端必学的动画实现思路，高逼格的效果老板看了都会大声称赞</a></li><li><a href="https://mp.weixin.qq.com/s/LSlgpazCwtceQWjHsMPCAg" target="_blank" rel="noopener noreferrer">【第2617期】React 组件库 CSS 样式方案分析</a></li><li><a href="https://mp.weixin.qq.com/s/X4ni2i9bvolHGfCdf3SzIA" target="_blank" rel="noopener noreferrer">【第2616期】解释JavaScript的内存管理</a></li><li><a href="https://mp.weixin.qq.com/s/OrekHmMrn8UlisTrvt3MNA" target="_blank" rel="noopener noreferrer">从 Turborepo 看 Monorepo 工具的任务编排能力</a></li><li><a href="https://mp.weixin.qq.com/s/GryL1QVARtMB8-WIzd7xQQ" target="_blank" rel="noopener noreferrer">解决前端常见问题：竞态条件</a></li><li><a href="https://mp.weixin.qq.com/s/3v54arsDRRw6agyr3MtPRg" target="_blank" rel="noopener noreferrer">Google 最新的性能优化方案，LCP 提升30%！</a></li><li><a href="https://mp.weixin.qq.com/s/-6bQKIjH6WPcfuiCFtsjng" target="_blank" rel="noopener noreferrer">React useEvent：砖家说的没问题</a></li><li><a href="https://juejin.cn/post/7102328973820067877" target="_blank" rel="noopener noreferrer">被diss性能差，Dan连夜优化React新文档</a></li><li><a href="https://juejin.cn/post/7102233142567632933" target="_blank" rel="noopener noreferrer">Node.js 调试一路走来经历了什么</a></li><li><a href="https://mp.weixin.qq.com/s/g1fr1fnGspi7SETyP9B6rA" target="_blank" rel="noopener noreferrer">推荐一个前端技术选型神器</a></li><li><a href="https://mp.weixin.qq.com/s/2OXIGB5qQFc2isIxhm33bg" target="_blank" rel="noopener noreferrer">最高性能的包管理器-pnpm</a></li><li><a href="https://mp.weixin.qq.com/s/3yy9V5HMDWPFwEf1cyL-lw" target="_blank" rel="noopener noreferrer">并发渲染优化：让文件树的渲染又快又稳</a></li><li><a href="https://juejin.cn/post/7092766235380678687" target="_blank" rel="noopener noreferrer">看了9个开源的 Vue3 组件库，发现了这些前端的流行趋势</a></li><li><a href="https://mp.weixin.qq.com/s/jU0awhez7QzN_nKrm4BNwg" target="_blank" rel="noopener noreferrer">肝了一个月的 DDD，一文带你掌握</a></li><li><a href="https://mp.weixin.qq.com/s/KwmNzTdjMB-ljQ0ysEGalg" target="_blank" rel="noopener noreferrer">深入理解 Linux CPU 上下文切换</a></li><li><a href="https://mp.weixin.qq.com/s/hVh5PIVaOeLyErZDPXx6mg" target="_blank" rel="noopener noreferrer">面试必备！TCP协议经典十五连问</a></li><li><a href="https://github.com/ashok-khanna/react-snippets/blob/main/Router.js" target="_blank" rel="noopener noreferrer">100 行代码实现 React 路由</a></li><li><a href="https://juejin.cn/post/7100736564979826695" target="_blank" rel="noopener noreferrer">精读《react-snippets - Router 源码》</a></li><li><a href="https://mp.weixin.qq.com/s/QWwb8PXtdJJUKyicHRmBkw" target="_blank" rel="noopener noreferrer">干货 | 携程机票前端Svelte生产实践</a></li><li><a href="https://juejin.cn/post/7069772395610898462" target="_blank" rel="noopener noreferrer">从arco-design的collapse组件分析如何吸收开源项目的知识</a></li><li><a href="https://juejin.cn/post/7101457212085633054" target="_blank" rel="noopener noreferrer">模块联邦浅析</a></li><li><a href="https://mp.weixin.qq.com/s/yu1tKtwneoTI9eSGS4us-g" target="_blank" rel="noopener noreferrer">我们是怎么在项目中落地qiankun的</a></li><li><a href="https://mp.weixin.qq.com/s/ULY-_Vq-Jgb8aCbhyfqYHw" target="_blank" rel="noopener noreferrer">【零基础】充分理解WebGL（三）</a></li><li><a href="https://mp.weixin.qq.com/s/ROwTG6AC2pK5UN1dzY5x8w" target="_blank" rel="noopener noreferrer">Web3.0开发入门</a></li><li><a href="https://mp.weixin.qq.com/s/DswfPb6J1w2B_MWj1TjyOg" target="_blank" rel="noopener noreferrer">从源码中来，到业务中去，React性能优化终极指南</a></li><li><a href="https://mp.weixin.qq.com/s/l19wbHNIrhjyD0HwJwuvmQ" target="_blank" rel="noopener noreferrer">剖析React核心设计原理—Virtual Dom</a></li><li><a href="https://mp.weixin.qq.com/s/b15cyyg53lVKQ_TtR8hugQ" target="_blank" rel="noopener noreferrer">【第2630期】javascript中的依赖注入</a></li><li><a href="https://mp.weixin.qq.com/s/sEvP3nLUOBwbSHP9mmT__A" target="_blank" rel="noopener noreferrer">【前端部署附录一】写给前端的 docker 使用指南</a></li><li><a href="https://mp.weixin.qq.com/s/f8mYoozpLrnSfWcRHTMa7A" target="_blank" rel="noopener noreferrer">UMI3源码解析系列之核心service类初始化</a></li><li><a href="https://mp.weixin.qq.com/s/y-6Uf1hNBF19MabHEtqnJA" target="_blank" rel="noopener noreferrer">UMI3源码解析系列之插件化架构核心</a></li><li><a href="https://mp.weixin.qq.com/s/4cZ3rJz4P5bSRSeXDbFoMQ" target="_blank" rel="noopener noreferrer">UMI3源码解析系列之运行时插件机制</a></li><li><a href="https://mp.weixin.qq.com/s/2MsgPh9AZtUoJpsLLdOynQ" target="_blank" rel="noopener noreferrer">UMI3源码解析系列之构建原理</a></li><li><a href="https://mp.weixin.qq.com/s/Sz8u6lzkL1nnpRxGrdbYJg" target="_blank" rel="noopener noreferrer">如何华丽的实现一套脚手架 - 以umicli和转转zzcli为例</a></li><li><a href="https://www.yuque.com/antfe/featured/uf1bok" target="_blank" rel="noopener noreferrer">Umi 4 特性 05：稳定白盒性能好的 ESLint</a></li><li><a href="https://mp.weixin.qq.com/s/ZTI-8RI0l314Ki9oBxqRWw" target="_blank" rel="noopener noreferrer">深入浅出 npm &amp; yarn &amp; pnpm 包管理机制</a></li><li><a href="https://mp.weixin.qq.com/s/LL6VZj36PKftbwaybBFmXg" target="_blank" rel="noopener noreferrer">一文带你进入微前端世界</a></li><li><a href="https://www.youtube.com/watch?v=VozPNrt-LfE" target="_blank" rel="noopener noreferrer">一个三小时的 React Native 速成课</a></li><li><a href="https://juejin.cn/post/7098211898990002207" target="_blank" rel="noopener noreferrer">前端配置化真香～上班又多了60%的摸🐟时间</a></li><li><a href="https://juejin.cn/post/7104460511869141006" target="_blank" rel="noopener noreferrer">20个GitHub仓库助你成为React大师</a></li><li><a href="https://juejin.cn/post/7116296421816418311" target="_blank" rel="noopener noreferrer">Vue 编译三部曲：如何将 template 编译成 AST</a></li><li><a href="https://juejin.cn/post/7117085295798911012" target="_blank" rel="noopener noreferrer">Vue 编译三部曲：模型树优化</a></li><li><a href="https://juejin.cn/post/7121504219588198413" target="_blank" rel="noopener noreferrer">Vue 编译三部曲：最后一曲，render code 生成</a></li><li><a href="https://juejin.cn/post/7124890499478978597" target="_blank" rel="noopener noreferrer">初探 Vue3 编译之美</a></li><li><a href="https://juejin.cn/post/7126712173014810661" target="_blank" rel="noopener noreferrer">Vue3 编译之美，抽象语法树的生成</a></li><li><a href="https://juejin.cn/post/7127074001897127943" target="_blank" rel="noopener noreferrer">Vue3 编译之美，空白字符的处理</a></li><li><a href="https://mp.weixin.qq.com/s/5AnRvwmA-U76T52FR47w8Q" target="_blank" rel="noopener noreferrer">在撸 Vue 的 ⌘+K 唤起菜单库时，我学到了很多</a></li><li><a href="https://turborepo.org/docs/handbook/what-is-a-monorepo" target="_blank" rel="noopener noreferrer">Monorepo Handbook 新鲜出炉</a></li><li><a href="https://juejin.cn/post/7152045316294836260" target="_blank" rel="noopener noreferrer">Vue3组件库打包指南，一次生成esm、esm-bundle、commonjs、umd四种格式</a></li><li><a href="https://juejin.cn/post/6844904039608500237" target="_blank" rel="noopener noreferrer">Koa的洋葱中间件，Redux的中间件，Axios的拦截器让你迷惑吗？实现一个精简版的就彻底搞懂了</a></li><li><a href="https://mp.weixin.qq.com/s/khS0wkBzQe4Lxn7jHK_0vA" target="_blank" rel="noopener noreferrer">学习 Babel 插件，把 Vue2 语法自动转成 Vue3！</a></li><li><a href="https://mp.weixin.qq.com/s/QgOslh1TwpU2cJubnNxYNw" target="_blank" rel="noopener noreferrer">如何编写神奇的「插件机制」，优化基于 Antd Table 封装表格的混乱代码</a></li><li><a href="https://juejin.cn/post/7121378029682556958" target="_blank" rel="noopener noreferrer">「万字总结」🍒动画 + 大白话讲清楚React渲染原理</a></li><li><a href="https://juejin.cn/post/7123969545387114509" target="_blank" rel="noopener noreferrer">耽误你十分钟！🎃你可能用得上这些webpack5新特性</a></li><li><a href="https://juejin.cn/post/7118782372220567566" target="_blank" rel="noopener noreferrer">分包王！🧨优化项目体积减少20%！</a></li><li><a href="https://juejin.cn/post/7148969678642102286" target="_blank" rel="noopener noreferrer">Three.js 进阶之旅：模型光源结合生成明暗变化的创意页面-光与影之诗 💡</a></li><li><a href="https://juejin.cn/post/7146383940931026958" target="_blank" rel="noopener noreferrer">Three.js 进阶之旅：基础入门（下）</a></li><li><a href="https://juejin.cn/post/7145064095178293285" target="_blank" rel="noopener noreferrer">Three.js 进阶之旅：基础入门（上）</a></li><li><a href="https://supercodepower.com/fontend-target" target="_blank" rel="noopener noreferrer">🗂 前端版本兼容问题的探索</a></li><li><a href="https://supercodepower.com/web-dev-blog" target="_blank" rel="noopener noreferrer">🗂 对 web.dev 所有 blog 的整理与归档</a></li><li><a href="https://supercodepower.com/react-native-tweet" target="_blank" rel="noopener noreferrer">🤯 没 2 年 React Native 开发经验，你都遇不到这些坑</a></li><li><a href="https://juejin.cn/post/7146183222425518093" target="_blank" rel="noopener noreferrer">Element Plus 组件库相关技术揭秘：2. 组件库工程化实战之 Monorepo 架构搭建</a></li><li><a href="https://juejin.cn/post/7146973901166215176" target="_blank" rel="noopener noreferrer">「历时8个月」10万字前端知识体系总结（基础知识篇）🔥</a></li><li><a href="https://juejin.cn/post/7146975493278367752" target="_blank" rel="noopener noreferrer">「历时8个月」10万字前端知识体系总结（算法篇）🔥</a></li><li><a href="https://juejin.cn/post/7146976516692410376" target="_blank" rel="noopener noreferrer">「历时8个月」10万字前端知识体系总结（工程化篇）🔥</a></li><li><a href="https://juejin.cn/post/7146996646394462239" target="_blank" rel="noopener noreferrer">「历时8个月」10万字前端知识体系总结（前端框架+浏览器原理篇）🔥</a></li><li><a href="https://juejin.cn/post/7158730050718662687" target="_blank" rel="noopener noreferrer">20个常见的前端算法题，你全都会吗</a></li><li><a href="https://juejin.cn/post/7151653067593613320" target="_blank" rel="noopener noreferrer">一文聊完前端项目中的Babel配置</a></li><li><a href="https://juejin.cn/post/7126394898445500423" target="_blank" rel="noopener noreferrer">从 package.json 来聊聊如何管理一款优秀的 Npm 包</a></li><li><a href="https://juejin.cn/post/7157902763534319624" target="_blank" rel="noopener noreferrer">聊一聊常见的构建工具关于插件机制的那些通用套路</a></li><li><a href="https://mp.weixin.qq.com/s/bb7C6VNbq7REP9u8PsreSg" target="_blank" rel="noopener noreferrer">看一遍就理解：IO模型详解</a></li><li><a href="https://mp.weixin.qq.com/s/qaUZ3AMA_dJkx2ZpyhJN2g" target="_blank" rel="noopener noreferrer">面试必备：零拷贝详解</a></li><li><a href="https://mp.weixin.qq.com/s/DGP1frbIlirZ_C8Vd0OmEA" target="_blank" rel="noopener noreferrer">实战总结！18种接口优化方案的总结</a></li><li><a href="https://juejin.cn/post/7172001951784108040" target="_blank" rel="noopener noreferrer">傻瓜方式分析前端应用的体积</a></li><li><a href="https://juejin.cn/book/7050063811973218341/section/7070419010021490702" target="_blank" rel="noopener noreferrer">手写 Bundler: 实现代码打包、 Tree Shaking</a></li><li><a href="https://juejin.cn/book/7050063811973218341/section/7066614663533821983" target="_blank" rel="noopener noreferrer">手写 Bundler: 实现 JavaScript AST 解析器——词法分析、语义分析</a></li><li><a href="https://mp.weixin.qq.com/s/1xY0hfcwJci1hr4TKUZMqg" target="_blank" rel="noopener noreferrer">【第2795期】雪球跨端架构建设之三端同构篇</a></li><li><a href="https://mp.weixin.qq.com/s/7WU1DDoMYQzXnlstz16QJA" target="_blank" rel="noopener noreferrer">【第2785期】雪球跨端架构建设之跨端容器篇</a></li><li><a href="https://mp.weixin.qq.com/s/19Ai1rbRoQxOBA5SXSNCAQ" target="_blank" rel="noopener noreferrer">Vite 特性和部分源码解析</a></li><li><a href="https://juejin.cn/post/7021115814870810660" target="_blank" rel="noopener noreferrer">Rollup源码：模块打包与Tree-Shaking</a></li><li><a href="https://juejin.cn/post/7169004126469914654" target="_blank" rel="noopener noreferrer">Rollup 与 Webpack 的 Tree-shaking</a></li><li><a href="https://juejin.cn/post/7157902763534319624" target="_blank" rel="noopener noreferrer">聊一聊常见的构建工具关于插件机制的那些通用套路</a></li><li><a href="https://juejin.cn/post/7160467329334607908" target="_blank" rel="noopener noreferrer">【Webpack Plugin】写了个插件跟喜欢的女生表白，结果......😭😭😭</a></li><li><a href="https://segmentfault.com/a/1190000012081469" target="_blank" rel="noopener noreferrer">玩转webpack（一）上篇：webpack的基本架构和构建流程</a></li><li><a href="https://segmentfault.com/a/1190000012099163" target="_blank" rel="noopener noreferrer">玩转webpack（一）下篇：webpack的基本架构和构建流程</a></li><li><a href="https://juejin.cn/post/7164175171358556173" target="_blank" rel="noopener noreferrer">【中级/高级前端】为什么我建议你一定要读一读 Tapable 源码</a></li><li><a href="https://juejin.cn/post/7170852747749621791" target="_blank" rel="noopener noreferrer">二十张图片彻底讲明白Webpack设计理念，以看懂为目的</a></li><li><a href="https://juejin.cn/post/7176963906844246074" target="_blank" rel="noopener noreferrer">Webpack深度进阶：两张图彻底讲明白热更新原理！</a></li><li><a href="https://juejin.cn/post/7093880734246502414" target="_blank" rel="noopener noreferrer">Vue3生命周期Hooks的原理及其与调度器(Scheduler)的关系</a></li><li><a href="https://juejin.cn/post/7064740689178787871" target="_blank" rel="noopener noreferrer">【🐯初/中级前端面经】中小型公司面试时都会问些什么</a></li><li><a href="https://juejin.cn/post/7177216308843380797" target="_blank" rel="noopener noreferrer">谈谈复杂应用的状态管理（上）：为什么是 Zustand</a></li><li><a href="https://juejin.cn/post/7182462103297458236" target="_blank" rel="noopener noreferrer">谈谈复杂应用的状态管理（下）：基于 Zustand 的渐进式状态管理实践</a></li><li><a href="https://mp.weixin.qq.com/s/Bf5JNQjki9xLVzioYPy5qg" target="_blank" rel="noopener noreferrer">【好文分享】基于Jira的运维发布平台的设计与实现</a></li><li><a href="https://mp.weixin.qq.com/s/pDXhIMFkyMuiVHB0l9gphw" target="_blank" rel="noopener noreferrer">如何使用jenkins搭建一个中小企业前端项目部署环境</a></li><li><a href="https://juejin.cn/post/6991640600533532679" target="_blank" rel="noopener noreferrer">跟着来，你也可以手写VueRouter</a></li><li><a href="https://juejin.cn/post/6997968693414084644" target="_blank" rel="noopener noreferrer">「硬核JS」图解Promise迷惑行为｜运行机制补充</a></li><li><a href="https://juejin.cn/post/7007946894605287432" target="_blank" rel="noopener noreferrer">「前端工程四部曲」模块化的前世今生（上）</a></li><li><a href="https://juejin.cn/post/7012774158371127326" target="_blank" rel="noopener noreferrer">「前端工程四部曲」模块化的前世今生（下）</a></li><li><a href="https://juejin.cn/post/7199832444836593725" target="_blank" rel="noopener noreferrer">聊聊 Ant Design V5 的主题（上）：CSSinJS 动态主题的花活</a></li></ul>]]></content:encoded>
            <category>TypeScript</category>
            <category>前端框架</category>
            <category>Webpack</category>
            <category>源码系列</category>
            <category>业务成长</category>
            <category>性能优化</category>
            <category>组件库实战</category>
            <category>网络相关</category>
            <category>机器学习</category>
            <category>Java</category>
            <category>Golang</category>
        </item>
        <item>
            <title><![CDATA[2月26日内容汇总]]></title>
            <link>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/2月26日内容汇总</link>
            <guid>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/2月26日内容汇总</guid>
            <pubDate>Sun, 26 Feb 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[image]]></description>
            <content:encoded><![CDATA[<p><img loading="lazy" alt="image" src="/assets/images/image-33847f8a3842e2a7e926a7a093e1f527.png" width="1080" height="720" class="img_ev3q"></p><p>题图：爱心猫</p><p>📒 PNPM 如何给第三方库打补丁</p><p><a href="https://github.com/antfu/pnpm-patch-i" target="_blank" rel="noopener noreferrer">https://github.com/antfu/pnpm-patch-i</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/85rJofdu2kwu41z5NANDcw" target="_blank" rel="noopener noreferrer">「Go框架」iris框架中mvc使用进阶</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/mwWMOwLsiY8EtODpyEoTIg" target="_blank" rel="noopener noreferrer">Go1.20 arena 能手动管理内存了，怎么用</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/0C1JJiElxRT-Alx6aVnTtQ" target="_blank" rel="noopener noreferrer">Go语言空结构体这3种妙用，你知道吗</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/ExfVdEM7_YWlQF6GhFn74A" target="_blank" rel="noopener noreferrer">一文吃透 Go 内置 RPC 原理</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/tC9xfZFJvcNEbTXHQYvT6w" target="_blank" rel="noopener noreferrer">外观模式，一个每天都在用，却被多数人在面试中忽视的模式</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/Ear2yeHfbNdnJnP8S2xTIQ" target="_blank" rel="noopener noreferrer">一起玩转Vue中的JSX：让你一次性掌握它的特性!</a></p><p>📒 <a href="https://juejin.cn/post/7202423344146202684" target="_blank" rel="noopener noreferrer">分享6款yyds的可视化搭建开源项目</a></p><p>📒 <a href="https://juejin.cn/post/7202413628809199676" target="_blank" rel="noopener noreferrer">类型编程原理和编写类型安全代码</a></p><p>📒 <a href="https://juejin.cn/post/7202164243613073464" target="_blank" rel="noopener noreferrer">前端食堂技术周刊第 71 期：LightningCSS、State of React Native、Sandpack 2.0、ChatGPT 与前端、2023</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/2pw6Rix1tDqdsrwSLEQsoQ" target="_blank" rel="noopener noreferrer">「每周译Go」在 Go 中定义方法</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/HRQfrG4qqXtEMTezg53a-g" target="_blank" rel="noopener noreferrer">「读源码」为什么注册路由时没有传入上下文，在接口方法中却能取到</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/6_ygmyd64LP7rlkrOh-kRQ" target="_blank" rel="noopener noreferrer">一文告诉你如何判断Go接口变量是否相等</a></p><p>📒 <a href="https://juejin.cn/post/7202066150938902587" target="_blank" rel="noopener noreferrer">PHP vs Go，为什么 Go 不支持命名参数调用函数</a></p><p>📒 MDH 前端周刊第 88 期：错误处理、CSS 嵌套、应用模块化、useWorker</p><p>React 实现了下发服务器端函数的引用，类似 RPC 。</p><blockquote><p><a href="https://twitter.com/wongmjane/status/1625166863062958081" target="_blank" rel="noopener noreferrer">https://twitter.com/wongmjane/status/1625166863062958081</a></p></blockquote><p>React Native 年度报告显示 Turborepo 是最受欢迎的 monorepo 工具。</p><blockquote><p><a href="https://results.stateofreactnative.com/monorepo-tools/" target="_blank" rel="noopener noreferrer">https://results.stateofreactnative.com/monorepo-tools/</a></p></blockquote><p>Nextjs 新增了 Api routes 的替代品 route handler 。</p><blockquote><p><a href="https://beta.nextjs.org/docs/routing/route-handlers" target="_blank" rel="noopener noreferrer">https://beta.nextjs.org/docs/routing/route-handlers</a></p></blockquote><p>React Hook Form 支持跨框架使用了，建议更名为 @tanstack/hook-form，哈哈。</p><blockquote><p><a href="https://github.com/react-hook-form/core" target="_blank" rel="noopener noreferrer">https://github.com/react-hook-form/core</a></p></blockquote><p>《How to handle errors in React: full guide》。直接 <code>try…catch</code> 会有不少限制，但使用 React 官方的 ErrorBoundary 也有不少限制。这个限制是，React生命周期之外的错误不捕获，比如 resolved promises, async code with setTimeout, various callbacks and event handlers。怎么解？dan 给了个 <a href="https://github.com/facebook/react/issues/14981#issuecomment-468460187" target="_blank" rel="noopener noreferrer">Hack 方案</a>，简单说就是 <code>try {} catch(e) { setState(() =&gt; throw e) }</code>。基于此，我们可以稍微封装下，比如 <code>useThrowAsyncError</code> 或 <code>useCallbackWithErrorHandling</code>，这样就不需要每次声明一个新的 setState 了。同时也可以考虑用 <a href="https://github.com/bvaughn/react-error-boundary" target="_blank" rel="noopener noreferrer">bvaughn/react-error-boundary</a> 。</p><blockquote><p><a href="https://www.developerway.com/posts/how-to-handle-errors-in-react" target="_blank" rel="noopener noreferrer">https://www.developerway.com/posts/how-to-handle-errors-in-react</a></p></blockquote><p>《TypeScript Brand type with Zod》。Brand Type 可以用来创建一个新类型，比如把 string 包装成 Email。然后结合 Type Guards，即可确保类型安全，又能做数据校验。Type Guards 的部分可以用 zod 。</p><blockquote><p><a href="https://linux-china.davao.page/blog/2023-02-16-ts-brand-with-zod/" target="_blank" rel="noopener noreferrer">https://linux-china.davao.page/blog/2023-02-16-ts-brand-with-zod/</a></p></blockquote><p>《Modularizing React Applications with Established UI Patterns》。好文，作者通过案例教你如何用成熟的 UI 模式把 React 应用模块化。说人话就是，把大组件拆小。几个思路，1）提取子组件以拆分视图，2）提取非视图逻辑到 hooks，3）提取领域模型以封装逻辑。但是也要注意别过度优化。</p><blockquote><p><a href="https://martinfowler.com/articles/modularizing-react-apps.html" target="_blank" rel="noopener noreferrer">https://martinfowler.com/articles/modularizing-react-apps.html</a></p></blockquote><p>《React Component Composition》。图解 Composition。</p><blockquote><p><a href="https://punits.dev/jargon-free-intros/react-component-composition/" target="_blank" rel="noopener noreferrer">https://punits.dev/jargon-free-intros/react-component-composition/</a></p></blockquote><p>Umi 例行每周四发一版，我觉得有趣的功能包括，1）基于 @clack/prompts <a href="https://github.com/umijs/umi/pull/10508" target="_blank" rel="noopener noreferrer">优化 create-umi 界面</a>，2）优化命令行执行速度，该 lazyImport 的 lazyImport，同时优化了 @ant-design/icons 集合的读取方式，3）新增 legacy 模式支持做产物的 es5 校验，4）升级 Vite 到 4.1。</p><p>Umi 新增 <a href="https://github.com/umijs/umi/issues/10423" target="_blank" rel="noopener noreferrer">Roadmap 2023</a>，是 Umi 团队每周迭代的一部分，每周四更新，有兴趣共享的同学欢迎直接回 issue 认领。一个非 docs PR 即可加入 Umi Contributor 群。</p><p>Umi 团队新增一条规则，每人每周需共享 1-2 个想法，每周三开 Discussion 征集，这是试运行第一周的 <a href="https://github.com/umijs/umi/discussions/10516" target="_blank" rel="noopener noreferrer">Discussion 链接</a>。</p><p><a href="https://mdhweekly.com/weekly/issue-0088" target="_blank" rel="noopener noreferrer">MDH 前端周刊第 88 期：错误处理、CSS 嵌套、应用模块化、useWorker</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/ApHdIvEcki4LxLheBoB2ew" target="_blank" rel="noopener noreferrer">Golang 语言标准库 io 详解</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/ioW72PZV3Vx0UiiKFyXcBA" target="_blank" rel="noopener noreferrer">Go语言爱好者周刊：第 177 期 — Go 版 ElasticSearch</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2月19日内容汇总]]></title>
            <link>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/2月19日内容汇总</link>
            <guid>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/2月19日内容汇总</guid>
            <pubDate>Sun, 19 Feb 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[image]]></description>
            <content:encoded><![CDATA[<p><img loading="lazy" src="https://img.alicdn.com/imgextra/i1/O1CN01B3wSrC28JI5bpyIii_!!6000000007911-2-tps-1536-1024.png_1200x1200.jpg" alt="image" class="img_ev3q"></p><p>题图：Bigfish x 情人节。</p><p>📒 <a href="https://juejin.cn/post/7199607659992907832" target="_blank" rel="noopener noreferrer">ChatGPT ✖️ 前端 = 有点er意思</a></p><p>📒 <a href="https://juejin.cn/post/7196700282348306490" target="_blank" rel="noopener noreferrer">基于gpt3引擎实现CLI版本的chatgpt~（数量取胜的go语言学习法）</a></p><p>📒 <a href="https://juejin.cn/post/7196322025115336759" target="_blank" rel="noopener noreferrer">基于qwik和iris(go)写全栈啦-短链服务（数量取胜的go语言学习法）</a></p><p>📒 云原生运维相关文章</p><p><a href="https://mp.weixin.qq.com/s/Ys4A9nGPx1T2se_eoFxVSA" target="_blank" rel="noopener noreferrer">Linux 命令行工具之 jq 最佳实践</a></p><p><a href="https://mp.weixin.qq.com/s/v3mY4v6Q11MMNlg_y0SExQ" target="_blank" rel="noopener noreferrer">令人拍手叫绝的运维小技巧</a></p><p><a href="https://mp.weixin.qq.com/s/NarTVKrCu4KvSL3sT4YXWg" target="_blank" rel="noopener noreferrer">2022年 SRE、DevOps技能图谱</a></p><p><a href="https://mp.weixin.qq.com/s/9_Mt2_Mg_92ObWENjchrsQ" target="_blank" rel="noopener noreferrer">Linux 命令工具之 grep</a></p><p><a href="https://mp.weixin.qq.com/s/OFjy_EIJKCLwF7rwAaeOFw" target="_blank" rel="noopener noreferrer">Linux 命令工具之 awk</a></p><p><a href="https://mp.weixin.qq.com/s/QtWqnS5dCvXCYvHzIk-BrQ" target="_blank" rel="noopener noreferrer">Golang中的逃逸分析</a></p><p><a href="https://mp.weixin.qq.com/s/gh7ys7d9Dr52TIulhkoTMg" target="_blank" rel="noopener noreferrer">据说成功人士都是这样管理时间的</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/nwX2rEXfGPSR3jmPNuTy_w" target="_blank" rel="noopener noreferrer">告别“复制粘贴”，带你自己配一个Babel</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/24jpl9waFppxdmp84rX0qw" target="_blank" rel="noopener noreferrer">Go 陷阱 - 接口方法调用</a></p><p>📒 <a href="https://juejin.cn/post/7200408830051336248" target="_blank" rel="noopener noreferrer">【面试高频题】难度 4/5，单调栈的热门运用</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/x1HGf4MNPoifIJIaLEg9uQ" target="_blank" rel="noopener noreferrer">【第2858期】React 纪录片心得 — 重新思考最佳实践</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/ntIuk0HTEfxRqZQNv0_9gA" target="_blank" rel="noopener noreferrer">Go 陷阱 - 缓冲区内容不输出</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/5Mmd51cpGKxmm7WULNvUyw" target="_blank" rel="noopener noreferrer">百里挑 15 个 Git 技巧</a></p><p>📒 <a href="https://juejin.cn/post/7199591833522176058" target="_blank" rel="noopener noreferrer">组件库实战——按需加载工程化</a></p><p>📒 Go 也要过情人节，并发布了安全更新 Go 1.20.1 和 Go 1.19.6</p><p><a href="https://mp.weixin.qq.com/s/enYkz_1aYZlbASFpliBpcA" target="_blank" rel="noopener noreferrer">Go 1.20.1 发布了</a></p><p><a href="https://mp.weixin.qq.com/s/9ucVNxf9L7xX4Q6EUM7gnA" target="_blank" rel="noopener noreferrer">Go 也要过情人节，并发布了安全更新 Go 1.20.1 和 Go 1.19.6</a></p><p>📒 <a href="https://juejin.cn/post/7199933874306089021" target="_blank" rel="noopener noreferrer">前端食堂技术周刊第 70 期：Volar 的新开端、Lighthouse 10、良好的组件设计、React 纪录片、2022 大前端总结</a></p><p>⭐️ <a href="https://juejin.cn/post/7199832444836593725" target="_blank" rel="noopener noreferrer">聊聊 Ant Design V5 的主题（上）：CSSinJS 动态主题的花活</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/HgXLFFTpXbxKPNmIgdhmXA" target="_blank" rel="noopener noreferrer">Go 高性能 - 字符串拼接 1000+ 倍优化</a></p><p>📒 <a href="https://juejin.cn/post/7199537072301228089" target="_blank" rel="noopener noreferrer">技术角度告诉你ChatGPT是什么？和一些深度思考</a></p><p>📒 <a href="https://juejin.cn/post/7199508018374033445" target="_blank" rel="noopener noreferrer">闲鱼大终端UI组件库——FishUI建设之路</a></p><p>📒 ChatGPT 相关</p><p><a href="https://bigquant.com/wiki/doc/jichu-ox6FBJMJpK" target="_blank" rel="noopener noreferrer">AI量化投资训练营-基础班</a></p><p><a href="https://twitter.com/kliu128/status/1623472922374574080/" target="_blank" rel="noopener noreferrer">https://twitter.com/kliu128/status/1623472922374574080/</a></p><p><a href="https://tanstack.com/" target="_blank" rel="noopener noreferrer">https://tanstack.com/</a></p><p><a href="https://platform.openai.com/docs/api-reference/completions/create#completions/create-prompt" target="_blank" rel="noopener noreferrer">https://platform.openai.com/docs/api-reference/completions/create#completions/create-prompt</a></p><p><a href="https://huggingface.co/datasets/fka/awesome-chatgpt-prompts" target="_blank" rel="noopener noreferrer">https://huggingface.co/datasets/fka/awesome-chatgpt-prompts</a></p><p><a href="https://github.com/f/awesome-chatgpt-prompts" target="_blank" rel="noopener noreferrer">https://github.com/f/awesome-chatgpt-prompts</a></p><p><a href="https://github.com/lencx/ChatGPT" target="_blank" rel="noopener noreferrer">https://github.com/lencx/ChatGPT</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/wRc1x4TP3PlleikL8f6rng" target="_blank" rel="noopener noreferrer">细说 Vue 响应式原理的 10 个细节！</a></p><p>📒 MDH 前端周刊第 87 期：re-render、Resumable React、ESLint 性能、监控</p><p>《React recursively re-renders child components, but there is a nuance》。Alex Sidorenko 的 React 可视化渲染系列文章 +1。通过可视化的方式告诉你为啥通过 children 渲染子组件，能避免 state 变更时子组件 re-render。</p><blockquote><p><a href="https://alexsidorenko.com/blog/react-render-children-prop/" target="_blank" rel="noopener noreferrer">https://alexsidorenko.com/blog/react-render-children-prop/</a></p></blockquote><p>《Resumable React: How To Use React Inside Qwik》。关于如何在 Qwik 内使用 React，你可以建立 React 应用程序，而无需在用户的浏览器中加载 React。当然，在你需要交互的时候，还是需要动态加载 React（感觉不一定是件好事，没解决问题，只是把问题转移了，可能在交互时会卡一下）。</p><blockquote><p><a href="https://www.builder.io/blog/resumable-react-how-to-use-react-inside-qwik" target="_blank" rel="noopener noreferrer">https://www.builder.io/blog/resumable-react-how-to-use-react-inside-qwik</a></p></blockquote><p>《Speeding up the JavaScript ecosystem - eslint》。Speeding up 系列的第三篇。1）检测方法是 --cpu-prof + Speedscope（通常还可以用上 hyperfine 跑多次做 benchmark），2）解析器从 @typescript-eslint/parser 换成 @babel/eslint-parser + @babel/preset-typescript 可以节省不少时间，从 2.1s 到 0.6s，缺点是不支持 type-aware 的 linting 规则（我们通常也不会用他们），3）rslint 值得关注。</p><blockquote><p><a href="https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-3/" target="_blank" rel="noopener noreferrer">https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-3/</a></p></blockquote><p>《Vite with ESLint》。手把手教你如何在 Vite 项目中加上和 Vite 集成的 ESLint，基于 vite-plugin-eslint。但个人感觉 ESLint 不应该集成（因为会影响构建速度），而应该单独用，同时编辑器里也有提示了，所以在提交和 CI 里做校验就够了。</p><blockquote><p><a href="https://www.robinwieruch.de/vite-eslint/" target="_blank" rel="noopener noreferrer">https://www.robinwieruch.de/vite-eslint/</a></p></blockquote><p>《Custom React Hooks and When to Use Them》。关于自定义 Hooks，是什么、可复用的提取、不可复用的提取、提取数量等，最后还是要注意抽象的代价，抽象不是免费的，有时适当重复反而更好，推荐下 Dan 的 The Wet Codebase 分享。</p><blockquote><p><a href="https://thoughtbot.com/blog/custom-react-hooks" target="_blank" rel="noopener noreferrer">https://thoughtbot.com/blog/custom-react-hooks</a></p></blockquote><p>《2022大前端总结和2023就业分析》。来自狼叔的年度大作，推荐。</p><blockquote><p><a href="https://mp.weixin.qq.com/s/SicYTABGjXcJJTqYEbL5dQ" target="_blank" rel="noopener noreferrer">https://mp.weixin.qq.com/s/SicYTABGjXcJJTqYEbL5dQ</a></p></blockquote><p>《字节前端监控实践》。感觉含金量挺高的，摘录其中错误报警的部分。1）sourcemap 结果可以用 mozila 的 sourcemap 库进行反解，2）为了保密，sourcemap 不会传到公网，而是传给后端存在内部，Sentry 有类似工具（注：sourcemap 构建慢怎么办？并发多跑一次带 sourcemap 的），3）要做堆栈聚合，合并同类错误，4）通过记录 commit + git blame 可以直接分配报错信息到人。</p><blockquote><p><a href="https://juejin.cn/post/7195496297150709821" target="_blank" rel="noopener noreferrer">https://juejin.cn/post/7195496297150709821</a></p></blockquote><p><a href="https://mdhweekly.com/weekly/issue-0087" target="_blank" rel="noopener noreferrer">MDH 前端周刊第 87 期：re-render、Resumable React、ESLint 性能、监控</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/J7w8IN5Gw94AzOZlnYxvow" target="_blank" rel="noopener noreferrer">「每周译Go」在 Go 中定义结构体</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/WLyl15SmnZmbdnzr2RfqGQ" target="_blank" rel="noopener noreferrer">leader要我三天时间搭一套react-cli出来，我答应了</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/jdKIuPmb-Y0TGROdX97AQA" target="_blank" rel="noopener noreferrer">Go for range 一不小心就掉坑里了</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/HcK9xTT5xl9sztjSxGlkIA" target="_blank" rel="noopener noreferrer">Go 工具链想主动上报使用数据，你愿意吗</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/UzTPjFKzNv6NobYQP7fOfg" target="_blank" rel="noopener noreferrer">Go语言爱好者周刊：第 176 期 —— 题目来了</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2月12日内容汇总]]></title>
            <link>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/2月12日内容汇总</link>
            <guid>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/2月12日内容汇总</guid>
            <pubDate>Sun, 12 Feb 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[image]]></description>
            <content:encoded><![CDATA[<p><img loading="lazy" alt="image" src="/assets/images/image-c146e75dabf6f5c000454b11bc63d306.jpg" width="1200" height="801" class="img_ev3q"></p><p>题图：dannyhowe @ unsplash。</p><p>⭐️ <a href="https://mp.weixin.qq.com/s/EaZepIDHWEHRptyaZI4cGg" target="_blank" rel="noopener noreferrer">Go 并发编程 - 数据竞态</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/0G64euEYRSjc5aMF6P8wlQ" target="_blank" rel="noopener noreferrer">x/exp/maps, slices 纷纷被同意加入 Go 标准库</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/vRWo1ZrsXlBXOrabjYtBSw" target="_blank" rel="noopener noreferrer">怎么把自己造的轮子发布到 Go Module上</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/eLWhKIWkyc8yrUxwKzcanA" target="_blank" rel="noopener noreferrer">【面试高频题】难度 2.5/5，综合贪心的序列 DP 题</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/q3Gr1BcrRIdxb-GVMb_R6Q" target="_blank" rel="noopener noreferrer">聊聊Golang饱受争议的error</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/Y-JxePxv9XlaX_UASlWSvQ" target="_blank" rel="noopener noreferrer">万字长文告诉你Go 1.20中值得关注的几个变化</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/GPxW8MwaxUonA1R7k9Cl6w" target="_blank" rel="noopener noreferrer">向 Swift 学习？Go 考虑简单字符串插值特性</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/sdBZTSOzm94Zopgr_OijOg" target="_blank" rel="noopener noreferrer">如何从 0 开始配置 Mac</a></p><p>📒 <a href="https://dev.to/sidthesloth92/understanding-html-form-encoding-url-encoded-and-multipart-forms-3lpa" target="_blank" rel="noopener noreferrer">Understanding HTML Form Encoding: URL Encoded and Multipart Forms</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/vp7Jfxh7AmseD6L1NVpvZA" target="_blank" rel="noopener noreferrer">从 0 实现 use-context-selector</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/EoNAkphkfKO1M4GVQCrBRQ" target="_blank" rel="noopener noreferrer">为什么说Go的函数是“一等公民”</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/E_8ovfaAKSjHFsK85iOChA" target="_blank" rel="noopener noreferrer">Go 陷阱 - 错误处理三剑客</a></p><p>🌟 上次给 UMI 的文档提了两个 PR 被合并，成了 UMI contributor：</p><p><img loading="lazy" alt="image" src="/assets/images/Screen Shot 2023-02-06 at 11.24.37 AM-e1329123c44b2bea0988ab302a16581e.png" width="1856" height="872" class="img_ev3q"></p><blockquote><p><a href="https://github.com/umijs/umi/releases/tag/v4.0.48" target="_blank" rel="noopener noreferrer">https://github.com/umijs/umi/releases/tag/v4.0.48</a></p></blockquote><p>📒 <a href="https://mp.weixin.qq.com/s/RjLq4wUMvh5WMl8BcUmk0g" target="_blank" rel="noopener noreferrer">「每周译Go」了解 Go 中的指针</a></p><p>📒 【面试高频题】难度 1/5，简单二叉树寻值问题</p><div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> ans</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> k </span><span class="token builtin">int</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">func</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">kthSmallest</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">root </span><span class="token operator" style="color:#393A34">*</span><span class="token plain">TreeNode</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> _k </span><span class="token builtin">int</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token builtin">int</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    k </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> _k</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">dfs</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">root</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> ans</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">func</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">dfs</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">root </span><span class="token operator" style="color:#393A34">*</span><span class="token plain">TreeNode</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> root </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">nil</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"> k </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">dfs</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">root</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Left</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> k</span><span class="token operator" style="color:#393A34">--</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> k </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        ans </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> root</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Val</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">dfs</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">root</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Right</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>常规解法是先遍历所有树节点再排序，或者遍历树节点+优先队列（看做是 top K 问题），但这两种解法都没有利用该树为二叉搜索树的特性，而我们知道，二叉搜索树的中序遍历是有序的，因此我们只需要对二叉搜索树执行中序遍历，并返回第 k 小的值即可。中序遍历有「迭代」和「递归」两种写法。</p><p><a href="https://mp.weixin.qq.com/s/hBFrHtEYRnk8P9QWmpUMIA" target="_blank" rel="noopener noreferrer">【面试高频题】难度 1/5，简单二叉树寻值问题</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/QnWez2sEWuL8j8GVDmBNTA" target="_blank" rel="noopener noreferrer">TypeScript 5.0 将支持全新的装饰器写法！</a></p><p>⭐️ <a href="https://juejin.cn/post/7196907808225738811" target="_blank" rel="noopener noreferrer">Go异步任务处理解决方案：Asynq</a></p><p>📒 MDH 前端周刊第 86 期：CRA 未来、吐槽 React、React 清依赖小技巧、Darkmode</p><p>《The Future of Create React App and Why It Exists》。Dan 写了篇长文梳理了 CRA 的问题和规划。一些问题包括，1）脚手架的困境，一旦 clone 就很难再更新，然后你的项目配置会逐渐变得陈旧，要么放弃，要么需要花大量精力换新，2）因为是 CSR 所以有空 HTML 的问题，但 Dan 也并不喜欢 MPA，比如 astro，混用多种技术影响 DX，完整的页面刷新让客户端状态失效影响 UX，3）请求瀑布问题，比较好的解法是让数据获取和路由结合，这就需要元框架，4）懒加载（await import）问题，引入额外的请求瀑布，解法是数据获取+路由+构建工具，一样也需要元框架。Dan 期望 CRA 具备 SSG and SSR, automatic code splitting, no client-server waterfalls, route prefetching, navigation preserving client UI state 等功能，然后考虑多 CRA 的多条路，决定不做了，把 CRA 变成一个社区方案的启动器。</p><blockquote><p><a href="https://github.com/reactjs/reactjs.org/pull/5487#issuecomment-1409720741" target="_blank" rel="noopener noreferrer">https://github.com/reactjs/reactjs.org/pull/5487#issuecomment-1409720741</a></p></blockquote><p>《React I Love You, But You're Bringing Me Down》。骂得好，哈哈，爱之深，责之切啊。如果你想吐槽 React，照着念就完了。1）表单没有稳定官方方案，一路用社区库过来，目前相对好的是 Formik 和 React-hook-form，看看人家 Svelte，2）Context 太敏感，一碰就 re-render，为了性能而拆大量的 Provider 瀑布流组件，太难看了，提供一个 useContextSelector 有那么难吗？3）关于 DOM 和 ref，React.forwardRef + TypeScript 写通用组件太难了，同时 ref 不仅仅是 关于 dom，每次用 ref 都是因为 useEffect API 太奇怪，换句话说，refs 是对 react 创造的问题的一种解决方案，4）关于 useEffect，需要阅读一篇 61 页 的论文才能用好也太难了，看看人家 Solid.js，5）关于 Hooks 规则，Rules of Hooks 不容易记住，6）关于老父亲 Facebook，略。那作者为啥还留下？因为「It's the ecosystem, stupid.」</p><blockquote><p><a href="https://marmelab.com/blog/2022/09/20/react-i-love-you.html" target="_blank" rel="noopener noreferrer">https://marmelab.com/blog/2022/09/20/react-i-love-you.html</a></p></blockquote><p>《Little React Things: Cleaning up dependencies - Zeke Hernandez》。Zeke Hernandez 介绍了一个减少列表项 rerender 的小技巧，虽然对用户来说性能提升不明显，但至少打开 react devtool 的「Highlight Updates」时会看起来很爽，这就够了。方法是，event handler 用 useCallback 包一下，同时清空依赖，没有依赖就不会触发 event handler 生成新的了。那依赖怎么清？1） setState 无需写入依赖，2）setState 用 function 的形式。</p><blockquote><p><a href="https://www.zekehernandez.com/posts/cleaning-up-dependencies" target="_blank" rel="noopener noreferrer">https://www.zekehernandez.com/posts/cleaning-up-dependencies</a></p></blockquote><p>《4 Common Mistakes Made by Node.js Developers》。文章介绍了 4 个 Node 开发的常见错题。1）没有明确定义的日志级别，可尝试 winston, pino, morgan 等库，2）无脑选择 Docker 基础镜像，又大又耗性能，比如 node:18 300M+，选 slim 或 alpine 就够了，slim 70M，alpine 50M，3）签署 JWT 时不使用非对称加密，对称加密不够安全，4）Storing passwords without unique salting。</p><blockquote><p><a href="https://amplication.com/blog/4-common-mistakes-made-by-nodejs-developers" target="_blank" rel="noopener noreferrer">https://amplication.com/blog/4-common-mistakes-made-by-nodejs-developers</a></p></blockquote><p><a href="https://mdhweekly.com/weekly/issue-0086" target="_blank" rel="noopener noreferrer">MDH 前端周刊第 86 期：CRA 未来、吐槽 React、React 清依赖小技巧、Darkmode</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/X5YnYY3Y2vTk6KROlcHKDQ" target="_blank" rel="noopener noreferrer">Go 陷阱 - nil != nil</a></p><p>⭐️ <a href="https://juejin.cn/post/7196869752257773623" target="_blank" rel="noopener noreferrer">Go1.20 那些事：错误处理优化、编译速度提高、PGO 提效等新特性，你知道多少</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/Indl6reHcVt6higxbQxFeA" target="_blank" rel="noopener noreferrer">Go语言爱好者周刊：第 175 期 — Go 2023 调查问卷</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2月5日内容汇总]]></title>
            <link>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/2月5日内容汇总</link>
            <guid>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/2月5日内容汇总</guid>
            <pubDate>Sun, 05 Feb 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[image]]></description>
            <content:encoded><![CDATA[<p><img loading="lazy" alt="image" src="/assets/images/image-1e7a1a85d0d1ed7986950ed34029cb1c.jpg" width="1200" height="800" class="img_ev3q"></p><p>题图：烟花兔。</p><p>📒 <a href="https://dev.to/gaelgthomas/10-github-repositories-you-should-know-as-a-javascript-developer-2ji6" target="_blank" rel="noopener noreferrer">10 GitHub Repositories You Should Know as a JavaScript Developer</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/QxGMy0BZ4S06Qu0N57Tihw" target="_blank" rel="noopener noreferrer">Go 高性能 - 字符串 &amp; 切片转换提升 10 倍+</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/Z_T9q7lAp5WxeD5qt61H4Q" target="_blank" rel="noopener noreferrer">Go 高性能 - 两种内存大小为 0 的数据类型</a></p><p>⭐️ <a href="https://juejin.cn/post/7195491899738816571" target="_blank" rel="noopener noreferrer">Taro 正式发布 3.6 版本：支持跨端路由、请求库，支持纵向拓展鸿蒙、Web 端平台插件，小程序持续集成 CI 能力升级</a></p><p>⭐️ <a href="https://juejin.cn/post/7194704072136966181" target="_blank" rel="noopener noreferrer">深入理解 go sync.Cond</a></p><p>📒 <a href="https://juejin.cn/post/7195398724040785976" target="_blank" rel="noopener noreferrer">React团队回应用Vite替换Create React App的建议</a></p><p>📒 <a href="https://juejin.cn/post/7195395331666739256" target="_blank" rel="noopener noreferrer">React为什么不将Vite作为默认推荐</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/CFwiFw00ah0rfdZyv_ppxw" target="_blank" rel="noopener noreferrer">将Roaring Bitmap序列化为JSON</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/YTArCsZ7myYtyAt0sLSgvQ" target="_blank" rel="noopener noreferrer">Flag 2023</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/EjAnKZ56sdHuDrcFdS9Rrg" target="_blank" rel="noopener noreferrer">Go 1.20 已发布！性能和构建速度上有很大提升！</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/6GZytsyQai0molyWiGeffg" target="_blank" rel="noopener noreferrer">Go 工程化 - 如何实现 implements</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/5tvM2x1DMJlb926TKdne_A" target="_blank" rel="noopener noreferrer">「好文推荐」转Go必看 《 Go 工程化 - 面向对象，存在吗》</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/R_2pwdv2V1jj3zMjuUTNHw" target="_blank" rel="noopener noreferrer">Go字符串操作不是你想的那么简单！</a></p><p>📒 相关文章推荐</p><p><a href="https://mp.weixin.qq.com/s/PIhqed9uapE_Tgx761GExQ" target="_blank" rel="noopener noreferrer">24个JavaScript循环遍历方法，你都知道吗</a></p><p><a href="https://mp.weixin.qq.com/s/BnQOuoHTAZ-iUJASf9pX4A" target="_blank" rel="noopener noreferrer">JavaScript 数组方法 reduce 的妙用之处</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/jsdGV31yT5AR07BzRovWVw" target="_blank" rel="noopener noreferrer">为什么 Go 不支持 <!-- -->[<!-- -->]<!-- -->T 转换为 <!-- -->[<!-- -->]<!-- -->interface</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/KyPe3HG8M8OyY-sDRECggQ" target="_blank" rel="noopener noreferrer">「Go框架」深入理解web框架的中间件运行机制</a></p><p>📒 <a href="https://juejin.cn/post/7194435148329254972" target="_blank" rel="noopener noreferrer">TypeScript 5.0 beta 发布：新版 ES 装饰器、泛型参数的常量修饰、枚举增强等</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/fX9oKbrUe3KPtG08CR96xw" target="_blank" rel="noopener noreferrer">【面试高频题】难度 2/5，简单的复工面试题</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/pDXhIMFkyMuiVHB0l9gphw" target="_blank" rel="noopener noreferrer">如何使用jenkins搭建一个中小企业前端项目部署环境</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/mtdyAKwrFmPZs-wobzG8dw" target="_blank" rel="noopener noreferrer">这些关于 Golang timezone 时区的坑， 我已经帮你踩过了</a></p><p>📒 <a href="https://juejin.cn/post/7194301627556167740" target="_blank" rel="noopener noreferrer">还能这样玩？Go 将会增强 Go1 向前兼容性</a></p><p>⭐️ <a href="https://juejin.cn/post/7194334949011357755" target="_blank" rel="noopener noreferrer">一文入门Go云原生微服务「爆肝6千字」</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/59cxPFHWcdnUxKyRyo8SKw" target="_blank" rel="noopener noreferrer">sourcegraph 出品的并发库 conc 详解</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/AUSse5z1YES9wtKCiMdyWA" target="_blank" rel="noopener noreferrer">Go语言实现的可读性更高的并发神库</a></p><p>📒 MDH 前端周刊第 85 期：MDH Weekly 官网、2023 趋势、CSS Wish List、Astro</p><p>《10 Web Development Trends in 2023》，ROBIN WIERUCH 分析了 2023 年 Web 开发的 10 个趋势，推荐一读。10 个领域包括元框架、应用和渲染模式、Edge ServerLess、数据库复兴、JavaScript Runtime、MonoRepo、Utility-First CSS、类型安全、构建工具、AI 驱动开发。</p><blockquote><p><a href="https://www.robinwieruch.de/web-development-trends/" target="_blank" rel="noopener noreferrer">https://www.robinwieruch.de/web-development-trends/</a></p></blockquote><p>《20 Things I've Learned in my 20 Years as a Software Engineer》，一篇老文，讲述 20 年工作经验工程师的 20 条 Tips，我读完很有收获，推荐一读。</p><blockquote><p><a href="https://www.simplethread.com/20-things-ive-learned-in-my-20-years-as-a-software-engineer/" target="_blank" rel="noopener noreferrer">https://www.simplethread.com/20-things-ive-learned-in-my-20-years-as-a-software-engineer/</a></p></blockquote><p>《Capture heap snapshots in Node.js》。作者介绍了关于捕获堆快照的 3 个方法，1）<code>node --inspect index.mjs</code> 或 <code>--inspect-brk</code>，2）借助 Node 12 支持的 --heapsnapshot-signal flag，<code>node --heapsnapshot-signal=SIGUSR1 index.mjs</code>，3）用 v8.writeHeapSnapshot() method 手动写。</p><blockquote><p><a href="https://pawelgrzybek.com/capture-heap-snapshots-in-node-js/" target="_blank" rel="noopener noreferrer">https://pawelgrzybek.com/capture-heap-snapshots-in-node-js/</a></p></blockquote><p>《Things I want to see in JavaScript and Frontend development in 2023》，Paul Armstrong 关于 2023 年期望发生的变化。1）axios 别发展了，因为用浏览器原生支持的 fetch 可以省去 7-11kB 的尺寸，2）CSS 方案更少分歧，主要是 tailwind 和 css in js 之间，3）少一些资本支持的开源，因为当资本进入时，同时意味着他们期望得到巨大的金钱回报，4）少 eslint 规则和配置，自动帮你改代码或能解实际错误的规则除外，5）react 要不振作起来要不就 gg 吧，作者吐槽了好多都在点上，主要是发货太慢。</p><blockquote><p><a href="https://paularmstrong.dev/blog/2023/01/20/javascript-and-frontend-things-to-see-in-2023/" target="_blank" rel="noopener noreferrer">https://paularmstrong.dev/blog/2023/01/20/javascript-and-frontend-things-to-see-in-2023/</a></p></blockquote><p><a href="https://mdhweekly.com/weekly/issue-0085" target="_blank" rel="noopener noreferrer">MDH 前端周刊第 85 期：MDH Weekly 官网、2023 趋势、CSS Wish List、Astro</a></p><p>📒 <a href="https://juejin.cn/post/7193880226814754875" target="_blank" rel="noopener noreferrer">Typescript 严格模式有多严格</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/FrPX95beGa85fU0Rq4eZUw" target="_blank" rel="noopener noreferrer">一个全新的 JavaScript 事件！</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/17AmrqBGRcTQfLEaZNzkpA" target="_blank" rel="noopener noreferrer">DevopsCamp 第一期作业: 《cobra - 03 交互式命令（简单）》 解题答案</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[1月29日内容汇总]]></title>
            <link>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/1月29日内容汇总</link>
            <guid>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/1月29日内容汇总</guid>
            <pubDate>Sun, 29 Jan 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[image]]></description>
            <content:encoded><![CDATA[<p><img loading="lazy" alt="image" src="/assets/images/image-aa784abc4ee4237170dc1fe88463e36e.png" width="1080" height="720" class="img_ev3q"></p><p>题图：擅用工具的兔子工程师。</p><p>📒 相关文章推荐</p><p>修复生产版本 Node 程序的内存泄露问题 — Kent 在他的 Node 程序中遇到了各种奇怪的内存和 CPU 使用率峰值问题，于是他决定查找原因。这篇文章完整介绍了他对此的探寻过程，最戏剧性的是根本原因完全出乎他的意料。</p><blockquote><p><a href="https://kentcdodds.com/blog/fixing-a-memory-leak-in-a-production-node-js-app" target="_blank" rel="noopener noreferrer">https://kentcdodds.com/blog/fixing-a-memory-leak-in-a-production-node-js-app</a></p></blockquote><p>在 Go 应用中嵌入 React UI — Flipt 通过一个 Go 构建的单一二进制文件为其 web 应用提供服务，并将静态资源嵌入其中。Go 在 1.16 版本中支持原生嵌入后，帮助 Flipt 走上了一条通往 React 的道路，而且不需要 Next.js 就可以实现很好的效果。</p><blockquote><p><a href="https://www.flipt.io/blog/embedding-react-in-go" target="_blank" rel="noopener noreferrer">https://www.flipt.io/blog/embedding-react-in-go</a></p></blockquote><p>在 Next.js v13 中使用异步 React — React 正在原生的支持异步，现在你可以在 Next.js 中试用它，作者提供了一个快速概览。</p><blockquote><p><a href="https://swizec.com/blog/async-react-with-nextjs-13/" target="_blank" rel="noopener noreferrer">https://swizec.com/blog/async-react-with-nextjs-13/</a></p></blockquote><p>React Native 发布了 v0.71 — 这是一个“功能丰富”的版本，包括“默认 TypeScript 文件”，使用 Flexbox Gap 简化布局，以及受网络标准启发的可访问性、样式和事件 props。</p><blockquote><p><a href="https://reactnative.dev/blog/2023/01/12/version-071" target="_blank" rel="noopener noreferrer">https://reactnative.dev/blog/2023/01/12/version-071</a></p></blockquote><p>用 React Hook Form 和 Zod 构建表单 — 这是作者承诺的一系列录屏视频中的第一个，不仅涉及到开发一个集成后端 API 的表单，还涉及到开发时常遇到的一些问题。该视频的时长长达 95 分钟。</p><blockquote><p><a href="https://www.youtube.com/watch?v=FXWD_etMJWA" target="_blank" rel="noopener noreferrer">https://www.youtube.com/watch?v=FXWD_etMJWA</a></p></blockquote><p>⭐️ <a href="https://juejin.cn/post/7015566240991150117" target="_blank" rel="noopener noreferrer">lerna + dumi + eslint多包管理实践</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/rnsMes-YoZhW1Qy6Dt7quw" target="_blank" rel="noopener noreferrer">PHP转Go实践：xjson解析神器「开源工具集」</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/_wM8jG7CZ1vdB0k2L7SGHg" target="_blank" rel="noopener noreferrer">经过99次失败后， 我总结了几点 Golang 反射的经验（附源码）</a></p><p>📒 前端食堂技术周刊第 68 期：Astro 2.0、Nuxt v3.1.0、Bun v0.5、TS 实现 Stage 3 Decorators 提案</p><p><strong>Turborepo 1.7</strong></p><p>Turborepo 1.7 专注于改善开发者体验，为任务带来更多清晰性，主要特性如下：</p><ul><li>改进对持久化任务的支持，<code>"persistent": true</code></li><li>更清晰的输出，需要明确指定 <code>outputs</code></li><li>支持全局安装</li><li>只显示错误的输出模式，让日志更清晰，<code>turbo build --output-logs=errors-only</code></li></ul><p><a href="https://turbo.build/blog/turbo-1-7-0" target="_blank" rel="noopener noreferrer">Turborepo 1.7</a></p><p><a href="https://www.youtube.com/watch?v=XNf8tq9mUl0" target="_blank" rel="noopener noreferrer">Turborepo 1.7 发布视频版</a></p><p><strong>加速 JavaScript 生态系统之模块解析</strong></p><p>module resolution (模块解析)有着大量的性能损耗，本文对此进行探讨并给出以下建议：</p><ul><li>尽可能避免调用文件系统</li><li>尽可能使用缓存来表面调用文件系统</li><li>使用 <code>fs.stat</code> 或者 <code>fs.statSync</code> 时，总是设置 <code>throwIfNoEntry: false</code></li><li>尽可能限制向上遍历的行为</li></ul><p><a href="https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-2/" target="_blank" rel="noopener noreferrer">https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-2/</a></p><p><strong>React 新文档中的最佳实践</strong></p><p><a href="https://sebastiancarlos.com/react-js-best-practices-from-the-new-docs-1c65570e785d" target="_blank" rel="noopener noreferrer">https://sebastiancarlos.com/react-js-best-practices-from-the-new-docs-1c65570e785d</a></p><p><strong>React 服务器组件深度指南</strong></p><p><a href="https://www.plasmic.app/blog/how-react-server-components-work" target="_blank" rel="noopener noreferrer">https://www.plasmic.app/blog/how-react-server-components-work</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/LV-G9HPJJlZvxVjQRLFhqQ" target="_blank" rel="noopener noreferrer">一篇文章告诉你 golang 环境变量的所有基础操作</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/MMOc7BXHrxUZIPOvcXYLlw" target="_blank" rel="noopener noreferrer">CSS 原生嵌套语法来了！</a></p><p>📒 腾讯云开发者 2022 年度热文</p><p><a href="https://mp.weixin.qq.com/s/aHuCs_wLSDMcs-rcrb6tgQ" target="_blank" rel="noopener noreferrer">手把手实践一个DAPP，通往Web3.0之路！</a></p><p><a href="https://mp.weixin.qq.com/s/kFjfzwTOdaKA2ym63VR3DQ" target="_blank" rel="noopener noreferrer">探秘微信业务优化：DDD从入门到实践</a></p><p><a href="https://mp.weixin.qq.com/s/HKkt9cNZsUFdCR4nAlHeBA" target="_blank" rel="noopener noreferrer">揭秘前端眼中的Rust！</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/Bf5JNQjki9xLVzioYPy5qg" target="_blank" rel="noopener noreferrer">【好文分享】基于Jira的运维发布平台的设计与实现</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/raiKGm4jR8xyP3mYzh425w" target="_blank" rel="noopener noreferrer">DevopsCamp 第一期作业: 《cobra - 02 配置文件的读取与保存（简单）》 解题答案</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/Zx7ryE2I7LyM6YPkr-cSdg" target="_blank" rel="noopener noreferrer">《DevOpsCamp作业: cobra - 01 实现编译与参数绑定（简单）》 解题答案</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/wC9Wq7FJ_sKg1I-z8AozCQ" target="_blank" rel="noopener noreferrer">TS、Vue、React、SSR、Node、Deno、Bun：回顾2022，展望2023</a></p><p>📒 MDH 前端周刊第 84 期：tRPC、Zod、慢 Jest、React Debounce、SSSVG</p><p>《6 Common SVG Fails (and How to Fix Them)》，出自 CSS Tricks。作者梳理了 6 种常见错误（编者注：后几种感觉不常见），包括 viewbox 错误、width 和 height 缺失、无意 fill 或 stroke 的颜色、id 缺失、clipping 和 masking 冲突、命名空间缺失，并给出了针对这些问题的解法。</p><blockquote><p><a href="https://css-tricks.com/6-common-svg-fails-and-how-to-fix-them/" target="_blank" rel="noopener noreferrer">https://css-tricks.com/6-common-svg-fails-and-how-to-fix-them/</a></p></blockquote><p>《为何开发人员开始喜欢tRPC啦？》。tRPC 的优点包括：1）无需再次封装，直接使用函数调用远程服务，2）与Zod深度结合，可以直接使用Zod进行数据校验，3）使用非常简单，可以用在任何框架中，4）tRPC over HTTP协议非常简单，无论客户端还是服务端实现都非常简单。</p><blockquote><p><a href="https://linux-china.davao.page/blog/2023-01-14-why-trpc/" target="_blank" rel="noopener noreferrer">https://linux-china.davao.page/blog/2023-01-14-why-trpc/</a></p></blockquote><p>《Zod: The Next Biggest thing after Typescript》。看完这篇文章后，你可能不想再使用任何其他的验证库了！</p><blockquote><p><a href="https://dev.to/jareechang/zod-the-next-biggest-thing-after-typescript-4phh" target="_blank" rel="noopener noreferrer">https://dev.to/jareechang/zod-the-next-biggest-thing-after-typescript-4phh</a></p></blockquote><p>《Speeding up the JavaScript ecosystem - module resolution》，出自 marvinhagemeist。构建、测试、Lint 时有个性能大户是 module resolution，即如何找到文件，虽然规范层有规范层的解法（ESM 引用文件要带后缀），但在规范没大范围落地之前，也可以有一些解法。作者总结了几点，1）尽量避免对文件系统的调用，2）尽可能多的缓存以避免调用文件系统，3）当你使用 fs.stat 或 fs.statSync 时，总是设置 throwIfNoEntry: false，找不到文件时不抛错而是给 undefined，4）尽可能地限制向上的遍历行为。看完这篇，我给 umi 提了个 pr，调整了 webpack 配置里 extensions 的顺序。</p><blockquote><p><a href="https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-2/" target="_blank" rel="noopener noreferrer">https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-2/</a></p></blockquote><blockquote><p><a href="https://github.com/umijs/umi/pull/10326" target="_blank" rel="noopener noreferrer">https://github.com/umijs/umi/pull/10326</a></p></blockquote><p>《How to debounce and throttle in React without losing your mind》，作者是 NADIA MAKAREVICH，必读作者系列。关于如何在 React 中做 debounce 和 throttle 而不失去理智。作者先介绍了 debouce 和 throttle 的区别，以及各自的场景是什么，比如 throttle 的场景是拥有自动保存功能的编辑器，及时保存用户输入，以减少因意外情况可能导致的数据丢失。然后介绍了在 React 中使用 debouce 有多困难，你会面临 re-render、陈旧的 state、陈旧的闭包等问题，最终解法是 useRef + useEffect + 保存函数到 ref.current，因为 ref 是 mutable 的，不会有闭包数据陈旧问题。</p><blockquote><p><a href="https://www.developerway.com/posts/debouncing-in-react" target="_blank" rel="noopener noreferrer">https://www.developerway.com/posts/debouncing-in-react</a></p></blockquote><p><a href="https://www.yuque.com/chencheng/mdh-weekly/wi2lwhp8krgp6f2i" target="_blank" rel="noopener noreferrer">MDH 前端周刊第 84 期：tRPC、Zod、慢 Jest、React Debounce、SSSVG</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/Dg7uckLz-K190Q4g9niS2g" target="_blank" rel="noopener noreferrer">一期每日一GO群分享-flag、viper、协程池、异常处理</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[1月22日内容汇总]]></title>
            <link>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/1月22日内容汇总</link>
            <guid>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/1月22日内容汇总</guid>
            <pubDate>Sun, 22 Jan 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[image]]></description>
            <content:encoded><![CDATA[<p><img loading="lazy" alt="image" src="/assets/images/image-4ec0a2b591b761e425d4104e4f65967e.png" width="1500" height="1000" class="img_ev3q"></p><p>封面图：卷饼兔。</p><p>⭐️ 装了啥 2023</p><ul><li>编辑器主 WebStorm 开发项目，辅 VSCode 临时编辑项目，再辅 CotEditor 临时打开文件（注：如果是 Rust 项目，会用 VSCode）</li><li>WebStorm 插件只装了两个，Github Copilot、Inspection Lens，前者大幅提升编码效率，后者大幅提升编码体验</li><li>编程字体用 Monolisa、Dank Mono 和 Operator Mono，一个用久了看腻了切另一个</li><li>Terminal 工具是 iTerm2 + zsh + oh-my-zsh 的组合，zsh 额外装了 zsh-autosuggestions 和 fast-syntax-highlighting 插件</li></ul><p><a href="https://mp.weixin.qq.com/s/m2HhDuFefiLt-eSB9Ux55g" target="_blank" rel="noopener noreferrer">装了啥 2023</a></p><p>📒 Golang 相关文章</p><p><a href="https://mp.weixin.qq.com/s/GMhYFPwAaH90gQvsTvzN_Q" target="_blank" rel="noopener noreferrer">Golang实现一个linux命令ls命令（命令行工具构建）</a></p><p><a href="https://mp.weixin.qq.com/s/aYt-q5hsvOQYq99TnQCoCw" target="_blank" rel="noopener noreferrer">GO并发之好用的sync包</a></p><p><a href="https://mp.weixin.qq.com/s/-HIQtprVGs1G5Bd3DMYQig" target="_blank" rel="noopener noreferrer">Go语言原子操作</a></p><p><a href="https://mp.weixin.qq.com/s/_xU2A4b6JvVCus7tYV3YQQ" target="_blank" rel="noopener noreferrer">Go 并发安全与锁</a></p><p><a href="https://mp.weixin.qq.com/s/GHJAUM3hiCEyi6z5KnVfMg" target="_blank" rel="noopener noreferrer">Go定时器的三种实现方式</a></p><p><a href="https://mp.weixin.qq.com/s/WOfwayOu5UwsZJTYLTfOuA" target="_blank" rel="noopener noreferrer">10秒改struct性能直接提升15%，产品姐姐都夸我好棒</a></p><p>📒 相关文章推荐</p><p>关于未捕获 Promise 异常状态的问题 — 你可能会无感知地遇到 promise 的异常问题，Jake 就解决了这么一个关于 promise 报 unhandled promise rejection 错误的问题。</p><blockquote><p><a href="https://jakearchibald.com/2023/unhandled-rejections/" target="_blank" rel="noopener noreferrer">https://jakearchibald.com/2023/unhandled-rejections/</a></p></blockquote><p>关于 React 'Concurrent Mode' 的所有内容都在这 — 本文对 Concurrent Mode 进行深入的、以实例为导向的探索(并发模式已经是整合到 React 18 中的一组功能，而不是一个独特的"模式")。</p><blockquote><p><a href="https://blog.codeminer42.com/everything-you-need-to-know-about-concurrent-react-with-a-little-bit-of-suspense/" target="_blank" rel="noopener noreferrer">https://blog.codeminer42.com/everything-you-need-to-know-about-concurrent-react-with-a-little-bit-of-suspense/</a></p></blockquote><p>使用 GitHub Copilot 编写单元测试? — 即使你觉得像 Copilot 这样的 AI 工具在编写生产代码上不太靠谱，但它可能在快速编写单元测试上有一定的作用。</p><blockquote><p><a href="https://www.strictmode.io/articles/using-github-copilot-for-testing" target="_blank" rel="noopener noreferrer">https://www.strictmode.io/articles/using-github-copilot-for-testing</a></p></blockquote><p>类型安全的 React Query —— 一切都与信任有关 — 类型定义应该是值得信赖的。如果他们不是，他们“成为一个纯粹的建议”断言这篇文章建议可以做些什么来使他们成为这样。</p><blockquote><p><a href="https://tkdodo.eu/blog/type-safe-react-query" target="_blank" rel="noopener noreferrer">https://tkdodo.eu/blog/type-safe-react-query</a></p></blockquote><p>Zustand vs Signals：对比 React 状态管理库 — 将最时髦的状态管理库之一——zustand 与 Signals 进行比较，后者是 Preact 团队最新发布的一个状态管理库。</p><blockquote><p><a href="https://medium.com/@kevinschaffter/zustand-vs-signals-e664bff2ce4a" target="_blank" rel="noopener noreferrer">https://medium.com/@kevinschaffter/zustand-vs-signals-e664bff2ce4a</a></p></blockquote><p>⭐️ <a href="https://mp.weixin.qq.com/s/i3n0hoHRaYoDMWcC5DSQ3w" target="_blank" rel="noopener noreferrer">掌握了这篇 Dockerfile 中的 ARG 作用域， 就算 Build 镜像 CI 入门了 【文末抽奖】</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/irp0uBR-nJ87tZ_elMWPnA" target="_blank" rel="noopener noreferrer">「Go语言进阶」并发编程详解 | 文末抽奖</a></p><p>📒 <a href="https://juejin.cn/post/7189217535839961148" target="_blank" rel="noopener noreferrer">前端食堂技术周刊第 67 期：2022 State of JS、ESLint 2022、pnpm 2022、大淘宝 Web 端技术概览</a></p><p>📒 MDH 前端周刊第 83 期：React Query、CSS 3D、JavaScript Wrapped 2022、React 新文档</p><p>《Type-safe React Query》，Dominik 的每篇文章都值得深入阅读。React Query 的类型可以定义在哪？1）<code>useQuery&lt;Todos&gt;</code>，2）<code>const queryFn: Promise&lt;Todos&gt;</code>，3）<code>axios.get&lt;Todos&gt;</code>，4）<code>res.data as Todos</code>，5）不定义。不定义怎么有类型？用 zod，然后定义 schema，schema 不仅可用于校验后端数据，还会返回类型。</p><blockquote><p><a href="https://tkdodo.eu/blog/type-safe-react-query" target="_blank" rel="noopener noreferrer">https://tkdodo.eu/blog/type-safe-react-query</a></p></blockquote><p>《Data binding in React: how to work with forms in React》，johnwcomeau 的每篇文章也值得阅读，这篇比较新手向，深入解答了面试必问问题「受控和不受控」。</p><blockquote><p><a href="https://www.joshwcomeau.com/react/data-binding/" target="_blank" rel="noopener noreferrer">https://www.joshwcomeau.com/react/data-binding/</a></p></blockquote><p>《Clever Code Considered Harmful》，johnwcomeau 这周的另一篇文章。判断代码好不好的一个标准是，一个初级开发人员，一个职业生涯刚刚起步的人，会不会在理解这段代码时遇到困难？</p><blockquote><p><a href="https://www.joshwcomeau.com/career/clever-code-considered-harmful/" target="_blank" rel="noopener noreferrer">https://www.joshwcomeau.com/career/clever-code-considered-harmful/</a></p></blockquote><p>《React JS Best Practices From The New Docs》，Sebastian Carlos 阅读完 React 新官网文档后总结的 160 条笔记。我帮我节省了大量时间，我读完他的笔记后记了 20 多条笔记。但如果有空，还是应该完整阅读 React 的新文档。</p><blockquote><p><a href="https://sebastiancarlos.medium.com/react-js-best-practices-from-the-new-docs-1c65570e785d" target="_blank" rel="noopener noreferrer">https://sebastiancarlos.medium.com/react-js-best-practices-from-the-new-docs-1c65570e785d</a></p></blockquote><p>《JavaScript Wrapped 2022》，作者整理了 TypeScript、React、Angular、Vue、SSR、Node|Deno|Bun 的 2022 发展和 2023 展望，建议熟读。</p><blockquote><p><a href="https://vived.io/javascript-wrapped-2022-frontend-weekly-vol-119/" target="_blank" rel="noopener noreferrer">https://vived.io/javascript-wrapped-2022-frontend-weekly-vol-119/</a></p></blockquote><p>《3D in CSS》，交互式的 3D CSS 教程。主要是 4 个 CSS 属性，包括 perspective、perspectiveOrigin、translateZ 和 rotate3d。</p><blockquote><p><a href="https://garden.bradwoods.io/notes/css/3d" target="_blank" rel="noopener noreferrer">https://garden.bradwoods.io/notes/css/3d</a></p></blockquote><p>《Building a fast, animated image gallery with Next.js》，Vercel 把 Next.js Conf 2022 的照片搬上网，同时把这套代码开源。技术栈包括 Cloudinary、Next.js 图像组件、imagemin、Framer Motion、以及用 ai 生成 alt 文本等。</p><blockquote><p><a href="https://vercel.com/blog/building-a-fast-animated-image-gallery-with-next-js" target="_blank" rel="noopener noreferrer">https://vercel.com/blog/building-a-fast-animated-image-gallery-with-next-js</a></p></blockquote><p>《Our top Core Web Vitals recommendations for 2023》，本文 Google DevRel 团队认为在 2023 年提高 Core Web Vitals 性能的最有效方法的最佳实践集合。涉及的性能指标包括 LCP、TTFB、CLS、FID 和 INP，同时给出了每个指标提升的注意点和可执行操作。</p><blockquote><p><a href="https://web.dev/top-cwv-2023/" target="_blank" rel="noopener noreferrer">https://web.dev/top-cwv-2023/</a></p></blockquote><p>《The hardest part of web dev》，关于 timing 的知识。其中 react 中，1）渲染函数在React更新DOM之前运行，2）useInsertionEffect回调在React更新DOM后运行，但在浏览器重新计算页面布局之前，3）useLayoutEffect回调在浏览器重新计算页面布局后运行（考虑到useInsertionEffect回调注入的任何CSS），但在浏览器重新绘制之前，4）useEffect回调在浏览器完成重绘后运行。</p><blockquote><p><a href="https://alexvipond.dev/blog/the-hardest-part-of-web-dev" target="_blank" rel="noopener noreferrer">https://alexvipond.dev/blog/the-hardest-part-of-web-dev</a></p></blockquote><p><a href="https://www.yuque.com/chencheng/mdh-weekly/tyvzbo1venhyi7l4" target="_blank" rel="noopener noreferrer">MDH 前端周刊第 83 期：React Query、CSS 3D、JavaScript Wrapped 2022、React 新文档</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/72UbwZTxo36eJVqGq8HBgw" target="_blank" rel="noopener noreferrer">自从项目上了SkyWalking，睡觉真香！</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/Rrz-UEx2SwYmyWC5rKh4Wg" target="_blank" rel="noopener noreferrer">Go 语言 Web 应用怎么使用 Nginx 部署</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/G8mEAKRYbaae_rFBVJqdeg" target="_blank" rel="noopener noreferrer">发现conc并发库一个有趣的问题</a></p><p>⭐️ <a href="https://juejin.cn/post/7189102074825539640" target="_blank" rel="noopener noreferrer">醒醒吧，未来不会有 Go2 了！</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/9pfznxXKHCv-QEZBqHw1YQ" target="_blank" rel="noopener noreferrer">Go语言中常见100问题-#27 Inefficient map initialization</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/g4_HWOzL3NNFvyOHseLE6Q" target="_blank" rel="noopener noreferrer">「每周译Go」了解 Go 中的 init</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/JKWbyr4Yt7A6l1nFsANUcQ" target="_blank" rel="noopener noreferrer">Go 设计模式｜组合，一个对数据结构算法和职场都有提升的设计模式</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/alDla5kp0XXFJSExYZPWEA" target="_blank" rel="noopener noreferrer">八个 Web Components 前端框架，一定有一个你用得上</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/E5LM05OzLj0VNxPIiu6O1g" target="_blank" rel="noopener noreferrer">Go语言爱好者周刊：第 174 期</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[1月15日内容汇总]]></title>
            <link>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/1月15日内容汇总</link>
            <guid>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/1月15日内容汇总</guid>
            <pubDate>Sun, 15 Jan 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[📒 相关文章推荐]]></description>
            <content:encoded><![CDATA[<p>📒 相关文章推荐</p><p>Gluon：基于网站创建桌面应用的框架 — 这是一种使用 Node 和已安装的浏览器把 Web 站点构建为桌面应用的新方案。值得注意的是，Gluon 同时支持 Chromium 和 Firefox。Deno 也可以替代 Node。已经支持 Windows 和 Linux，本周刚刚完成了对 macOS 的初步支持。</p><blockquote><p><a href="https://gluonjs.org/" target="_blank" rel="noopener noreferrer">https://gluonjs.org/</a></p></blockquote><p>Node v19.3.0 (Current) 发布 — 这是几周前发布的版本，v19.3 是一个典型的增量更新版本，内容包含了 npm 升级到 v9.2.0，这本身是一个足够需要阅读发行说明的内容。</p><blockquote><p><a href="https://nodejs.org/en/blog/release/v19.3.0/" target="_blank" rel="noopener noreferrer">https://nodejs.org/en/blog/release/v19.3.0/</a></p></blockquote><p>构建同构 JS 库的五大挑战 — 同构（isomorphic）的意思是代码可以同时在客户端和服务器上以最小调整就可以运行的代码或者库。</p><blockquote><p><a href="https://doordash.engineering/2022/12/06/five-challenges-to-building-an-isomorphic-javascript-library/" target="_blank" rel="noopener noreferrer">https://doordash.engineering/2022/12/06/five-challenges-to-building-an-isomorphic-javascript-library/</a></p></blockquote><p>2023 年如何发布 npm — 这是一个指南，描述了如何在 2023 年将开源包发布到 npm 以及需要注意的事项。如果你想在 2023 年编写和发布一个包，你需要用 Typescript 编写它并将其发布为 ES 模块。</p><blockquote><p><a href="https://blog.taskli.st/posts/how-to-publish-to-npm-in-2023" target="_blank" rel="noopener noreferrer">https://blog.taskli.st/posts/how-to-publish-to-npm-in-2023</a></p></blockquote><p>🌟 2022 年的 JavaScript 新星项目 — Michael Rambeau 第七次以 JavaScript 领域的"趋势项目"综述为我们的 2023 年度揭幕。Bun 占据了 2022 年的头把交椅，但我们会把其他的留给你去看。一些特邀作者也分享了他们对生态系统的看法。</p><blockquote><p><a href="https://risingstars.js.org/2022/en" target="_blank" rel="noopener noreferrer">https://risingstars.js.org/2022/en</a></p></blockquote><p>Evan You 回顾 2022 年与展望 2023 年 — 你可能会因为 Vue.js 和 Vite 而认识 Evan，在这里他回顾了 2022 年 Vue 世界发生的事情（比如 Vue 3.x 成为新的默认版本）以及我们在 2023 年 可以期待的事情，包括神秘的 Vapor 模式。他还提醒我们，Vue 2.x 还有一年才会失效。</p><blockquote><p><a href="https://blog.vuejs.org/posts/2022-year-in-review.html" target="_blank" rel="noopener noreferrer">https://blog.vuejs.org/posts/2022-year-in-review.html</a></p></blockquote><p>JS Function Composition：有什么大不了的？ — James 关于 JavaScript 基础知识的文章总是很受欢迎，去年我们得到了一篇新鲜的文章，关注一个常见的活动：函数组成。"这有什么大不了的？"他问道。</p><blockquote><p><a href="https://jrsinclair.com/articles/2022/javascript-function-composition-whats-the-big-deal/" target="_blank" rel="noopener noreferrer">https://jrsinclair.com/articles/2022/javascript-function-composition-whats-the-big-deal/</a></p></blockquote><p>开发人员面临的十个常见的 JavaScript 问题 — 这可是一篇好文章。如果你已经用 JavaScript 工作了很多年，这些都是你（可能）知道要避免的坑，但是这里有足够的东西可以让你反复思考。</p><blockquote><p><a href="https://www.toptal.com/javascript/10-most-common-javascript-mistakes" target="_blank" rel="noopener noreferrer">https://www.toptal.com/javascript/10-most-common-javascript-mistakes</a></p></blockquote><p>Storybook v7.0 进入 Beta 阶段 — 这是近两年来这个流行的前端 UI 开发工具的第一个大版本更新（这里会有 Breaking Change）。有很多新功能，包括性能改进、交互测试等等。在此查看 完整的更改日志。您现在可以通过 迁移指南 尝试 Beta 版。</p><blockquote><p><a href="https://storybook.js.org/blog/7-0-beta" target="_blank" rel="noopener noreferrer">https://storybook.js.org/blog/7-0-beta</a></p></blockquote><p>在 React Native 中对 TypeScript 进行头等支持 — 随着新发布的 v0.71，你会得到一个新的“默认是 TypeScript (TS)”的应用程序模板 —— TS 声明随基本包一起发布，文档现在也是 TypeScript 优先的（当然，Flow 或常规 JavaScript 仍然是可以使用的）。</p><blockquote><p><a href="https://reactnative.dev/blog/2023/01/03/typescript-first" target="_blank" rel="noopener noreferrer">https://reactnative.dev/blog/2023/01/03/typescript-first</a></p></blockquote><p>在 Reddit 上，有一个关于 为什么人们喜欢使用 Next.js 的讨论。</p><blockquote><p><a href="https://www.reddit.com/r/reactjs/comments/zprham/why_do_people_like_using_nextjs/" target="_blank" rel="noopener noreferrer">https://www.reddit.com/r/reactjs/comments/zprham/why_do_people_like_using_nextjs/</a></p></blockquote><p>⭐️ Next.js 刚刚在 GitHub 中 超过了 Create React App 的 Star 数，如果你喜欢这种受欢迎程度的测量方式。</p><blockquote><p><a href="https://twitter.com/i/web/status/1610165503468658689" target="_blank" rel="noopener noreferrer">https://twitter.com/i/web/status/1610165503468658689</a></p></blockquote><p>3 个导致 App 崩溃的 React 错误 — 一位名为 Jack Herrington 的 React YouTuber 讲解了三个编写 React 时会犯的错误（以及如何解决它们）。</p><blockquote><p><a href="https://www.youtube.com/watch?v=QuLfCUh-iwI" target="_blank" rel="noopener noreferrer">https://www.youtube.com/watch?v=QuLfCUh-iwI</a></p></blockquote><p>在 TypeScript 中像专家一样处理错误 — “学习我用来处理错误和编写更简洁代码的设计模式。”</p><blockquote><p><a href="https://engineering.udacity.com/handling-errors-like-a-pro-in-typescript-d7a314ad4991?gi=c2ed84ad0ecd" target="_blank" rel="noopener noreferrer">https://engineering.udacity.com/handling-errors-like-a-pro-in-typescript-d7a314ad4991?gi=c2ed84ad0ecd</a></p></blockquote><p>📒 <a href="https://juejin.cn/post/7187944520808398906" target="_blank" rel="noopener noreferrer">了解JS静态分析，打开前端优化新思路</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/D-Ma_7X1Hbg_rBHG_H5PYw" target="_blank" rel="noopener noreferrer">用代码画一只小兔子给大家拜年啦！</a></p><p>📒 <a href="https://juejin.cn/post/7184730074497679415" target="_blank" rel="noopener noreferrer">记落地vite到项目中的遇到一个bug, 最终被vite官方merge pr</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/NtBzM8l54HRVSpapKR_0sg" target="_blank" rel="noopener noreferrer">聊聊Go与TLS 1.3</a></p><p>📒 Google 出品的 Rust 教程</p><p><a href="https://github.com/google/comprehensive-rust" target="_blank" rel="noopener noreferrer">https://github.com/google/comprehensive-rust</a></p><p>📒 <a href="https://zhuanlan.zhihu.com/p/391248835" target="_blank" rel="noopener noreferrer">你可能并不需要微前端</a></p><p>📒 UMI 微生成器调研</p><p><a href="https://umijs.org/docs/guides/generator" target="_blank" rel="noopener noreferrer">https://umijs.org/docs/guides/generator</a></p><p><a href="https://github.com/umijs/umi/blob/master/packages/preset-umi/src/commands/generators/component.ts" target="_blank" rel="noopener noreferrer">https://github.com/umijs/umi/blob/master/packages/preset-umi/src/commands/generators/component.ts</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/mAlEUwxorARP1tRoAMF7LA" target="_blank" rel="noopener noreferrer">【面试高频题】难度 3.5/5，综合最短路的 DP 问题</a></p><p>🌟 <a href="https://mp.weixin.qq.com/s/AJ4IBgYJ-Mq9OSICG0hRCA" target="_blank" rel="noopener noreferrer">我的信息流 2023.1</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/iwA4G_Cut8zm15EswUUXhQ" target="_blank" rel="noopener noreferrer">Go 1.19.5、1.18.10 更新涉及 compiler, linker, net/http, sync/atomic</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/pen6G2aFsPfSqhKjgocVjQ" target="_blank" rel="noopener noreferrer">面试问 Dockerfile 的优化， 千万不要只会说减少层数</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/8_pJiuOzoQt6xyoLUX0CIw" target="_blank" rel="noopener noreferrer">Go 服务网络不通？net/http自带的这个工具帮你快速定位</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/CsV1Tyr-TahCFBWZDeNFWA" target="_blank" rel="noopener noreferrer">面试官：net/http库知道吗？能说说优缺点吗</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/WXeUuUdgF_3djqBhh1siQA" target="_blank" rel="noopener noreferrer">模块联邦在微前端架构中的实践</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/2-lu7l-4E5mwdQwbogpA4g" target="_blank" rel="noopener noreferrer">【综合笔试题】难度 4.5/5，经典次短路问题</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/OIqgqjXEvVmDUmnRqq4PGw" target="_blank" rel="noopener noreferrer">加大力度！Go 将会增强 Go1 向后兼容性</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/xQlVQsxhSdzoRBnq3RVxsw" target="_blank" rel="noopener noreferrer">聊聊Prometheus Gauge的增减操作实现</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/43I-cHDuI0afkiPnlWmBhA" target="_blank" rel="noopener noreferrer">Git操作不规范，战友提刀来相见！「文末抽奖」</a></p><p>📒 <a href="https://juejin.cn/post/7186611343749808183" target="_blank" rel="noopener noreferrer">前端食堂技术周刊第 66 期：2022 JS Rising Stars、Lightning CSS、年度最受欢迎文章</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/u9ANageSPThya4fA0Cq8Rw" target="_blank" rel="noopener noreferrer">写出易维护的代码｜React开发的设计模式及原则</a></p><p>📒 MDH 前端周刊第 82 期：Lightning CSS、Tailwindcss、HTTPie AI、chalk-next 投毒</p><p>《Zustand vs. Signals》，作者从 DX、性能和 Devtool 三个方面了对比这两个「小众」的状态管理库，简单说就是，1）Zustand 生态和周边更好，而 Signals 性能更好和更自动，2）作者下一个大型项目的选择还是 Zustand，因为对 Signals 的实践以及用的 React 内部 API 不太方向。</p><blockquote><p><a href="https://medium.com/@kevinschaffter/zustand-vs-signals-e664bff2ce4a" target="_blank" rel="noopener noreferrer">https://medium.com/@kevinschaffter/zustand-vs-signals-e664bff2ce4a</a></p></blockquote><p>Evan You 写了一篇 《2022 Year In Review》，介绍 2022 总结和 2023 规划。2022 主要是默认 Vue 3、Volar 1、Vue Npm 下载量 x2、回传 Vue 3 功能的 Vue 2.7；2023 则是细粒度 Mirror 版本、类 Solid 的 Vapor Mode 编译模式等。</p><blockquote><p><a href="https://blog.vuejs.org/posts/2022-year-in-review.html" target="_blank" rel="noopener noreferrer">https://blog.vuejs.org/posts/2022-year-in-review.html</a></p></blockquote><p>《How to ship》 包含了 4 个关于产品如何准时发布的 Tips，1）明确 MAVP（最小实际可行产品）的边界，注意不是偏 DEMO 类的 MVP，2）在前者的基础上削减范围，3）搭配可灵活调整的 Deadline，4）别让自己成为团队卡点。</p><blockquote><p><a href="https://www.industrialempathy.com/posts/how-to-ship/" target="_blank" rel="noopener noreferrer">https://www.industrialempathy.com/posts/how-to-ship/</a></p></blockquote><p>《React ref Callback Use–Cases》，你可能不知道 ref 除了是 object 以外，还可以是 function，即 ref callback。ref callback 有一些应用场景，比如 mount 时（新增一个 list item 时）做滚动或聚焦、计算 DOM 尺寸或滚动位置、传递 DOM 给多个消费者等。</p><blockquote><p><a href="https://julesblom.com/writing/ref-callback-use-cases" target="_blank" rel="noopener noreferrer">https://julesblom.com/writing/ref-callback-use-cases</a></p></blockquote><p>《A React Developer’s First Take on Solid》，一个 React 开发者对 Solid 的第一印象。1）Solid 的优点是小和快，2）同时也有一些由于引入 Proxy 以及 Solid 不同的组件渲染机制后的缺点，比如 prop 不能在函数参数里析构等，3）SolidStart 是一个测试软件，有大量粗糙的边界场景，4）会在真实项目中用吗？不会！</p><blockquote><p><a href="https://jakelazaroff.com/words/a-react-developers-first-take-on-solid/" target="_blank" rel="noopener noreferrer">https://jakelazaroff.com/words/a-react-developers-first-take-on-solid/</a></p></blockquote><p>《Getting started with SolidStart》，SolidStart 入门文章，手把手教你写一个旅行 App。注：SolidStart 是基于 Solid 的元框架。</p><blockquote><p><a href="https://blog.logrocket.com/getting-started-solidstart-solid-js-framework/" target="_blank" rel="noopener noreferrer">https://blog.logrocket.com/getting-started-solidstart-solid-js-framework/</a></p></blockquote><p>《JavaScript Rising Stars 2022》，一年一期，这是第 7 期，可以了解 2022 JavaScript 社区的变化，但是以 Github Star 为衡量标准，并不能完全代表其流行度。</p><blockquote><p><a href="https://risingstars.js.org/2022/zh" target="_blank" rel="noopener noreferrer">https://risingstars.js.org/2022/zh</a></p></blockquote><p><a href="https://mp.weixin.qq.com/s/IYRtsVU5VLELeRh_-7nfgg" target="_blank" rel="noopener noreferrer">MDH 前端周刊第 82 期：Lightning CSS、Tailwindcss、HTTPie AI、chalk-next 投毒</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/HfgifbdzBSOZkDb0ru0XsA" target="_blank" rel="noopener noreferrer">2022 年前端大事记</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/HbFVODpDEzEZ047kv-LYbg" target="_blank" rel="noopener noreferrer">Go1.20 新特性：context支持自定义取消原因</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/_e9Qa97gZvgv9n-pFB4lFw" target="_blank" rel="noopener noreferrer">Go学设计模式--装饰器和职责链，哪个模式实现中间件更科学</a></p><p>📒 <a href="https://juejin.cn/post/7073001183123603470" target="_blank" rel="noopener noreferrer">平时的工作如何体现一个人的技术深度？</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/KMFF6bg3YspPVzjYbMsm0Q" target="_blank" rel="noopener noreferrer">【第2832期】V8 执行 JavaScript 的过程</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/PKtrqHFTYWyAVSolKVOoBQ" target="_blank" rel="noopener noreferrer">Golang 库: 为什么 Golang slog 库不支持 Fatal</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/Immr4DD-XA-noOEkZ6flKg" target="_blank" rel="noopener noreferrer">Golang 库: golang slog 怎么设置日志 Debug 等级</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/0JbLDkJboDDihy-7N4MMPw" target="_blank" rel="noopener noreferrer">Golang slog 介绍</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/aLiqEuD9T8sERVrfGDSxvw" target="_blank" rel="noopener noreferrer">一文读懂 Go Http Server 原理</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/Fuc4557t3OWvJ3S2oHi1cA" target="_blank" rel="noopener noreferrer">「每周译Go」了解 Go 中的 defer</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/Zigqlbsac7vbKgnlYhGb7A" target="_blank" rel="noopener noreferrer">Go语言爱好者周刊：第 173 期 — 这个并发库真心好</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[1月8日内容汇总]]></title>
            <link>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/1月8日内容汇总</link>
            <guid>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/1月8日内容汇总</guid>
            <pubDate>Sun, 08 Jan 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[📒 【第2831期】低代码技术在研发团队的应用模式探讨]]></description>
            <content:encoded><![CDATA[<p>📒 <a href="https://mp.weixin.qq.com/s/M34txaazc76NcF7ovd_9lw" target="_blank" rel="noopener noreferrer">【第2831期】低代码技术在研发团队的应用模式探讨</a></p><p>📒 Golang 内存管理</p><p><a href="https://golang.design/under-the-hood/zh-cn/part2runtime/ch07alloc/basic/" target="_blank" rel="noopener noreferrer">https://golang.design/under-the-hood/zh-cn/part2runtime/ch07alloc/basic/</a></p><p><a href="https://zhuanlan.zhihu.com/p/27807169" target="_blank" rel="noopener noreferrer">https://zhuanlan.zhihu.com/p/27807169</a></p><p><a href="https://medium.com/a-journey-with-go/go-memory-management-and-allocation-a7396d430f44" target="_blank" rel="noopener noreferrer">https://medium.com/a-journey-with-go/go-memory-management-and-allocation-a7396d430f44</a></p><p>📒 <a href="https://juejin.cn/post/7164175171358556173" target="_blank" rel="noopener noreferrer">【中级/高级前端】为什么我建议你一定要读一读 Tapable 源码</a></p><p>📒 <a href="https://juejin.cn/post/7170852747749621791" target="_blank" rel="noopener noreferrer">二十张图片彻底讲明白Webpack设计理念，以看懂为目的</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/TYxqo1BniI-wfKVHQsrjjw" target="_blank" rel="noopener noreferrer">Go语言中常见100问题-#26 slices and memory leaks</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/i1loQpQufni3v4Ho2J6Pgw" target="_blank" rel="noopener noreferrer">一个 Go 程序的 Benchmark 基准分析工具</a></p><p>📒 <a href="https://juejin.cn/post/7184309446439338043" target="_blank" rel="noopener noreferrer">El-Table 源码解析(二)——探究多级表头实现原理</a></p><p>📒 <a href="https://juejin.cn/post/7184277431790862397" target="_blank" rel="noopener noreferrer">【综合笔试题】难度 3/5，近期小厂面试原题</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/eLZzA0vlRbiMxwGmxcN5GQ" target="_blank" rel="noopener noreferrer">我所知道的webpack5那些不太一样的改变</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/3iT_3TdupUuWpqt8-cN8EQ" target="_blank" rel="noopener noreferrer">【第2826期】2022 年回顾：Web 性能有哪些新变化</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/QlzH18i72pWPm012t7d42Q" target="_blank" rel="noopener noreferrer">Golang知识点(defer): 面试经常变量在 defer 中的值， 其实在问变量的作用域</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/FEPXDMFfvKgmtsymVTWzHw" target="_blank" rel="noopener noreferrer">Go Modules知识点总结</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/X0s_y6B9f1ddgfvd9Re6sw" target="_blank" rel="noopener noreferrer">「每周译Go」如何在 Go 中使用可变参数函数</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/0vEWAFWxI2TZIuQdOplOkQ" target="_blank" rel="noopener noreferrer">MDH 前端周刊第 81 期：Next.js 13.1、Bun 0.4、WASM napi、React Query</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/fp_VN7Kj20-tlGGWk8aqcA" target="_blank" rel="noopener noreferrer">Go语言爱好者周刊：第 172 期 —— 元旦快乐！还有没阳的吗</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[1月1日内容汇总]]></title>
            <link>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/1月1日内容汇总</link>
            <guid>https://frontend-weekly.oss-cn-hangzhou.aliyuncs.com/2023/1月1日内容汇总</guid>
            <pubDate>Sun, 01 Jan 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[📒 相关文章推荐]]></description>
            <content:encoded><![CDATA[<p>📒 相关文章推荐</p><p>一个关于 <code>useEffect</code> 的可视化指南 — 奇怪的是，最受欢迎的文章出现在 2022 年的第一期中。作者创建了一系列 React 渲染的可视化指南文章（比如关于 useMemo 和 props 的文章），在这篇文章中他把注意力转向了 useEffect。如果你想了解更多，还有一个关于 头等函数如何工作的可视化演示</p><blockquote><p><a href="https://alexsidorenko.com/blog/useeffect/" target="_blank" rel="noopener noreferrer">https://alexsidorenko.com/blog/useeffect/</a></p></blockquote><p>我们能承认 React Hooks 是个坏主意吗？ — 第二受欢迎的项目是一个“快速链接”，但这个话题有足够的争议，让很多人谈论！Amy 认为“React Hooks 是个坏主意”。不管你喜不喜欢，你都会有自己的看法</p><blockquote><p><a href="https://medium.com/codex/can-we-all-just-admit-react-hooks-were-a-bad-idea-c48120c5188d" target="_blank" rel="noopener noreferrer">https://medium.com/codex/can-we-all-just-admit-react-hooks-were-a-bad-idea-c48120c5188d</a></p></blockquote><p>2022 React 库 — React 生态系统已经变得如此之大，问题更多的是选择太多，而不是没有需要的东西。如果您正在为一个新项目选择库，那么这个列表（Robin 多年来一直在更新）仍然很有用。希望我们能看到 2023 年的版本</p><blockquote><p><a href="https://www.robinwieruch.de/react-libraries/" target="_blank" rel="noopener noreferrer">https://www.robinwieruch.de/react-libraries/</a></p></blockquote><p>回顾 2022 的 React 趋势 — 在今年年初，作者看了看他认为 2022 年重要的事情。他在 Remix、服务端渲染、并发渲染和行为测试方面做得很好，这些都是今年讨论最多的话题</p><blockquote><p><a href="https://www.chakshunyu.com/blog/what-you-should-definitely-look-out-for-in-react-in-2022/" target="_blank" rel="noopener noreferrer">https://www.chakshunyu.com/blog/what-you-should-definitely-look-out-for-in-react-in-2022/</a></p></blockquote><p>Awesome React Components：一个精心整理的组件清单</p><blockquote><p><a href="https://github.com/brillout/awesome-react-components" target="_blank" rel="noopener noreferrer">https://github.com/brillout/awesome-react-components</a></p></blockquote><p>React Render Tracker：发现有关意外重渲染的性能问题 — 这个工具可以显示组件树状态随时间变化的差异，这样您就可以更好地研究发生了什么</p><blockquote><p><a href="https://github.com/lahmatiy/react-render-tracker" target="_blank" rel="noopener noreferrer">https://github.com/lahmatiy/react-render-tracker</a></p></blockquote><p>Plasmo：“它就像浏览器扩展的 Next.js” — 一个面向 React 和 TypeScript 的框架，用于构建您自己的浏览器扩展</p><blockquote><p><a href="https://github.com/PlasmoHQ/plasmo" target="_blank" rel="noopener noreferrer">https://github.com/PlasmoHQ/plasmo</a></p></blockquote><p><code>&lt;ClickToComponent /&gt;</code>：快速跳转到组件源代码</p><blockquote><p><a href="https://github.com/ericclemmons/click-to-component" target="_blank" rel="noopener noreferrer">https://github.com/ericclemmons/click-to-component</a></p></blockquote><p>要避免的 10 个 React 反模式 — 一个精心呈现的 8 分钟视频，快速介绍了各种替代的更优方法（或至少值得斟酌）</p><blockquote><p><a href="https://www.youtube.com/watch?v=b0IZo2Aho9Y" target="_blank" rel="noopener noreferrer">https://www.youtube.com/watch?v=b0IZo2Aho9Y</a></p></blockquote><p>📒 Golang 相关文章</p><p><a href="https://mp.weixin.qq.com/s/S2InTxuwg0G-wPSy1Q34PQ" target="_blank" rel="noopener noreferrer">Go 1.18 新增三大功能之一“模糊测试”使用方式</a></p><p><a href="https://mp.weixin.qq.com/s/0JKH-Bo8n9I9zT683ZA-iw" target="_blank" rel="noopener noreferrer">Go 1.18 新增三大功能之一“泛型”怎么使用</a></p><p><a href="https://mp.weixin.qq.com/s/2jzg2PIK_esjTxSFMkp02A" target="_blank" rel="noopener noreferrer">Go 语言开源项目使用的函数选项模式</a></p><p><a href="https://mp.weixin.qq.com/s/DxEeLUS8hotYh8Js5FyR5w" target="_blank" rel="noopener noreferrer">Go 语言 context 最佳实践</a></p><p><a href="https://mp.weixin.qq.com/s/R8f_-cl98th7ZiSVxaeUAQ" target="_blank" rel="noopener noreferrer">Go 语言 errgroup 库的使用方式和实现原理</a></p><p><a href="https://mp.weixin.qq.com/s/NXbYTX96hFfwYuh6gACAHg" target="_blank" rel="noopener noreferrer">Go 语言一次性定时器使用方式和实现原理</a></p><ul><li><code>new</code>：为变量分配存储空间，返回指针类型，一般不常用</li><li><code>make</code>：为复合数据类型（<code>slice</code>、<code>map</code>、<code>chan</code>）分配存储空间</li></ul><p>在 Go 语言中，原生类型都有默认值，即类型的零值</p><ul><li>布尔型的零值：<code>false</code></li><li>整型的零值：<code>0</code></li><li>字符串类型的零值：<code>""</code></li><li>指针、函数、接口、Slice、Map、Channel 的零值：<code>nil</code></li></ul><p>需要注意的是，Go 语言类型的零值初始化是递归完成的，即 <strong>数组</strong>、<strong>结构体</strong> 的每个元素都进行零值初始化。</p><p>在 Go 语言中，推荐定义零值可用的结构体，不仅对程序的安全性和正确性非常重要，它还可以无需预先显式初始化即可直接使用，使 Go 程序代码更优雅。</p><p><a href="https://mp.weixin.qq.com/s/8Eh7e9-pX6OqFNrDqugxaA" target="_blank" rel="noopener noreferrer">Go 语言为什么建议定义零值可用的结构体</a></p><p>总结一下，短变量声明在同一作用域内重复使用，只是重新赋值，不会重新创建变量（即指针还是同一个），但是如果在不同作用域（例如 <code>if</code> 语句块），就会创建一个新的变量（内存地址与之前不同）。</p><p><a href="https://mp.weixin.qq.com/s/kGC1X5DQ7eQAdn70ZhElNw" target="_blank" rel="noopener noreferrer">Go 语言怎么解决编译器错误“err is shadowed during return”</a></p><p><a href="https://mp.weixin.qq.com/s/QyWuOsPUFq7XqvIbnBJP_A" target="_blank" rel="noopener noreferrer">Go 语言怎么处理三方接口返回数据</a></p><p><a href="https://mp.weixin.qq.com/s/h__5zKCKUkxUTmBjbKsA2w" target="_blank" rel="noopener noreferrer">Go 语言使用 goroutine 运行闭包的“坑”</a></p><p><a href="https://mp.weixin.qq.com/s/iACaQ8vsxEvUVsDJ5QO6UA" target="_blank" rel="noopener noreferrer">Go 语言内存逃逸案例</a></p><p><a href="https://mp.weixin.qq.com/s/34cmyuPOjlhAQm6zYhBIsg" target="_blank" rel="noopener noreferrer">Go 语言逃逸分析</a></p><p><a href="https://mp.weixin.qq.com/s/fhqtRTGgVu6aSC581luvCg" target="_blank" rel="noopener noreferrer">Go 语言怎么使用变长参数函数</a></p><p><a href="https://mp.weixin.qq.com/s/nL5uIGCXYON5doGGeHchAQ" target="_blank" rel="noopener noreferrer">Go 语言错误处理为什么更推荐使用 pkg/errors 三方库</a></p><p><a href="https://mp.weixin.qq.com/s/teOYvNOQ_e5z7iyiiAkNPw" target="_blank" rel="noopener noreferrer">Go 项目使用 Makefile</a></p><p><a href="https://mp.weixin.qq.com/s/q6mFgLYt3hpBhXnyEcaXzQ" target="_blank" rel="noopener noreferrer">Go 应用程序设计标准</a></p><p><a href="https://mp.weixin.qq.com/s/7uwuHeKjQNACl17-PYrpUw" target="_blank" rel="noopener noreferrer">Go 语言整洁架构实践</a></p><p><a href="https://mp.weixin.qq.com/s/nbyhaomyLII-U9lEB5Cv8w" target="_blank" rel="noopener noreferrer">Go 语言怎么使用 Docker 部署项目</a></p><p><a href="https://mp.weixin.qq.com/s/5B-sPyk4qgFsplsJ9mMD_Q" target="_blank" rel="noopener noreferrer">Golang 语言怎么打印结构体指针类型字段的值</a></p><p><a href="https://mp.weixin.qq.com/s/9s6YXJsZcXyfgWDYG-WZOQ" target="_blank" rel="noopener noreferrer">Golang 语言怎么避免空指针引发的 panic</a></p><p><a href="https://mp.weixin.qq.com/s/NbTzlvubUVUBakwKKNbcVw" target="_blank" rel="noopener noreferrer">Golang 语言该用命名返回值吗</a></p><p>总结一下：</p><ul><li><code>unsafe.Pointer</code> 主要用来实现 <strong>指针类型转换</strong>，任意指针类型 <code>*T</code> 都可以转换为 <code>unsafe.Pointer</code>，<code>unsafe.Pointer</code> 可以转换为任何类型的指针值 <code>*T</code></li><li><code>uintptr</code> 主要用来实现 <strong>指针运算</strong>，实际是数值类型，可以用于存储内存地址。将 <code>unsafe.Pointer</code> 转换为 <code>uintptr</code>，然后使用 <code>uintptr</code> 值进行算术运算，最后将运算结果 <code>uintptr</code> 值再转换为 <code>unsafe.Pointer</code></li></ul><p><a href="https://mp.weixin.qq.com/s/MvULt7x0m4IBmz1bNzLvCQ" target="_blank" rel="noopener noreferrer">Golang 语言中的非类型安全指针</a></p><p>显式类型转换：</p><div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// 整型变量省略类型，编译器根据字面量推导默认是 int</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// 如果需要声明指定类型的整型变量，也可用显式类型转换，例如：</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">int8</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">100</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">b </span><span class="token operator" style="color:#393A34">:=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">int8</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">60</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>变量声明块：</p><div class="language-go codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-go codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a </span><span class="token builtin">int</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    b </span><span class="token builtin">int</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">200</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    c </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">300</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    d </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3.14</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    f </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    e</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> f</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> g </span><span class="token builtin">int</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">30</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    h</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> i</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> j </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"a"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"b"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"c"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><a href="https://mp.weixin.qq.com/s/croxWsCnjsaPJy9zigx4Gg" target="_blank" rel="noopener noreferrer">Golang 语言的多种变量声明方式和使用场景</a></p><p><a href="https://mp.weixin.qq.com/s/cGWZN_2uKRyDaI75VoGEfw" target="_blank" rel="noopener noreferrer">Golang 语言中的内置函数 make 和 new</a></p><p><a href="https://juejin.cn/post/7183132625580605498" target="_blank" rel="noopener noreferrer">深入理解 go reflect - 反射基本原理</a></p><p><a href="https://juejin.cn/post/7173965896656879630" target="_blank" rel="noopener noreferrer">go interface 设计与实现</a></p><p><a href="https://juejin.cn/post/7174576400391733284" target="_blank" rel="noopener noreferrer">go Context 设计与实现</a></p><p><a href="https://juejin.cn/post/7174963221294481445" target="_blank" rel="noopener noreferrer">深入理解 go unsafe</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/MFd1R5VeEW0eLk-A4BqSQQ" target="_blank" rel="noopener noreferrer">天呐！我用 go 从零开始写了一个 k8s 应用管理工具（附完整代码和开发过程）</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/10Ll8ipVGWg4HU4hjwILsQ" target="_blank" rel="noopener noreferrer">没想到在 Docker 容器中设置时区这么简单</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/xmml8gmz88G5zjgvxlKb_A" target="_blank" rel="noopener noreferrer">先聊聊「内存分配」，再聊聊Go的「逃逸分析」</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/6vk-oYh7kuVK2zcDU2bICw" target="_blank" rel="noopener noreferrer">字节一面：服务端挂了，客户端的 TCP 连接还在吗</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/9Zqe2pDWOT2qIt39xqOD7w" target="_blank" rel="noopener noreferrer">详解全网最快Go泛型跳表【内附源码】</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/MRBEJHZBMS9s0w7UhseQWA" target="_blank" rel="noopener noreferrer">2022年Go语言盘点：泛型落地，无趣很好，稳定为王</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/tz9wyjKHDC6GNB8fFfgtUw" target="_blank" rel="noopener noreferrer">【第2824期】图解浏览器的多进程渲染机制</a></p><p>📒 在 Docker build 环境持久化 <code>node_modules</code> 目录</p><p>想在 docker build 环境中持久化 <code>node_modules</code> 需要使用到 <code>BuildKit</code> 的 <code>mount</code> 功能，该功能有几个前置条件：</p><ul><li>docker 版本必须高于 18.09</li><li><code>BuildKit</code> 需要手工启用，可在 docker build 命令前添加环境变量 <code>DOCKER_BUILDKIT=1</code> 启用</li><li>如果前两个条件不满足，则需要具备 Jenkins 和构建机的读写权限，以调整构建环境参数</li><li>修改 Dockerfile，使用 <code>RUN --mount=type=cache</code> 运行 <code>npm install</code> 和 <code>npm run build</code> 指令（<code>--mount=type=cache</code>）</li></ul><blockquote><p>开启 BuildKit 还有其他特性，比如输出日志更友好，基本每一步都会输出耗时，就这一条，值了！</p></blockquote><p>实际操作分为 2 步：</p><p>修改 Jenkins 配置，在 docker build 命令前加上环境变量。修改后镜像构建命令长这样：</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$  </span><span class="token assign-left variable" style="color:#36acaa">DOCKER_BUILDKIT</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> build </span><span class="token builtin class-name">.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>修改 Dockerfile，将 <code>RUN npm install</code> 和 <code>RUN npm run build</code> 指令前面加上 <code>RUN --mount=type=cache npm xxx</code>：</p><div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">FROM node:alpine as builder</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">WORKDIR /app</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">COPY package.json /app/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN --mount=type=cache,target=/app/node_modules,id=my_app_npm_module,sharing=locked \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    --mount=type=cache,target=/root/.npm,id=npm_cache \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    npm i --registry=https://registry.npmmirror.com/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">COPY src /app/src</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN --mount=type=cache,target=/app/node_modules,id=my_app_npm_module,sharing=locked \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    npm run build</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>参考：</p><p><a href="https://juejin.cn/post/7135756687134162980" target="_blank" rel="noopener noreferrer">加3行代码减少80%构建时间</a></p><p><a href="https://vuepress.mirror.docker-practice.com/buildx/buildkit/#" target="_blank" rel="noopener noreferrer">Docker 从入门到实践 - 使用 BuildKit 构建镜像</a></p><p><a href="https://docs.docker.com/build/buildkit/" target="_blank" rel="noopener noreferrer">https://docs.docker.com/build/buildkit/</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/tNs5CVdmj4DepYmELWjdzA" target="_blank" rel="noopener noreferrer">Monorepo 下 Git 工作流的最佳实践</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/qVsgXaehJ-LhWQLe-dxSRw" target="_blank" rel="noopener noreferrer">Prometheus 数据存储那些事儿</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/bxIIGV9n1f-SbA2Qu7naDQ" target="_blank" rel="noopener noreferrer">Go1.20 一次打破 Go1 兼容性承诺的真实案例</a></p><p>📒 <a href="https://juejin.cn/post/7182019663004434488" target="_blank" rel="noopener noreferrer">基于 GraphQL 的云音乐 BFF 建设实践</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/m-i_Et6YqkZ0aj537vN2_A" target="_blank" rel="noopener noreferrer">【第2823期】打包JavaScript库的现代化指南</a></p><p>⭐️ <a href="https://mp.weixin.qq.com/s/2FVYnKHXFoj18W62pob_jw" target="_blank" rel="noopener noreferrer">通过分析gin、beego源码，读懂web框架对http请求处理流程的本质</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/x2sFAwR0MGucIHGH85gU4A" target="_blank" rel="noopener noreferrer">极端情况下Go的Map也会发生内存泄漏</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/r_n7cZi2sDO0EiBF12tkYw" target="_blank" rel="noopener noreferrer">这两个特性将在 Go1.20 中被弃用，受影响最大的居然是国内的面试官</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/2_xALNnPcHgZD7smWxzPcA" target="_blank" rel="noopener noreferrer">Go：讲一个故事说明使用汇编语言的必要性</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/FTXkgxkUzsHMIspCK60G4w" target="_blank" rel="noopener noreferrer">Go学设计模式--怕把核心代码改乱，记得用代理模式</a></p><p>📒 <a href="https://mp.weixin.qq.com/s/lAIB0l666R6Zh9NAdV809g" target="_blank" rel="noopener noreferrer">Go语言中常见100问题-#25 Unexpected side effects using slice append</a></p>]]></content:encoded>
        </item>
    </channel>
</rss>