Logo
☆☆☆☆☆
0.0
Intermediate
25h

Grokking Node.js 设计模式面试指南

设计模式是经过验证的代码组织方式,能够确保系统演进过程中代码依然保持灵活性。它们帮助你构建可扩展、可变更并能轻松集成新行为的应用程序,而无需频繁重写。在本课程中,你不仅学习设计模式,还将通过解决真实的 Node.js 工程问题来发现这些模式。 每个模块都从日常后端工作中遇到的实际挑战开始,例如更改依赖项、扩展功能或引入运行时灵活性。你将首先了解痛点,然后揭示一种可复用的设计如何作为简洁的解决方案浮现出来。 通过逐步深入的编码练习,你将反复实践这些理念,直到它们成为你的本能反应。课程结束时,你编写的 Node.js 代码不仅正确,而且经过精心设计、结构清晰,具备良好的可扩展性,易于维护,并能从容应对未来的变化。

8 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
Grokking Node.js 设计模式面试指南
设计模式是经过验证的代码组织方式,能够确保系统演进过程中代码依然保持灵活性。它们帮助你构建可扩展、可变更并能轻松集成新行为的应用程序,而无需频繁重写。在本课程中,你不仅学习设计模式,还将通过解决真实的 Node.js 工程问题来发现这些模式。 每个模块都从日常后端工作中遇到的实际挑战开始,例如更改...

WHAT YOU'LL LEARN

对设计模式如何在 Node.js 中为反复出现的工程问题提供可重用解决方案的实际理解

Content

8 Lessons • 0 Quizzes • 0 Challenges

Node.js 模式入门
  1. 1

    为什么设计很重要

  2. 2

    SOLID 原则

工厂模式:动态生成配置驱动的服务
  1. 1

    理解工厂模式

  2. 2

    创建环境特定的数据库客户端工厂

  3. 3

    解决方案:创建一个环境特定的数据库客户端工厂

  4. 4

    添加特性标志的记录器实例化

  5. 5

    解决方案:添加特性标志记录器实例化

  6. 6

    构建一个供应商无关的 API 客户端工厂

  7. 7

    解决方案:构建一个供应商无关的 API 客户端工厂

  8. 8

    实现一个基于配置的通知服务工厂

  9. 9

    解决方案:实现一个基于配置的通知服务工厂

  10. 10

    使用 ES 模块动态加载数据库客户端

  11. 11

    解决方案:使用 ES 模块动态加载数据库客户端

  12. 12

    创建一个可插拔的支付处理器工厂

  13. 13

    解决方案:创建一个可插拔的支付处理器工厂

  14. 14

    创建一个带有特性标志的分析服务

  15. 15

    解决方案:创建一个带特性标志的分析服务

  16. 16

    构建多租户服务工厂

  17. 17

    解决方案:构建一个多租户服务工厂

  18. 18

    用于动态组合中间件链的工厂

  19. 19

    解决方案:用于动态组合中间件链的工厂

Builder Pattern:使用流畅的 API 组装复杂对象
  1. 1

    理解建造者模式

  2. 2

    构建一个最小化的电子邮件模板生成器

  3. 3

    解决方案:构建一个最小化的电子邮件模板生成器

  4. 4

    创建一个流畅的披萨订单构建器

  5. 5

    解决方案:创建一个流畅的披萨订单构建器(concept)

  6. 6

    构建一个简单的验证规则生成器

  7. 7

    解决方案:构建一个简单的验证规则生成器(concept)

  8. 8

    构建一个灵活的产品查询构建器

  9. 9

    解决方案:构建一个灵活的产品查询构建器

  10. 10

    使用条件参数设计一个 URL 构建器

  11. 11

    解决方案:使用条件参数设计一个 URL 构建器(concept)

  12. 12

    实现一个可链式调用的日志配置构建器

  13. 13

    解决方案:实现一个可链式调用的日志配置构建器

  14. 14

    在注册表单中强制执行必填的构建顺序

  15. 15

    解决方案:在注册表单中强制执行必需的构建顺序

  16. 16

    使用嵌套构建器模拟 GraphQL 查询

  17. 17

    解决方案:使用嵌套构建器模拟 GraphQL 查询

  18. 18

    使用验证规则构建表单模式生成器

  19. 19

    解决方案:使用验证规则构建表单模式生成器

装饰器模式:在不修改核心逻辑的情况下扩展行为
  1. 1

    理解装饰器模式

  2. 2

    向工具函数添加日志记录

  3. 3

    解决方案:向工具函数添加日志记录

  4. 4

    异步任务执行时间测量

  5. 5

    解决方案:测量异步任务的执行时间

  6. 6

    在服务方法上链式使用多个装饰器

  7. 7

    解决方案:在服务方法上链式使用多个装饰器

  8. 8

    为路由处理器添加授权

  9. 9

    解决方案:向路由处理器添加授权

  10. 10

    将配置注入装饰器

  11. 11

    解决方案:将配置注入装饰器

  12. 12

    使用装饰器跟踪函数调用次数

  13. 13

    解决方案:使用装饰器跟踪函数调用次数

  14. 14

    使用指标装饰可重试操作

  15. 15

    解决方案:使用指标装饰可重试操作

  16. 16

    无需修改核心逻辑即可添加缓存

  17. 17

    解决方案:在不修改核心逻辑的情况下添加缓存

  18. 18

    根据配置动态组合装饰器

  19. 19

    解决方案:根据配置动态组合装饰器

适配器模式:在依赖项之间标准化接口
  1. 1

    理解适配器模式

  2. 2

    统一 HTTP 客户端响应

  3. 3

    解决方案:统一 HTTP 客户端响应

  4. 4

    标准化日志记录器接口

  5. 5

    解决方案:标准化日志记录器接口

  6. 6

    标准化文件存储客户端

  7. 7

    解决方案:标准化文件存储客户端

  8. 8

    桥接回调与 Promise API

  9. 9

    解决方案:桥接回调和 Promise API

  10. 10

    统一缓存客户端

  11. 11

    解决方案:统一缓存客户端

  12. 12

    适配配置源

  13. 13

    解决方案:适配配置源

  14. 14

    组合嵌套适配器

  15. 15

    解决方案:组合嵌套适配器

  16. 16

    用于回退 API 的混合服务适配器

  17. 17

    解决方案:用于回退 API 的混合服务适配器

  18. 18

    异步流式适配器

  19. 19

    解决方案:异步流式适配器

代理模式:透明地拦截和控制访问
  1. 1

    理解代理模式

  2. 2

    在配置对象上记录每一次属性读取

  3. 3

    解决方案:在 Config 对象上记录每一次属性读取

  4. 4

    防止意外修改只读设置

  5. 5

    解决方案:防止意外修改只读设置

  6. 6

    自动默认缺失值

  7. 7

    解决方案:自动默认缺失值

  8. 8

    懒加载一个重型服务,仅在首次使用时加载

  9. 9

    解决方案:仅在首次使用时懒加载一个重型服务

  10. 10

    在服务方法上强制实施基于角色的访问控制

  11. 11

    解决方案:在服务方法上强制实施基于角色的访问控制

  12. 12

    在不修改源代码的情况下塑造旧版 API 响应

  13. 13

    解决方案:在不修改源代码的情况下,对旧版 API 响应进行形状定义

  14. 14

    透明地跟踪 API 使用指标

  15. 15

    解决方案:透明地跟踪 API 使用指标

  16. 16

    通过代理缓存昂贵的函数调用

  17. 17

    解决方案:通过代理缓存昂贵的函数调用

  18. 18

    通过网络模拟代理远程对象

  19. 19

    解决方案:通过网络模拟代理远程对象

策略模式:根据上下文切换算法
  1. 1

    理解策略模式

  2. 2

    使用可插拔算法对报告进行排序

  3. 3

    解决方案:使用可插拔算法对报告进行排序

  4. 4

    以多种风格格式化问候语

  5. 5

    解决方案:以多种样式格式化问候语

  6. 6

    为营销活动应用灵活折扣

  7. 7

    解决方案:为营销活动应用灵活折扣

  8. 8

    使用可选后端缓存数据

  9. 9

    解决方案:使用可选择的后端缓存数据

  10. 10

    通过已配置的网关处理支付

  11. 11

    解决方案:通过已配置的网关处理支付

  12. 12

    使用可切换编码器压缩文件

  13. 13

    解决方案:使用可切换编码器压缩文件

  14. 14

    计算实验组的价格

  15. 15

    解决方案:为实验组计算价格

  16. 16

    使用可配置的登录和令牌认证用户

  17. 17

    解决方案:使用可配置的登录和令牌认证用户

  18. 18

    使用自定义策略重试失败的请求

  19. 19

    解决方案:使用自定义策略重试失败的请求

结语
  1. 1

    更大的图景

Certificate of Completion

Showcase your accomplishment by sharing your certificate of completion.

Course Author:Anonymous User

Reviews

Read reviews from students who have taken this course and share your own experience.

Reviews & Comments (0)