乐清网站制作公司,昆明如何做百度的网站,上交所互动平台,网上营销集成NestJS 是一个基于 Node.js 的渐进式框架#xff0c;构建在 Express 或 Fastify 之上#xff0c;主要用于构建高效、可扩展的服务器端应用程序。它使用 TypeScript 并借鉴了 Angular 的设计理念#xff0c;采用了依赖注入#xff08;IoC, Inversion of Control#xff09;…
NestJS 是一个基于 Node.js 的渐进式框架构建在 Express 或 Fastify 之上主要用于构建高效、可扩展的服务器端应用程序。它使用 TypeScript 并借鉴了 Angular 的设计理念采用了依赖注入IoC, Inversion of Control的模式这使得 NestJS 具有高度模块化和松耦合的特性。
在 NestJS 中依赖注入DI, Dependency Injection是通过 IoC 容器实现的。这个 IoC 容器负责实例化和管理类的依赖关系从而提高代码的灵活性和可维护性。
class A {name: string;constructor(name: string) {this.name name;}
}
class B {a: Aconstructor() {this.a new A(李四);}
}
class C {a: Aconstructor() {this.a new A(王五);}
}
const b new B();
console.log(b.a.name); // 输出: 李四const c new C();
console.log(c.a.name); // 输出: 王五这里B、C 高度依赖AB、C实例化的同时会把A实例化动作是B、C发出的。
使用中间件解耦实例
通过创建 Container 类来解耦实例并通过 G 类从 Container 中获取这些实例。这是一种简单的依赖注入模式常用于大型项目中以保持模块之间的松耦合。
class E {name: string;constructor(name: string) {this.name name;}
}class F {name: string | number; // 保留原来的声明constructor(name: string | number) {this.name name;}
}
//中间件用于解耦
class Container {modeuls: anyconstructor() {this.modeuls {}}provide(key: string, modeuls: any) {this.modeuls[key] modeuls}get(key) {return this.modeuls[key]}
}
const con new Container();
con.provide(name, new E(张三));
con.provide(age, new F(1));console.log(con.get(name)); // 输出: E { name: 张三 }
console.log(con.get(age)); // 输出: F { name: 1 }class G {a:any;b:any;constructor(container:Container){this.a con.get(name)this.b con.get(age)}
}
const g new G(con);
console.log(g)
//G { a: E { name: 张三 }, b: F { name: 1 } }
解释
通过 con.provide(“name”, new E(“张三”))你将一个 E 的实例存储在 Container 中并以 name 作为键。类似地你通过 con.provide(“age”, new F(1)) 存储了 F 的实例。然后通过 con.get(“name”) 和 con.get(“age”) 可以取回这些实例。G 类通过 container 对象获取 name 和 age 对应的实例并将它们赋值给 a 和 b从而保持类 G 与具体模块E 和 F之间的解耦。
总结
这种设计模式利用 Container 类管理依赖将 G 类与具体的模块类E 和 F解耦。这种模式可以让代码结构更清晰模块间的依赖关系更松散便于维护和扩展。
好书推荐
JavaScript前端开发与实例教程 JavaScript是开发Web前端必须掌握的编程语言《JavaScript前端开发案例教程微课视频版》以真实的项目需求为导向循序渐进、深入浅出地讲解JavaScript开发技术。每章均由知识点讲解、案例实践、面试题和学科竞赛题四部分组成并配套提供案例源代码、PPT课件、课后习题答案、微课视频、教案、教学大纲、课程实训、期末考试试卷、章节测试、实验报告、学习通共享课程、学科竞赛真题等丰富的教学资源。
《JavaScript前端开发案例教程微课视频版》共分13章主要内容包括JavaScript概述、语法基础、数组、函数、对象、DOM、事件处理、BOM、JavaScript特效综合实例、Ajax、基于AjaxECharts的天气预报系统、ES6、基于ES6的文创商城等并提供了重污染天气预警、“2048”游戏、“渔夫打鱼晒网”程序设计、“扫雷”游戏、高亮显示关键词、留言板、折叠面板、浮现社会主义核心价值观内容、事件监听器、限时秒杀、电影购票、在线网盘、轮播图、网络购物车、放大镜等大量实例。
《JavaScript前端开发案例教程微课视频版》适合JavaScript初学者、Web前端开发人员阅读也可作为高等院校Web前端开发、JavaScript程序设计、跨平台脚本开发、动态网页脚本技术等相关课程的教材。