{"id":13679944,"url":"https://github.com/dongyuanxin/blog","last_synced_at":"2025-04-08T17:17:06.718Z","repository":{"id":46896048,"uuid":"174712268","full_name":"dongyuanxin/blog","owner":"dongyuanxin","description":"📚 专注Web与算法","archived":false,"fork":false,"pushed_at":"2022-05-30T09:26:33.000Z","size":2715,"stargazers_count":1378,"open_issues_count":36,"forks_count":185,"subscribers_count":60,"default_branch":"master","last_synced_at":"2025-04-01T15:13:54.922Z","etag":null,"topics":["algorithms","blog","css3","design-pattern","frontend","javascript","koa","leetcode-javascript","leetcode-solutions","nestjs","nodejs","reactjs","serverless","typescript","webpack4"],"latest_commit_sha":null,"homepage":"https://0x98k.com","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dongyuanxin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-09T15:36:20.000Z","updated_at":"2025-03-26T02:44:44.000Z","dependencies_parsed_at":"2022-08-12T13:10:59.169Z","dependency_job_id":null,"html_url":"https://github.com/dongyuanxin/blog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dongyuanxin%2Fblog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dongyuanxin%2Fblog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dongyuanxin%2Fblog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dongyuanxin%2Fblog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dongyuanxin","download_url":"https://codeload.github.com/dongyuanxin/blog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247888559,"owners_count":21013001,"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","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":["algorithms","blog","css3","design-pattern","frontend","javascript","koa","leetcode-javascript","leetcode-solutions","nestjs","nodejs","reactjs","serverless","typescript","webpack4"],"created_at":"2024-08-02T13:01:11.295Z","updated_at":"2025-04-08T17:17:06.673Z","avatar_url":"https://github.com/dongyuanxin.png","language":"Vue","funding_links":[],"categories":["前端","Vue"],"sub_categories":[],"readme":"---\nhome: true\ncomment: false\nsingle: true\nfooter: MIT Licensed | Copyright © 2020 心谭\n---\n\n此仓库是作者在 Web 学习和工作过程中逐渐积累的笔记。2020 年之前，主要内容是前端开发和算法题解；从 2020 年开始，由于工作和兴趣，主要是云计算（Serverless）和服务侧开发（NodeJS）。基于自身的认知难免有漏洞，也请大家指正。\n\n如果对你的学习成长有帮助，欢迎通过以下方式支持一下，我会有更多的动力去维护 👇👇：\n\n-   Star [**Github 项目**](https://github.com/dongyuanxin/blog)\n\n**关键节点** ：[**Web 开发**](https://xin-tan.com/notes/) / [**前端图谱**](https://xin-tan.com/frontend/) / [**算法题解**](https://xin-tan.com/frontend/)\n\n**快速浏览**： **[NodeJS 模块学习](#深入-nodejs-模块) | [框架开发](#框架开发) | [JavaScript](#javascript) | [ES6](#es6) | [HTML5](#html5) | [浏览器](#浏览器) | [云计算](#云计算) | [CSS3 动画设计](#动画设计) | [设计模式](#javascript-设计模式-more) | [剑指 offer](剑指-offer·js-题解-more)**\n\n## NodeJS\n\n-   `[命令行]` [玩转\"命令行\"开发](https://xin-tan.com/2019-05-07-play-node-shell/)\n-   `[文件处理]` [NodeJS 是如何监听文件的变化？](https://xin-tan.com/2019-09-03-nodejs-watch-file/)\n-   `[日志处理]` [日志库的实现机制与优化方法](https://xin-tan.com/2019-09-04-log-module/)\n-   `[区块链]` [NodeJS 实现简易\"区块链\"](https://xin-tan.com/2019-05-02-node-block-chain/)\n-   `[\"会话\"控制]` [NodeJS 实战:cookie、session 与 token](https://xin-tan.com/2020-01-14-cookie-session-token/)\n\n### 深入 nodejs 模块\n\n-   `[事件机制]` [NodeJS 模块研究 - events](https://xin-tan.com/2020-01-10-nodejs-events/)\n-   `[二进制]` [NodeJS 模块研究 - Buffer](https://xin-tan.com/2020-01-17-buffer/)\n-   `[流]` [NodeJS 模块研究 - stream](https://xin-tan.com/2020-01-28-stream/)\n-   `[操作系统]` [NodeJS 模块研究:os](https://xin-tan.com/2020-01-11-nodejs-os/)\n-   `[数据加密]` [NodeJS 模块研究 - crypto](https://xin-tan.com/2020-01-21-crypto/)\n-   `[数据压缩]` [NodeJS 模块研究 - zlib](https://xin-tan.com/2020-01-26-zlib/)\n-   `[文件系统]` [NodeJS 模块研究 - path](https://xin-tan.com/2020-01-09-nodejs-path/)\n-   `[文件系统]` [NodeJS 模块研究 - fs](https://xin-tan.com/2020-01-15-fs/)\n-   `[多进程]` [NodeJS 模块研究 - process](https://xin-tan.com/2020-01-19-process/)\n-   `[多进程]` [NodeJS 模块研究 - child_process](https://xin-tan.com/2020-01-25-child-process/)\n-   `[多进程]` [NodeJS 模块研究 - cluster](https://xin-tan.com/2020-01-27-cluster/)\n-   `[DNS]` [NodeJS 模块研究 - dns](https://xin-tan.com/2020-01-22-dns/)\n-   `[字符串处理]` [NodeJS 模块研究 - querystring](https://xin-tan.com/2020-01-20-querystring/)\n\n### 框架开发\n\n-   `[KoaJS]` [核心库原理](https://xin-tan.com/2019-06-21-deep-in-koa/)\n-   `[KoaJS]` [架构设计](https://xin-tan.com/2019-06-18-deep-in-koa)\n-   `[KoaJS]` [手动实现玩具版 koa](https://xin-tan.com/2019-06-21-deep-in-koa-3/)\n\n### 软件测试\n\n-   `[Jest]` [Jest 实战：单元测试与服务测试](https://xin-tan.com/2019-05-04-jest-base/)\n-   `[Jest]` [Jest 进阶：接入 ts、集成测试与覆盖率统计](https://xin-tan.com/2019-05-04-deep-in-jest/)\n\n## JavaScript\n\n### JS 基础\n\n-   `[基础]` [JavaScript 基础知识梳理(上)](https://xin-tan.com/2019-03-26-javascript-first/)\n-   `[基础]` [JavaScript 基础知识梳理(下)](https://xin-tan.com/2019-03-27-javascript-second/)\n-   `[正则]` [正则表达式](https://xin-tan.com/2019-03-21-js-re/)\n-   `[轮子]` [前端面试中常考的源码实现](https://xin-tan.com/2019-03-18-interview-js-code/)\n\n### ES6\n\n-   `[Promise]` [常用 API 概述](https://xin-tan.com/2018-05-23-es-promise/)\n-   `[Promise]` [手写 Promise 的相关方法](https://xin-tan.com/2019-11-23-promise-methods/)\n-   `[Promise]` [让我们再聊聊 Promise 的实现](https://xin-tan.com/2019-11-25-promise-a-plus/)\n-   `[API]` [ES6 重难点整理](https://xin-tan.com/2019-04-09-es6/)\n\n### HTML5\n\n-   [canvas 学习和滤镜实现](https://xin-tan.com/2018-08-20-canvas-beauty-filter/)\n-   [canvas 离屏技术与放大镜实现](https://xin-tan.com/2018-08-30-canvas-off-screen/)\n-   [HTML5 原生拖放事件的学习与实践](https://xin-tan.com/2019-04-10-html5-drag-drop/)\n-   [FileAPI 文件操作实战](https://xin-tan.com/2019-07-15-file-api/)\n-   [websocket 学习和群聊实现](https://xin-tan.com/2018-08-19-websocket-group-chat/)\n-   [Service Worker 离线缓存实战](https://xin-tan.com/2019-04-02-pwa-service-worker/)\n\n### TypeScript\n\n-   [基础篇：TypeScript 用法与实战](https://xin-tan.com/2019-08-27-typescript-notes/)\n-   [实战篇：当 Typescript 遇上 Koa 的时候](https://xin-tan.com/2019-08-27-koa-meet-typescript/)\n\n### 浏览器\n\n-   [浏览器的常见考点](https://xin-tan.com/2019-05-15-browser/)\n-   [谈谈 promise/async/await 的执行顺序与 V8 引擎的 BUG](https://xin-tan.com/2018-05-29-promise-async-await-order/)\n\n### 第三方库开发\n\n-   [MathJax：让前端支持数学公式](https://xin-tan.com/2018-10-03-js-mathjax/)\n-   [moment.js 使用详解](https://xin-tan.com/2018-08-21-momentjs/)\n-   [axios 全局代理实战](https://xin-tan.com/2019-04-16-axios/)\n\n## Web 安全\n\n-   [面试中查考的 Web 安全问题](https://xin-tan.com/2019-05-15-web-safety/)\n-   [SSL 连接并非完全安全问题解决](https://xin-tan.com/2018-08-26-ssl/)\n\n## 云计算\n\n-   [Serverless 是什么？](https://xin-tan.com/2020-01-07-what-is-serverless/)\n-   [Serverless 开发一款极简网页计数器](https://xin-tan.com/2019-05-18-serverless-page-counter/)\n-   [Serverless 开发：实时对战五子棋小游戏](https://xin-tan.com/2019-08-14-game-gomoku/)\n\n## CSS 精选\n\n-   [CSS3 盒模型：border-box](https://xin-tan.com/2018-06-05-border-sizing/)\n-   [Flex 快速上手](https://xin-tan.com/2019-03-20-css3-flex/)\n-   [你了解 css3 的 nth-child 吗](https://xin-tan.com/2019-03-19-css3-nth-child/)\n-   [scss：最常见的 css 预处理器](https://xin-tan.com/2018-05-29-scss-fisrt-step/)\n-   [scss 实现样式复用: 继承、占位符、混合宏](https://xin-tan.com/2018-05-29-scss-more/)\n-   `[翻译]` [逐步替换 Scss](https://xin-tan.com/2019-05-17-why-i-stopped-using-sass/)\n\n## 动画设计\n\n-   [CSS3·字体特效](https://xin-tan.com/2019-07-16-font-animation/)\n-   [CSS3·输入框特效](https://xin-tan.com/2019-07-22-input-animation/)\n-   [CSS3·按钮特效](https://xin-tan.com/2019-07-24-button-animation/)\n-   [CSS3·Loader 特效(基础)](https://xin-tan.com/2019-07-25-loader-animation-first/)\n-   [CSS3·Loader 特效(进阶)](https://xin-tan.com/2019-07-26-loader-animation-second/)\n\n## 多端开发\n\n-   `[微信端]` [微信网页登录逻辑与实现](https://xin-tan.com/2019-04-15-wechat-h5-login/)\n\n## 工具\n\n-   [**Webpack4**](https://xin-tan.com/categories/webpack4系列教程/)\n-   [**Git**](https://xin-tan.com/categories/git%E7%AC%94%E8%AE%B0/)\n\n## JavaScript 设计模式 [\\[more\\]](https://xin-tan.com/algorithm/#%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E6%89%8B%E5%86%8C)\n\n-   `[创建型]` [单例模式](https://xin-tan.com/2018-10-23-singleton-pattern/)\n-   `[创建型]` [抽象工厂模式](https://xin-tan.com/2019-04-01-abstract-factory-pattern/)\n-   `[结构型]` [享元模式](https://xin-tan.com/2018-12-16-flyweight-pattern/)\n-   `[结构型]` [代理模式](https://xin-tan.com/2018-11-01-proxy-pattern/)\n-   `[结构型]` [桥接模式](https://xin-tan.com/2019-01-19-bridge-pattern/)\n-   `[结构型]` [装饰者模式](https://xin-tan.com/2019-01-12-decorator-pattern/)\n-   `[行为型]` [备忘录模式](https://xin-tan.com/2019-01-26-memento-pattern/)\n-   `[行为型]` [模板模式](https://xin-tan.com/2019-01-31-template-pattern/)\n-   `[行为型]` [状态模式](https://xin-tan.com/2019-01-16-state-pattern/)\n-   `[行为型]` [订阅-发布模式](https://xin-tan.com/2018-11-18-publish-subscribe-pattern/)\n\n## 剑指 Offer·JS 题解 [\\[more\\]](https://xin-tan.com/algorithm/#%E3%80%8A%E5%89%91%E6%8C%87-Offer%E3%80%8B-JavaScript-%E7%89%88%E8%AE%B2%E8%A7%A3)\n\n-   `[数组]` [二维数组中的查找](https://xin-tan.com/2019-12-19-er-wei-shu-zu-cha-zhao/)\n-   `[字符串]` [替换空格](https://xin-tan.com/2019-12-19-ti-huan-kong-ge/)\n-   `[链表]` [从尾到头打印链表](https://xin-tan.com/2019-12-21-da-yin-lian-biao/)\n-   `[二叉树]` [重建二叉树](https://xin-tan.com/2019-12-21-re-construct-btree/)\n-   `[堆栈]` [用两个栈(队列)实现队列(栈)](https://xin-tan.com/2019-12-23-zhan-shi-xian-dui-lie/)\n-   `[二进制]` [二进制中 1 的个数](https://xin-tan.com/2019-12-31-number-of-one/)\n-   `[数学]` [数值的整次方(四种解法)](https://xin-tan.com/2019-12-31-pow/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdongyuanxin%2Fblog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdongyuanxin%2Fblog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdongyuanxin%2Fblog/lists"}