Nest.js学习记录3

1.路由简单访问

        app.controller.ts

import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller("a")    //这里
export class AppController {
  constructor(private readonly appService: AppService) {}
    
  @Get("b")    //和这里
  getHello(): string {
    return this.appService.getHello();
  }
}

        访问时输入: localhost:3000/a/b

2.依赖注入

        初始代码结构

                app.service.ts

import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
}

                app.controller.ts

import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}//这一段是依赖注入
              //私有的 //只读的            注入appservice
  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}

                app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],    //在这注册后才能使用
})
export class AppModule {}

                main.ts

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

3.写一段简易静态模块

        src

                config        (配置文件夹)

                        config.module.ts

                        config.service.ts

                configure

                        app.ts

                        database.ts

                app.controller.ts

                app.module.ts

                app.service.ts

                main.ts

        ——————————项目结构——————————————

        config  ->  config.module.ts

import { Module } from '@nestjs/common';
import { ConfigService } from './config.service';

@Module({
    providers: [ConfigService],
    exports:[ConfigService]
})
export class ConfigModule {}

        config -> config.service.ts

import { Injectable } from '@nestjs/common';
import { readdirSync } from 'fs';
import path from 'path';


@Injectable()
export class ConfigService {
  config = {} as any
  constructor(){
    const config = { path: path.join(__dirname, '../configure') }
    console.log(config)
    readdirSync(config.path).map(async (file)=>{
      if(file.slice(-2) === "js"){
        const module = await import(path.resolve(config.path, file))
        console.log(module.default())
        this.config = {...this.config, ...module.default()}    //获取文件内内容
      }
    })
  }
  get(){
    return this.config.database
  }
}

        configure -> app.ts

export default ()=>{
    return {
        app: {
            name:"后盾人2"
        }
    }
}

        configure -> database.ts

export default ()=>{
    return {
        database:{
            host:"localhost"
        }
    }
}

        app.controller.ts

import { Controller, Get } from '@nestjs/common';
import { ConfigService } from './config/config.service';

@Controller()
export class AppController {
  constructor(private readonly config:ConfigService) {}

  @Get()
  getHello(): any {
    return this.config.get(); 
  }
}

        app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ConfigModule } from './config/config.module';

@Module({
  imports: [ConfigModule],    //这里导入
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

4.做一些小优化

        config.service.ts

import { Injectable } from '@nestjs/common';
import { readdirSync } from 'fs';
import path from 'path';


@Injectable()
export class ConfigService {
  config = {} as any
  constructor(){
    const config = { path: path.join(__dirname, '../configure') }
    console.log(config)
    readdirSync(config.path).map(async (file)=>{
      if(file.slice(-2) === "js"){
        const module = await import(path.resolve(config.path, file))
        this.config = {...this.config, ...module.default()}
      }
    })
  }
  get(path: string){    //优化了这里
    return path.split('.').reduce((prev, curr) => prev[curr], this.config) // 获取配置
  }
}

        使用        app.controller.ts

import { Controller, Get } from '@nestjs/common';
import { ConfigService } from './config/config.service';

@Controller()
export class AppController {
  constructor(private readonly config:ConfigService) {}

  @Get()
  getHello(): any {
    return this.config.get("app.name"); 
  }
}

5.创建文件

        src -> article

                article.controller.ts

import { Controller , Get } from '@nestjs/common';

@Controller("article")
export class ArticleController {
  @Get()
  getHello() {
      return "aaeadda"
  }

}

                article.module.ts

import { Module } from '@nestjs/common';
import { ArticleController } from './article.controller';

@Module({
    controllers:[ArticleController]    //这里要挂载
})
export class ArticleModule {}

        app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ConfigModule } from './config/config.module';
import { ArticleModule } from './article/article.module';

@Module({
  imports: [ConfigModule , ArticleModule],    //这里要导入
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

5.文件的使用

        app.controller.ts

                这个文件是用来定义 Nest.js 应用的控制器的。控制器负责处理进来的请求,并返回相应的数据或结果。通常在这个文件中定义一些路由和相应的方法来处理这些路由请求。

        app.module.ts

                这个文件是 Nest.js 应用的主模块文件,负责定义应用的一些配置、引入引用的模块、服务、控制器等,并将它们连接起来。通常在这个文件中会导入各种模块、服务和控制器,以及对应的装饰器来设置应用的一些配置。

        app.service.ts

                这个文件是定义 Nest.js 应用的服务的。服务用来处理一些业务逻辑,以及提供一些功能性的方法供控制器调用。通常在这个文件中会定义一些数据操作的方法,例如与数据库的交互、调用外部 API 等操作。

@Module({
    imports: [ConfigModule],           //引入挂载的模块
    controllers:[ArticleController]    //控制的路由模块
    providers: [ConfigService],        //提供功能模块
    exports:[ConfigService]            //外部可以获取的功能模块
})

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

博丽七七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值