{"id":27415880,"url":"https://github.com/fxxqq/fe-blog","last_synced_at":"2025-08-17T14:03:37.102Z","repository":{"id":40633507,"uuid":"205325540","full_name":"fxxqq/fe-blog","owner":"fxxqq","description":"前端学习笔记，JavaScript基础，LeetCode，手写API，Vue源码解析","archived":false,"fork":false,"pushed_at":"2023-04-25T07:57:10.000Z","size":23355,"stargazers_count":265,"open_issues_count":15,"forks_count":51,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-05-20T12:07:38.709Z","etag":null,"topics":["leetcode-javascript","node","react","vue","webpack"],"latest_commit_sha":null,"homepage":"https://58fe.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fxxqq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-08-30T07:08:47.000Z","updated_at":"2025-03-21T03:51:12.000Z","dependencies_parsed_at":"2025-04-14T09:45:52.023Z","dependency_job_id":"bb5dd24c-7ca5-4958-88c1-068d76c21b15","html_url":"https://github.com/fxxqq/fe-blog","commit_stats":null,"previous_names":["6fedcom/fe-blog"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fxxqq/fe-blog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxxqq%2Ffe-blog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxxqq%2Ffe-blog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxxqq%2Ffe-blog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxxqq%2Ffe-blog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fxxqq","download_url":"https://codeload.github.com/fxxqq/fe-blog/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxxqq%2Ffe-blog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270856775,"owners_count":24657700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["leetcode-javascript","node","react","vue","webpack"],"created_at":"2025-04-14T09:45:46.365Z","updated_at":"2025-08-17T14:03:37.074Z","avatar_url":"https://github.com/fxxqq.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 前端原理源码学习笔记\n\n---\n\n### webpack 系列\n\n1. [常见 loader 源码简析，以及动手实现一个 md2html-loader](https://github.com/fxxqq/fe-blog/tree/master/webpack/loader)\n2. [webpack 插件工作原理剖析](https://github.com/fxxqq/fe-blog/tree/master/webpack/plugin)\n3. [webpack 主流程源码阅读以及实现一个 webpack](https://github.com/fxxqq/fe-blog/tree/master/webpack/webpack)\n4. [webpack 打包优化实践](https://github.com/fxxqq/fe-blog/tree/master/webpack/webpack%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96)\n\n---\n\n### vue 系列写作方向\n\n**vue2**\n\n1. Vue 依赖收集过程源码阅读以及实现\n2. Vue 响应式更新原理源码阅读以及实现\n3. Vue patch Diff 算法源码阅读以及实现\n4. compute 和 watch 原理\n5. [nexttick 原理](https://juejin.cn/post/6844903911673823246)\n6. keeplive 实现原理\n\n**vue3**\n\n1. [vue composition-api 速成课](https://github.com/fxxqq/fe-blog/tree/master/vue/@vue/composition-api.md)\n\n---\n\n##### react 系列\n\n1. [React16 常用 api 解析以及原理剖析](https://github.com/fxxqq/fe-blog/tree/master/react/React16-commonly-used-API-analysis)\n2. [实现一个简单的 useState](https://github.com/fxxqq/fe-blog/tree/master/react/实现一个简单的react-hook里面的useState)\n\n---\n\n### 微前端\n1. [微前端项目难点解决](https://github.com/fxxqq/fe-blog/blob/master/micro-frontend/%E5%BE%AE%E4%B9%BE%E5%9D%A4%E9%A1%B9%E7%9B%AE%E9%9A%BE%E7%82%B9%E8%A7%A3%E5%86%B3.md)\n\n---\n\n### 前端安全\n\n1. [xss](https://github.com/fxxqq/fe-blog/blob/master/前端安全/xss/readme.md)\n2. [csrf](https://github.com/fxxqq/fe-blog/tree/master/前端安全/csrf/readme.md)\n\n---\n\n##### 大厂手写代码题\n\n1. [hash 去重](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/hash%E5%8E%BB%E9%87%8D.js)\n2. [防抖节流](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/%E9%98%B2%E6%8A%96%E8%8A%82%E6%B5%81.js)\n3. [手写实现 promise](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/Promise.js)\n4. [手写实现 instanceof](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/instanceof.js)\n5. [new 的内部机制，自己实现一个 new](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/实现new.js)\n6. [拼多多：实现柯里化函数](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/currying.js)\n7. [拼多多：设计一个支持 push ，pop ，top 操作，并能在常数时间内检索到最小元素的栈](https://github.com/fxxqq/fe-blog/blob/master/leetcode/155.最小栈.md)\n8. [快手：数组全排列](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/数组全排列.js)\n9. [快手：浏览器最大请求并非限制](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/浏览器最大请求并非限制.js)\n10. [头条：计算树的深度](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/计算树的深度.js)\n11. [蚂蚁：编写高阶函数，连续触发时，若上一次 promise 执行未结束则直接废弃，只有最后一次 promise 会触发 then/reject](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/lastPromise.js)\n12. [发布订阅.js](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/发布订阅.js)\n13. [头条：原生 ajax 封装成 async await 调用](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/原生ajax封装成async-await调用.js)\n14. [阿里：实现带有超时功能的 Promise](实现带有超时功能的Promise.js)\n15. [阿里：实现一个函数，可以将数组转化为树状数据结构](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/实现一个函数，可以将数组转化为树状数据结构.js)\n16. [腾讯：腾讯面试题 new 一个函数发生了什么](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/腾讯面试题new一个函数发生了什么.js)\n17. [腾讯:三个元素之和为指定数 n 的各个组合](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/腾讯面试题:三个元素之和为指定数n的各个组合.js)\n18. [腾讯:生成长度为 n 的 int 型随机数组，数组元素范围为 0~n-1](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/腾讯面试题3.js)\n19. [蚂蚁：苹果、梨、香蕉三个数组相互拼成字符串问题](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/苹果、梨、香蕉三个数组相互拼成字符串.js)\n20. [字节：Excel 表格随机生成 1000 列](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/字节面试题Excel表格随机生成1000列.md)\n21. [字节：二叉树\u0026完整路径和](https://github.com/fxxqq/fe-blog/blob/master/leetcode/112.路径总和.md)\n22. [常见排序算法以及复杂度](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/常见排序算法以及复杂度.md)\n23. [字节：合并两个有序数组](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/字节面试题：合并两个有序数组.md)\n24. [js 实现数组和链表之间相互转换](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/js实现数组和链表之间相互转换.md)\n25. [拼多多](合并线段)\n\n### 前端知识点\n\n[prototype 和`_proto_`以及原型链的关系](https://github.com/fxxqq/fe-blog/blob/master/前端知识点/prototype和_proto_以及原型链的关系.md)\n\n[js 事件循环]()\n\n[前端性能优化](https://github.com/fxxqq/fe-blog/blob/master/前端知识点/前端性能优化.md)\n\n[Map 与 WeakMap 的区别](https://github.com/fxxqq/fe-blog/blob/master/前端知识点/Map与WeakMap的区别.md)\n\n---\n\n### leetCode Hot100\n\n##### easy\n\n[1.两数之和](https://github.com/fxxqq/fe-blog/blob/master/leetcode/1.两数之和.md)\n\n[14.最长公共前缀](https://github.com/fxxqq/fe-blog/blob/master/leetcode/14.最长公共前缀.md)\n\n[18.删除链表的节点](https://github.com/fxxqq/fe-blog/blob/master/leetcode/18.删除链表的节点.md)\n\n[20.有效的括号](https://github.com/fxxqq/fe-blog/blob/master/leetcode/20.有效的括号.md)\n\n[21.合并两个有序链表](https://github.com/fxxqq/fe-blog/blob/master/leetcode/21.合并两个有序链表.md)\n\n[53.最大子序和](https://github.com/fxxqq/fe-blog/blob/master/leetcode/53.最大子序和.md)\n\n[70.爬楼梯](https://github.com/fxxqq/fe-blog/blob/master/leetcode/70.爬楼梯.md)\n\n[101.对称二叉树](https://github.com/fxxqq/fe-blog/blob/master/leetcode/101.对称二叉树.md)\n\n[112.路径总和](https://github.com/fxxqq/fe-blog/blob/master/leetcode/112.路径总和.md)\n\n[136.只出现一次的数字](https://github.com/fxxqq/fe-blog/blob/master/leetcode/136.只出现一次的数字.md)\n\n[155.最小栈](https://github.com/fxxqq/fe-blog/blob/master/leetcode/155.最小栈.md)\n\n[160.相交链表](https://github.com/fxxqq/fe-blog/blob/master/leetcode/160.相交链表md)\n\n[206.反转链表](https://github.com/fxxqq/fe-blog/blob/master/leetcode/206.反转链表.md)\n\n[234.回文链表](https://github.com/fxxqq/fe-blog/blob/master/leetcode/234.回文链表.md)\n\n[543.二叉树的直径](https://github.com/fxxqq/fe-blog/blob/master/leetcode/543.二叉树的直径.md)\n\n[617.合并二叉树](https://github.com/fxxqq/fe-blog/blob/master/leetcode/617.合并二叉树.md)\n\n[771.宝石与石头](https://github.com/fxxqq/fe-blog/blob/master/leetcode/771.宝石与石头.md)\n\n#### middle\n\n[5.最长回文子串](https://github.com/fxxqq/fe-blog/blob/master/leetcode/5.最长回文子串.md)\n\n##### LeetCode 排序 解法题目\n\n[35.搜索插入位置（easy）](https://github.com/fxxqq/fe-blog/blob/master/leetcode/35.搜索插入位置.md)\n\n[88.合并两个有序数组（easy）](https://github.com/fxxqq/fe-blog/blob/master/leetcode/88.合并两个有序数组.md)\n\n581.最短无序连续子数组（easy）https://leetcode-cn.com/problems/shortest-unsorted-continuous-subarray/\n\n1331.数组序号转换（easy）https://leetcode-cn.com/problems/rank-transform-of-an-array/\n\n56.合并区间（medium）https://leetcode-cn.com/problems/merge-intervals/\n\n215.数组中的第 K 个最大元素(medium) https://leetcode-cn.com/problems/kth-largest-element-in-an-array/\n\n[912.排序数组（middle）](https://github.com/fxxqq/fe-blog/blob/master/handwrittenCode/常见排序算法以及复杂度.md)\n\n[146. LRU 缓存机制]()\n\n##### LeetCode 字符串相关题目\n\n验证回文串\n\n分割回文串\n\n单词拆分\n\n反转字符串\n\n\u003c!-- 𓆌𓆉𓆈𓃻𓄿𓅜𓃹𓆉𓆈𓃻𓄿𓅜𓆌𓆉𓆈𓃻𓄿𓅜𓃹𓆉𓃲𓃟𓃠𓃗𓃵𓆉𓇼𓆡𓆜𓆉𓃹𓃡𓃟𓃵𓆏𓅦𓄿𓅜𓆌𓆉𓆈𓃻𓄿𓅜🚗🚕🚙🚌🚎🚒🚐🚚🚑🚓 --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffxxqq%2Ffe-blog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffxxqq%2Ffe-blog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffxxqq%2Ffe-blog/lists"}