{"id":24871187,"url":"https://github.com/staven630/blog","last_synced_at":"2025-04-09T20:14:30.558Z","repository":{"id":49294124,"uuid":"76700137","full_name":"staven630/blog","owner":"staven630","description":"旧书常读出新意,俗见尽弃作雅人！","archived":false,"fork":false,"pushed_at":"2021-09-16T07:29:19.000Z","size":26191,"stargazers_count":252,"open_issues_count":1,"forks_count":55,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-09T20:14:21.540Z","etag":null,"topics":["angular","flutter","javascript","nodejs","nuxt","react","rxjs","vue"],"latest_commit_sha":null,"homepage":"https://staven630.github.io/blog/","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/staven630.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":null,"support":null}},"created_at":"2016-12-17T02:52:20.000Z","updated_at":"2025-01-17T03:10:38.000Z","dependencies_parsed_at":"2022-09-14T00:31:46.894Z","dependency_job_id":null,"html_url":"https://github.com/staven630/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/staven630%2Fblog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staven630%2Fblog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staven630%2Fblog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staven630%2Fblog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/staven630","download_url":"https://codeload.github.com/staven630/blog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103872,"owners_count":21048245,"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":["angular","flutter","javascript","nodejs","nuxt","react","rxjs","vue"],"created_at":"2025-02-01T04:31:11.592Z","updated_at":"2025-04-09T20:14:30.531Z","avatar_url":"https://github.com/staven630.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 前端忍者之路\n### [⚒️ 前端工程化](https://github.com/staven630/blog/tree/master/%E5%89%8D%E7%AB%AF%E5%BF%8D%E8%80%85%E4%B9%8B%E8%B7%AF/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96)\n\n* [Linux搭建npm私服神器——Verdaccio](https://github.com/staven630/blog/blob/master/%E5%89%8D%E7%AB%AF%E5%BF%8D%E8%80%85%E4%B9%8B%E8%B7%AF/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96/Linux%E6%90%AD%E5%BB%BAnpm%E7%A7%81%E6%9C%8D%E7%A5%9E%E5%99%A8%E2%80%94%E2%80%94Verdaccio.md)\n* [Git commit message规范化提交](https://github.com/staven630/blog/blob/master/%E5%89%8D%E7%AB%AF%E5%BF%8D%E8%80%85%E4%B9%8B%E8%B7%AF/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96/Git%20commit%20message%E8%A7%84%E8%8C%83%E5%8C%96%E6%8F%90%E4%BA%A4.md)\n* [集成TypeScript + ESLint + Pritter + Husky + Jest前端开发利器](https://github.com/staven630/blog/blob/master/%E5%89%8D%E7%AB%AF%E5%BF%8D%E8%80%85%E4%B9%8B%E8%B7%AF/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96/%E9%9B%86%E6%88%90TypeScript%20%2B%20ESLint%20%2B%20Pritter%20%2B%20Husky%20%2B%20Jest%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E5%88%A9%E5%99%A8.md)\n* [PM2全面解析](https://github.com/staven630/blog/blob/master/%E5%89%8D%E7%AB%AF%E5%BF%8D%E8%80%85%E4%B9%8B%E8%B7%AF/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96/PM2%E5%85%A8%E9%9D%A2%E8%A7%A3%E6%9E%90.md)\n* [使用Rollup构建js库](https://github.com/staven630/blog/blob/master/%E5%89%8D%E7%AB%AF%E5%BF%8D%E8%80%85%E4%B9%8B%E8%B7%AF/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96/%E4%BD%BF%E7%94%A8Rollup%E6%9E%84%E5%BB%BAjs%E5%BA%93.md)\n\n### [🍓 深究JavaScript](https://github.com/staven630/blog/tree/master/%E6%B7%B1%E7%A9%B6JavaScript)\n\n* [深究JavaScript - 创建对象](https://github.com/staven630/blog/blob/master/%E6%B7%B1%E7%A9%B6JavaScript/%E6%B7%B1%E7%A9%B6JavaScript%20-%20%E5%88%9B%E5%BB%BA%E5%AF%B9%E8%B1%A1.md)\n* [深究JavaScript - 函数调用与this详解](https://github.com/staven630/blog/blob/master/%E6%B7%B1%E7%A9%B6JavaScript/%E6%B7%B1%E7%A9%B6JavaScript%20-%20%E5%87%BD%E6%95%B0%E8%B0%83%E7%94%A8%E4%B8%8Ethis%E8%AF%A6%E8%A7%A3.md)\n* [深究JavaScript - 参数传递与变量复制](https://github.com/staven630/blog/blob/master/%E6%B7%B1%E7%A9%B6JavaScript/%E6%B7%B1%E7%A9%B6JavaScript%20-%20%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E4%B8%8E%E5%8F%98%E9%87%8F%E5%A4%8D%E5%88%B6.md)\n* [深究JavaScript - 执行上下文](https://github.com/staven630/blog/blob/master/%E6%B7%B1%E7%A9%B6JavaScript/%E6%B7%B1%E7%A9%B6JavaScript%20-%20%E6%89%A7%E8%A1%8C%E4%B8%8A%E4%B8%8B%E6%96%87.md)\n* [深究JavaScript - 原型](https://github.com/staven630/blog/blob/master/%E6%B7%B1%E7%A9%B6JavaScript/%E6%B7%B1%E7%A9%B6JavaScript%20-%20%E5%8E%9F%E5%9E%8B.md)\n* [深究JavaScript - 闭包](https://github.com/staven630/blog/blob/master/%E6%B7%B1%E7%A9%B6JavaScript/%E6%B7%B1%E7%A9%B6JavaScript%20-%20%E9%97%AD%E5%8C%85.md)\n* [深究JavaScript——宏任务(Macrotask)与微任务(Microtask)](https://github.com/staven630/blog/blob/master/%E6%B7%B1%E7%A9%B6JavaScript/%E5%BC%82%E6%AD%A5/%E5%AE%8F%E4%BB%BB%E5%8A%A1(Macrotask)%E4%B8%8E%E5%BE%AE%E4%BB%BB%E5%8A%A1(Microtask).md)\n\n### [⚛️ 修炼React](https://github.com/staven630/blog/tree/master/%E4%BF%AE%E7%82%BCReact)\n\n* [修炼React - React生命周期](https://github.com/staven630/blog/blob/master/%E4%BF%AE%E7%82%BCReact/%E4%BF%AE%E7%82%BCReact%20-%20React%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F.md)\n* [修炼React - Props](https://github.com/staven630/blog/blob/master/%E4%BF%AE%E7%82%BCReact/%E4%BF%AE%E7%82%BCReact%20-%20Props.md)\n* [修炼React - Refs](https://github.com/staven630/blog/blob/master/%E4%BF%AE%E7%82%BCReact/%E4%BF%AE%E7%82%BCReact%20-%20Ref.md)\n* [修炼React - Context](https://github.com/staven630/blog/blob/master/%E4%BF%AE%E7%82%BCReact/%E4%BF%AE%E7%82%BCReact%20-%20React%20Context.md)\n* [修炼React - React Hooks概述](https://github.com/staven630/blog/blob/master/%E4%BF%AE%E7%82%BCReact/%E4%BF%AE%E7%82%BCReact%20-%20React%20Hooks%E6%A6%82%E8%BF%B0.md)\n* [修炼React - useState](https://github.com/staven630/blog/blob/master/%E4%BF%AE%E7%82%BCReact/%E4%BF%AE%E7%82%BCReact%20-%20useState.md)\n* [修炼React - useRef](https://github.com/staven630/blog/blob/master/%E4%BF%AE%E7%82%BCReact/%E4%BF%AE%E7%82%BCReact%20-%20useRef.md)\n\n### [🔰 揭秘Vue](https://github.com/staven630/blog/tree/master/%E6%8F%AD%E7%A7%98vue)\n\n* [揭秘vue - vue-cli4 全面配置](https://github.com/staven630/vue-cli4-config)\n* [揭秘vue - Vue生命周期钩子的自定义事件](https://github.com/staven630/blog/blob/master/%E6%8F%AD%E7%A7%98vue/%E6%8F%AD%E7%A7%98vue%20-%20Vue%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E9%92%A9%E5%AD%90%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6.md)\n* [揭秘vue - $attrs与Vue包装器组件](https://github.com/staven630/blog/blob/master/%E6%8F%AD%E7%A7%98vue/%E6%8F%AD%E7%A7%98vue%20-%20$attrs%E4%B8%8EVue%E5%8C%85%E8%A3%85%E5%99%A8%E7%BB%84%E4%BB%B6.md)\n* [揭秘vue - 扩展功能齐全的Axios](https://github.com/staven630/blog/blob/master/%E6%8F%AD%E7%A7%98vue/%E6%8F%AD%E7%A7%98vue%20-%20%E6%89%A9%E5%B1%95%E5%8A%9F%E8%83%BD%E9%BD%90%E5%85%A8%E7%9A%84Axios.md)\n* [揭秘vue - Vue中的错误处理](https://github.com/staven630/blog/blob/master/%E6%8F%AD%E7%A7%98vue/%E6%8F%AD%E7%A7%98vue%20-%20Vue%E4%B8%AD%E7%9A%84%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86.md)\n* [揭秘vue - vue-router延迟加载及设置chunkName](https://github.com/staven630/blog/blob/master/%E6%8F%AD%E7%A7%98vue/%E6%8F%AD%E7%A7%98vue%20-%20vue-router%E5%BB%B6%E8%BF%9F%E5%8A%A0%E8%BD%BD%E5%8F%8A%E8%AE%BE%E7%BD%AEchunkName.md)\n* [揭秘vue - 利用vue-router中间件解耦权限控制](https://github.com/staven630/blog/blob/master/%E6%8F%AD%E7%A7%98vue/%E6%8F%AD%E7%A7%98vue%20-%20%E5%88%A9%E7%94%A8vue-router%E4%B8%AD%E9%97%B4%E4%BB%B6%E8%A7%A3%E8%80%A6%E6%9D%83%E9%99%90%E6%8E%A7%E5%88%B6.md)\n* [揭秘vue - Vue单页面应用多布局实践](https://github.com/staven630/blog/blob/master/%E6%8F%AD%E7%A7%98vue/%E6%8F%AD%E7%A7%98vue%20-%20Vue%E5%8D%95%E9%A1%B5%E9%9D%A2%E5%BA%94%E7%94%A8%E5%A4%9A%E5%B8%83%E5%B1%80%E5%AE%9E%E8%B7%B5.md)\n* [揭秘vue - Vue生成web components](https://github.com/staven630/blog/blob/master/%E6%8F%AD%E7%A7%98vue/%E6%8F%AD%E7%A7%98vue%20-%20Vue%E7%94%9F%E6%88%90web%20components.md)\n* [揭秘vue - Vue性能优化](https://github.com/staven630/blog/blob/master/%E6%8F%AD%E7%A7%98vue/%E6%8F%AD%E7%A7%98vue%20-%20Vue%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96.md)\n* [揭秘vue - Vue+Typescript实践总结](https://github.com/staven630/blog/blob/master/%E6%8F%AD%E7%A7%98vue/%E6%8F%AD%E7%A7%98vue%20-%20Vue+Typescript%E5%AE%9E%E8%B7%B5%E6%80%BB%E7%BB%93.md)\n* [揭秘vue - 深入Vue对象响应式原理](https://github.com/staven630/blog/blob/master/%E6%8F%AD%E7%A7%98vue/%E6%8F%AD%E7%A7%98vue%20-%20%E6%B7%B1%E5%85%A5Vue%E5%AF%B9%E8%B1%A1%E5%93%8D%E5%BA%94%E5%BC%8F%E5%8E%9F%E7%90%86.md)\n* [揭秘vue - 深入Vue数组响应式原理](https://github.com/staven630/blog/blob/master/%E6%8F%AD%E7%A7%98vue/%E6%8F%AD%E7%A7%98vue%20-%20%E6%B7%B1%E5%85%A5Vue%E6%95%B0%E7%BB%84%E5%93%8D%E5%BA%94%E5%BC%8F%E5%8E%9F%E7%90%86.md)\n\n### [🍋 Nuxt.js实践](https://github.com/staven630/blog/tree/master/Nuxt.js%E5%AE%9E%E8%B7%B5)\n\n- [Nuxt.js实践——Nuxt.js全面配置](https://github.com/staven630/nuxt-config)\n- [Nuxt.js实践——Nuxt.js整合Storybook](https://github.com/staven630/blog/blob/master/Nuxt.js%E5%AE%9E%E8%B7%B5/Nuxt.js%E5%AE%9E%E8%B7%B5%E2%80%94%E2%80%94Nuxt.js%E6%95%B4%E5%90%88Storybook.md)\n- [Nuxt.js实践——Nuxt.js中跨组件通信](https://github.com/staven630/blog/blob/master/Nuxt.js%E5%AE%9E%E8%B7%B5/Nuxt.js%E5%AE%9E%E8%B7%B5%E2%80%94%E2%80%94Nuxt.js%E4%B8%AD%E8%B7%A8%E7%BB%84%E4%BB%B6%E9%80%9A%E4%BF%A1.md)\n- [Nuxt.js实践——Nuxt.js自定义ElementUI主题的按需加载](https://github.com/staven630/blog/blob/master/Nuxt.js%E5%AE%9E%E8%B7%B5/Nuxt.js%E5%AE%9E%E8%B7%B5%E2%80%94%E2%80%94Nuxt.js%E8%87%AA%E5%AE%9A%E4%B9%89ElementUI%E4%B8%BB%E9%A2%98%E7%9A%84%E6%8C%89%E9%9C%80%E5%8A%A0%E8%BD%BD.md)\n- [Nuxt.js实践——Nuxt.js中axios-module的使用](https://github.com/staven630/blog/blob/master/Nuxt.js%E5%AE%9E%E8%B7%B5/Nuxt.js%E5%AE%9E%E8%B7%B5%E2%80%94%E2%80%94Nuxt.js%E4%B8%ADaxios-module%E7%9A%84%E4%BD%BF%E7%94%A8.md)\n- [Nuxt.js实践——Nuxt.js与vuex-persistedstate持久化](https://github.com/staven630/blog/blob/master/Nuxt.js%E5%AE%9E%E8%B7%B5/Nuxt.js%E5%AE%9E%E8%B7%B5%E2%80%94%E2%80%94Nuxt.js%E4%B8%8Evuex-persistedstate%E6%8C%81%E4%B9%85%E5%8C%96.md)\n- [Nuxt.js实践——利用nuxtServerInit和store设置权限](https://github.com/staven630/blog/blob/master/Nuxt.js%E5%AE%9E%E8%B7%B5/Nuxt.js%E5%AE%9E%E8%B7%B5%E2%80%94%E2%80%94%E5%88%A9%E7%94%A8nuxtServerInit%E5%92%8Cstore%E8%AE%BE%E7%BD%AE%E6%9D%83%E9%99%90.md)\n- [Nuxt.js实践——Nuxt.js部署](https://github.com/staven630/blog/blob/master/Nuxt.js%E5%AE%9E%E8%B7%B5/Nuxt.js%E5%AE%9E%E8%B7%B5%E2%80%94%E2%80%94Nuxt.js%E9%83%A8%E7%BD%B2.md)\n\n### [🍎 问道Angular](https://github.com/staven630/blog/tree/master/%E9%97%AE%E9%81%93Angular)\n\n* [问道Angular——Angular5、6、7项目添加热更新(HMR)功能](https://github.com/staven630/blog/blob/master/%E9%97%AE%E9%81%93Angular/%E9%97%AE%E9%81%93Angular%E2%80%94%E2%80%94Angular5%E3%80%816%E3%80%817%E9%A1%B9%E7%9B%AE%E6%B7%BB%E5%8A%A0%E7%83%AD%E6%9B%B4%E6%96%B0(HMR)%E5%8A%9F%E8%83%BD.md)\n* [问道Angular——Angular动态加载JS、css文件](https://github.com/staven630/blog/blob/master/%E9%97%AE%E9%81%93Angular/%E9%97%AE%E9%81%93Angular%E2%80%94%E2%80%94Angular%E5%8A%A8%E6%80%81%E5%8A%A0%E8%BD%BDJS%E3%80%81css%E6%96%87%E4%BB%B6.md)\n* [问道Angular——Angular设置别名alias、打包命令](https://github.com/staven630/blog/blob/master/%E9%97%AE%E9%81%93Angular/%E9%97%AE%E9%81%93Angular%E2%80%94%E2%80%94Angular%E8%AE%BE%E7%BD%AE%E5%88%AB%E5%90%8Dalias%E3%80%81%E6%89%93%E5%8C%85%E5%91%BD%E4%BB%A4.md)\n* [问道Angular——Angular声明式与入口组件(entryComponents)](https://github.com/staven630/blog/blob/master/%E9%97%AE%E9%81%93Angular/%E9%97%AE%E9%81%93Angular%E2%80%94%E2%80%94Angular%E5%A3%B0%E6%98%8E%E5%BC%8F%E4%B8%8E%E5%85%A5%E5%8F%A3%E7%BB%84%E4%BB%B6(entryComponents).md)\n* [问道Angular——APP_INITIALIZER](https://github.com/staven630/blog/blob/master/%E9%97%AE%E9%81%93Angular/%E9%97%AE%E9%81%93Angular%E2%80%94%E2%80%94APP_INITIALIZER.md)\n* [问道Angular——Angular刷新当前页面](https://github.com/staven630/blog/blob/master/%E9%97%AE%E9%81%93Angular/%E9%97%AE%E9%81%93Angular%E2%80%94%E2%80%94Angular%E5%88%B7%E6%96%B0%E5%BD%93%E5%89%8D%E9%A1%B5%E9%9D%A2.md)\n* [问道Angular——Angular自定义响应式表单验证](https://github.com/staven630/blog/blob/master/%E9%97%AE%E9%81%93Angular/%E9%97%AE%E9%81%93Angular%E2%80%94%E2%80%94Angular%E8%87%AA%E5%AE%9A%E4%B9%89%E5%93%8D%E5%BA%94%E5%BC%8F%E8%A1%A8%E5%8D%95%E9%AA%8C%E8%AF%81.md)\n* [问道Angular——使用Pure Pipes生成NgFor TrackBy函数](https://github.com/staven630/blog/blob/master/%E9%97%AE%E9%81%93Angular/%E9%97%AE%E9%81%93Angular%E2%80%94%E2%80%94%E4%BD%BF%E7%94%A8Pure%20Pipes%E7%94%9F%E6%88%90NgFor%20TrackBy%E5%87%BD%E6%95%B0.md)\n* [问道Angular——实现Angular功能齐全的拦截器](https://github.com/staven630/blog/blob/master/%E9%97%AE%E9%81%93Angular/%E9%97%AE%E9%81%93Angular%E2%80%94%E2%80%94%E5%AE%9E%E7%8E%B0Angular%E5%8A%9F%E8%83%BD%E9%BD%90%E5%85%A8%E7%9A%84%E6%8B%A6%E6%88%AA%E5%99%A8.md)\n* [问道Angular——Angular、Rx.js实现websocket即时通信](https://github.com/staven630/blog/blob/master/%E9%97%AE%E9%81%93Angular/%E9%97%AE%E9%81%93Angular%E2%80%94%E2%80%94Angular%E3%80%81Rx.js%E5%AE%9E%E7%8E%B0websocket%E5%8D%B3%E6%97%B6%E9%80%9A%E4%BF%A1.md)\n* [问道Angular——Angular变更检测策略](https://github.com/staven630/blog/blob/master/%E9%97%AE%E9%81%93Angular/%E9%97%AE%E9%81%93Angular%E2%80%94%E2%80%94Angular%E5%8F%98%E6%9B%B4%E6%A3%80%E6%B5%8B%E7%AD%96%E7%95%A5(Check%20Detection%20Strategy).md)\n\n### [🍈 实践TypeScript](https://github.com/staven630/blog/tree/master/%E5%AE%9E%E8%B7%B5TypeScript)\n* [实践TypeScript - 基础类型](https://github.com/staven630/blog/blob/master/%E5%AE%9E%E8%B7%B5TypeScript/%E5%AE%9E%E8%B7%B5TypeScript%20-%20%E5%9F%BA%E7%A1%80%E7%B1%BB%E5%9E%8B.md)\n* [实践TypeScript - Interface与Type的区别](https://github.com/staven630/blog/blob/master/%E5%AE%9E%E8%B7%B5TypeScript/%E5%AE%9E%E8%B7%B5TypeScript%20-%20Interface%E4%B8%8EType%E7%9A%84%E5%8C%BA%E5%88%AB.md)\n\n### [🍒 Electron指南](https://github.com/staven630/blog/tree/master/Electron%E6%8C%87%E5%8D%97)\n* [Mac上屡试不爽的Electron安装方法](https://github.com/staven630/blog/blob/master/Electron%E6%8C%87%E5%8D%97/Mac%E4%B8%8A%E5%B1%A1%E8%AF%95%E4%B8%8D%E7%88%BD%E7%9A%84Electron%E5%AE%89%E8%A3%85%E6%96%B9%E6%B3%95.md)\n* [Electron 主进程与渲染进程](https://github.com/staven630/blog/blob/master/Electron%E6%8C%87%E5%8D%97/Electron%20%E4%B8%BB%E8%BF%9B%E7%A8%8B%E4%B8%8E%E6%B8%B2%E6%9F%93%E8%BF%9B%E7%A8%8B.md)\n* [Electron 进程间通信](https://github.com/staven630/blog/blob/master/Electron%E6%8C%87%E5%8D%97/Electron%20%E8%BF%9B%E7%A8%8B%E9%97%B4%E9%80%9A%E4%BF%A1.md)\n\n### [💝 CSS秘籍](https://github.com/staven630/blog/tree/master/CSS%E7%A7%98%E7%B1%8D)\n\n* [CSS秘籍——overscroll-behavior控制滚动行为](https://github.com/staven630/blog/tree/master/CSS秘籍/overscroll-behavior控制滚动行为.md)\n\n### [🍭 前端性能优化](https://github.com/staven630/blog/tree/master/%E5%89%8D%E7%AB%AF%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96)\n\n* [前端性能优化——缓存机制](https://github.com/staven630/blog/tree/master/%E5%89%8D%E7%AB%AF%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/%E5%89%8D%E7%AB%AF%E7%BC%93%E5%AD%98%E6%9C%BA%E5%88%B6.md)\n\n\n\u003c!-- ### [🥂 前端实践](https://github.com/staven630/blog/tree/master/%E5%89%8D%E7%AB%AF%E5%AE%9E%E8%B7%B5)\n\n##### \u0026emsp;\u0026emsp;[Handsontable:](https://github.com/staven630/blog/tree/master/%E5%89%8D%E7%AB%AF%E5%AE%9E%E8%B7%B5/Handsontable)\n* [Handsontable-初始化](https://github.com/staven630/blog/tree/master/%E5%89%8D%E7%AB%AF%E5%AE%9E%E8%B7%B5/Handsontable/Handsontable-%E5%88%9D%E5%A7%8B%E5%8C%96.md)\n* [Handsontable-数据源](https://github.com/staven630/blog/tree/master/前端实践/Handsontable/Handsontable-数据源.md) --\u003e\n\n### [🍉 悟透JavaScript设计模式](https://github.com/staven630/blog/tree/master/%E6%82%9F%E9%80%8FJavaScript%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F)\n\n- [悟透JavaScript设计模式——职责链模式](https://github.com/staven630/blog/blob/master/%E6%82%9F%E9%80%8FJavaScript%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E6%82%9F%E9%80%8FJavaScript%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E2%80%94%E2%80%94%E8%81%8C%E8%B4%A3%E9%93%BE%E6%A8%A1%E5%BC%8F.md)\n- [悟透JavaScript设计模式——观察者模式](https://github.com/staven630/blog/blob/master/%E6%82%9F%E9%80%8FJavaScript%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E6%82%9F%E9%80%8FJavaScript%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E2%80%94%E2%80%94%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F.md)\n\n### [🍐 探索ES6](https://github.com/staven630/blog/tree/master/%E6%8E%A2%E7%B4%A2ES6)\n- [ES6带键的集合——Map](https://github.com/staven630/blog/tree/master/%E5%89%8D%E7%AB%AF%E5%BF%8D%E8%80%85%E4%B9%8B%E8%B7%AF/%E6%8E%A2%E7%B4%A2ES6/ES6%E5%B8%A6%E9%94%AE%E7%9A%84%E9%9B%86%E5%90%88%E2%80%94%E2%80%94Map.md)\n- [ES6带键的集合——Set](https://github.com/staven630/blog/blob/master/%E5%89%8D%E7%AB%AF%E5%BF%8D%E8%80%85%E4%B9%8B%E8%B7%AF/%E6%8E%A2%E7%B4%A2ES6/ES6%E5%B8%A6%E9%94%AE%E7%9A%84%E9%9B%86%E5%90%88%E2%80%94%E2%80%94Set.md)\n- [探索ES6——Symbol类型](https://github.com/staven630/blog/blob/master/%E6%8E%A2%E7%B4%A2ES6/%E6%8E%A2%E7%B4%A2ES6%E2%80%94%E2%80%94Symbol%E7%B1%BB%E5%9E%8B.md)\n- [探索ES6——Module 模块](https://github.com/staven630/blog/blob/master/%E6%8E%A2%E7%B4%A2ES6/%E6%8E%A2%E7%B4%A2ES6%E2%80%94%E2%80%94Module%E6%A8%A1%E5%9D%97.md)\n\n### [🍏 Nodejs备忘录](https://github.com/staven630/blog/tree/master/Nodejs%E5%A4%87%E5%BF%98%E5%BD%95)\n\n- [Nodejs备忘录——window 上利用 NVM 安装 node.js](https://github.com/staven630/blog/blob/master/Nodejs%E5%A4%87%E5%BF%98%E5%BD%95/window%E4%B8%8A%E5%88%A9%E7%94%A8NVM%E5%AE%89%E8%A3%85node.js.md)\n- [Nodejs备忘录——exports、module.exports、export、export default](https://github.com/staven630/blog/blob/master/Nodejs%E5%A4%87%E5%BF%98%E5%BD%95/exports%E3%80%81module.exports%E3%80%81export%E3%80%81export%20default.md)\n- [Nodejs备忘录——Koa 结合 passport 鉴权](https://github.com/staven630/blog/blob/master/Nodejs%E5%A4%87%E5%BF%98%E5%BD%95/Koa%E7%BB%93%E5%90%88passport%E9%89%B4%E6%9D%83.md)\n\n\n### [🍉 征服RxJS](https://github.com/staven630/blog/tree/master/%E5%BE%81%E6%9C%8DRxJS)\n\n- [征服RxJS——Observable 和 Observer](https://github.com/staven630/blog/blob/master/%E5%BE%81%E6%9C%8DRxJS/%E5%BE%81%E6%9C%8DRxJS%E2%80%94%E2%80%94Observable%E5%92%8CObserver.md)\n\n### [🍇 微信小程序](https://github.com/staven630/blog/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F)\n\n- [小程序授权](https://github.com/staven630/blog/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8E%88%E6%9D%83.md)\n- [setStorageSync 设置有效时间](https://github.com/staven630/blog/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/setStorageSync%E8%AE%BE%E7%BD%AE%E6%9C%89%E6%95%88%E6%97%B6%E9%97%B4.md)\n- [小程序 switch 样式修改](https://github.com/staven630/blog/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8Fswitch%E6%A0%B7%E5%BC%8F%E4%BF%AE%E6%94%B9.md)\n- [小程序兼容 iPhone X 刘海屏](https://github.com/staven630/blog/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%85%BC%E5%AE%B9iPhone%20X%E5%88%98%E6%B5%B7%E5%B1%8F.md)\n- [小程序定位](https://github.com/staven630/blog/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%AE%9A%E4%BD%8D.md)\n- [小程序异步函数转成 promise 函数](https://github.com/staven630/blog/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%82%E6%AD%A5%E5%87%BD%E6%95%B0%E8%BD%AC%E6%88%90promise%E5%87%BD%E6%95%B0.md)\n- [小程序获取当前页面信息](https://github.com/staven630/blog/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E9%A1%B5%E9%9D%A2%E4%BF%A1%E6%81%AF.md)\n- [小程序实现 1px 细边框](https://github.com/staven630/blog/tree/master/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%AE%9E%E7%8E%B01px%E7%BB%86%E8%BE%B9%E6%A1%86.md)\n\n\n# 算法\n### 🍹 排序算法\n* [排序算法——冒泡排序](https://github.com/staven630/blog/blob/master/%E7%AE%97%E6%B3%95%E6%8E%A2%E9%99%A9/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E2%80%94%E2%80%94%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F.md)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstaven630%2Fblog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstaven630%2Fblog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstaven630%2Fblog/lists"}