当前位置: 首页 > news >正文

复兴网站制作深圳做网站三网合一

复兴网站制作,深圳做网站三网合一,做网站需要编程吗,vs2017网站开发视频教程 10_模块Module1_哔哩哔哩_bilibili 1. 模块Module 在 Nest.js 中#xff0c;Module 是框架的核心概念之一#xff0c;用于组织和管理应用程序的不同部分#xff0c;包括服务、控制器、中间件以及其他模块的导入。每个 Nest.js 应用程序至少有一个根模块#xf…视频教程 10_模块Module1_哔哩哔哩_bilibili 1. 模块Module 在 Nest.js 中Module 是框架的核心概念之一用于组织和管理应用程序的不同部分包括服务、控制器、中间件以及其他模块的导入。每个 Nest.js 应用程序至少有一个根模块通常命名为 AppModule并且可以根据需要创建更多的模块以实现更好的代码组织和模块化。 模块的主要功能和用途包括 服务注册 使用 providers 属性来注册服务这些服务可以被其他模块通过依赖注入DI系统来获取和使用。 控制器注册 使用 controllers 属性来注册控制器它们处理 HTTP 请求并返回响应。 模块导入 使用 imports 属性来导入其他模块这样就可以在整个应用范围内共享和使用已导入模块的控制器和服务。 导出提供者 使用 exports 属性来导出模块内的服务和其他提供者使其可供其他导入该模块的模块使用。 全局中间件 使用 middleware 属性注册全局中间件这些中间件会对所有的 HTTP 请求生效。 路由前缀 通过 path 属性为模块内的所有控制器添加路由前缀方便进行路由分组和管理。 配置绑定 可以在模块级别绑定配置对象这些配置可在模块内的服务中通过 Inject() 注解注入和使用。 动态模块 通过 register 或forRoot() 或 forFeature() 方法可以创建动态模块根据需要动态加载和配置模块。 nest new module -p pnpm pnpm start:dev 2. 基本用法 nest g res aaa 当我们使用nest g res aaa 创建一个CURD 模板的时候 nestjs 会自动帮我们引入模块 在aaa.module中也自动处理了AaaController AaaService 3. 共享模块 nest g resource bbb --no-spec // --no-spec 是不生成测试文件 在 AaaModule 里指定 exports 的 provider 然后在 BbbModule 里 imports 这样就可以在bbb中使用aaa的service了 pnpm run start:dev http://localhost:3000/bbb 4. 全局模块 如果这个 AaaModule 被很多地方引用每个模块都 imports 太麻烦了这时候就可以把它声明为全局的 Global() 我们给 aaa 模块添加 Global() 他便注册为全局模块 在bbb 模块使用无须在module import 导入 依然是可以注入的 注全局模块尽量少用注入的很多 provider 不知道来源降低代码的可维护性。 5. 动态模块 我们上面讲的模块都是静态的也就是它的内容是固定不变的每次 import 都是一样有的时候我们希望 import 的时候给这个模块传一些参数动态生成模块的内容这时就需要用到动态模块了。 动态模块主要就是为了给模块传递参数 可以给该模块添加一个静态方法 用来接受参数 nest g resource ccc --no-spec // --no-spec 是不生成测试文件 他自动生成的模块是这样的 我们现在来改成Dynamic Module 我们给 CccModule 加一个 register 的静态方法返回模块定义的对象。和在装饰器里定义的时候的区别只是多了一个 module 属性。 现在我们在去app.module中重新处理下他的import import 的时候就得这样用了通过 register 方法传入参数返回值就是模块定义现在我们在运行项目访问http://localhost:3000/ccc 可以看到依然是正常的 而且这时候我们把传入的 options 通过 useValue 创建的 provider这样模块内部就可以注入它了。 再次在浏览器访问 这样我们就可以在 import 一个模块的时候传入参数然后动态生成模块的内容这就是 Dynamic Module。 register 这个方法其实叫啥都行但 nest 约定了 3 种方法名 register用一次模块传一次配置比如这次调用是 CccModule.register({name: xt})下一次就是 CccModule.register({name: lxc}) 了forRoot配置一次模块用多次比如 XxxModule.forRoot({}) 一次之后就一直用这个 Module一般在 AppModule 里 importforFeature用了 forRoot 固定了整体模块用于局部的时候可能需要再传一些配置比如用 forRoot 指定了数据库链接信息再用 forFeature 指定某个模块访问哪个数据库和表。 其实 forRoot、forFeature、register 本质上没区别只是我们约定了它们使用上的一些区别。 6. Nest 提供创建动态模块的方式 nest g module ddd nest g controller ddd --no-spec 这次我们不手动写 register、registerAsync 等方法了用 builder 来生成。 import { ConfigurableModuleBuilder } from nestjs/common;export interface DddModuleOptions {name: string;age: number; }export const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } new ConfigurableModuleBuilderDddModuleOptions().build(); 用 ConfigurableModuleBuilder 生成一个 class这个 class 里就带了 register、registerAsync 方法。 返回的 ConfigurableModuleClass、MODULE_OPTIONS_TOKEN 分别是生成的 class 、options 对象的 token。 然后 DddModule 继承它这样这个 DddModule 就已经有了 register 和 registerAsync 方法了 那现在如何在 Module 内注入这个 options 呢记得 build class 的时候返回了一个 token 么 就用这个注入 当然options 对象不是这么用的一般是用来做配置内部的 provider 基于它来做一些设置这里只是演示。 你还可以用 registerAsync 方法用 useFactory 动态创建 options 对象 前面我们说还可以用 forRoot、forFeature 这样的方法那用 builder 的方式如何生成这样的 class 呢调用 setClassMethodName 设置下就好了 如果你还想根据传入的参数决定是否设置为全局模块那就要这样写 import { ConfigurableModuleBuilder } from nestjs/common;export interface DddModuleOptions {name: string;age: number; }export const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } new ConfigurableModuleBuilderDddModuleOptions().setClassMethodName(register).setExtras({isGlobal: true,}, (definition, extras) ({...definition,global: extras.isGlobal,})).build(); setExtras 第一个参数是给 options 扩展啥 extras 属性第二个参数是收到 extras 属性之后如何修改模块定义。我们定义了 isGlobal 的 option收到它之后给模块定义加上个 global。 然后我们会发现一个问题 在我们使用的时候他没有isGlobal 属性 因为我们用的是这个类型 我们应该用builder 返回的类型 这个 ASYNC_OPTIONS_TYPE 是 async 方式创建模块的 otpion 类型. 在实际项目中 你可以自己创建动态模块也可以使用nest提供的 ConfigurableModuleBuilder它只是对我们定义 register、registerAsync 的过程做了封装。
http://www.hkea.cn/news/14562947/

相关文章:

  • 成都网站建设行业分析建设银行网站不能打开
  • 如何保持网站中的图片合肥专业网站制作
  • 桂林市电力建设公司网站门户网站建设的书籍
  • 网站几几年做的怎么查做流量网站吗
  • 网站建设孝感网络整合营销的概念
  • 网站qq在线代码怎么取消网站备案
  • 四川建设厅网上查询网站首页南京制作网页学校
  • 建设厅官方网站企业库淮南做网站
  • 做网站不赚钱了线上推广什么意思
  • 服饰网站建设建设游戏网站
  • visual studio制作网站开发医院网站建设多少钱
  • 做这个网站多少钱软件开发模型有哪些
  • 微商手机网站制作公司wordpress微信机器人下载地址
  • 重庆网站备案在那里如何备份wordpress数据库
  • 建设电子商务网站门户网站建设经济交流材料
  • 河北省建设厅网站高端建筑
  • 公司官网用什么建站程序快速建站工具
  • 网站免费进入窗口软件有哪些兰州网站建设q.479185700棒
  • 创建一个网站需要做哪些准备window优化大师官网
  • 苏州建行网站亚马逊雨林面积有多大
  • 商城网站开发商受欢迎的南昌网站建设
  • 网站建设利益上城区建设局网站
  • 自己做网站广告法做排行榜的网站
  • 做网站开发甲方一直要求p图网站营销如何做
  • 布朗新风 中企动力提供网站建设推广普通话的意义
  • 做软件推广网站怎么赚钱江西省住房和城乡建设厅的网站
  • 网站建设推广策划东莞家具行业营销型网站建设多少钱
  • 花都网站开发株洲企业网站建设工作
  • 网站开发总体功能设计seo去哪学
  • 桐庐县建设局网站郑州市住房和城乡建设厅官网