HubHazard로 시작하기

HubHazard의 주요 목표 중 하나는 설정 단계를 가능한 한 쉽게 만드는 것입니다. 이 게시물에서는 HubHazard Basic Template을 사용하여 HubHazard 프로젝트를 만드는 가장 간단한 방법을 제시합니다. 요컨대:
  • template에서 새 저장소를 만듭니다.
  • 저장소 복제
  • 종속성 설치( npm install )
  • 서버 시작( npm run start:dev )

  • 템플릿에서 Github 리포지토리 만들기



    git 저장소를 생성하여 프로젝트를 시작하는 것은 항상 좋은 생각입니다. HubHazard Basic Template github repository으로 이동하여 Use this template 버튼을 눌러 리포지토리를 생성합니다.



    다음 화면에서 리포지토리 이름을 지정하고 Create a repository from template 버튼을 클릭합니다. 새 저장소를 복제할 준비가 되었습니다.



    저장소를 복제한 후 다음을 실행하여 모든 패키지를 설치해야 합니다.

    npm install
    


    프로젝트 시작 및 Nest.js 기본사항



    HubHazardNest.js 프레임워크에서 실행 중입니다.

    Nest is a framework for building efficient, scalable Node.js server-side applications. It uses modern JavaScript, is built with TypeScript (preserves compatibility with pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).



    Nest.js 프레임워크에는 amazing documentation 이 있지만 HubHazard 을 사용하기 위해 실제로 어떻게 작동하는지 알 필요는 없습니다. 그래도 modulesproviders에 대해 아는 것이 나쁠 것은 없습니다.

    자동화 작업을 할 때 개발 모드에서 서버를 실행할 수 있습니다. 그렇게 하려면 start:dev 스크립트를 실행하기만 하면 됩니다.

    num run start:dev
    


    프로젝트를 컴파일하고 실행해야 합니다. 프로젝트 템플릿에는 15초마다 메시지를 표시하는 하나의 예제 자동화가 포함되어 있으므로 해당 메시지가 표시되어야 합니다.



    후드 아래에서 일어나는 일



    후드 아래에서 실제로 무슨 일이 일어나고 있습니까? 4가지 주요 요소가 있습니다.

  • 자동화 - 자동화는 트리거에 의해 설명된 조건이 충족될 때 실행되는 코드 조각입니다. 각 자동화는 Automation 클래스를 확장하는 클래스로 표시됩니다. 그들은 AutomationsService에 등록합니다. automationsservice .

  • 이벤트 서비스 - 해당 이벤트를 등록된 자동화로 보내는 이벤트 팩토리 역할을 합니다. 각 이벤트 서비스는 모든 구독자를 알고 있습니다. 각 이벤트 서비스는 EventsService 클래스를 구현하는 클래스로 표시됩니다. 그들은 AutomationsService에 등록합니다.

  • 자동화 서비스 - 자동화 및 이벤트 서비스 등록을 관리하는 클래스입니다. 그것은 그들 모두를 함께 연결합니다.

  • template project의 경우 하나의 이벤트 서비스와 하나의 자동화만 있습니다.



    모든 것은 app.module.ts 파일로 시작합니다. 이것은 서버의 기본 모듈입니다. 사용된 모든 이벤트 서비스 및 자동화는 여기에 등록해야 합니다.

    import { AutomationsModule, TimerEventsModule } from '@hubhazard/core';
    import { Module } from '@nestjs/common';
    import { ConfigModule } from '@nestjs/config';
    import { BasicAutomation } from './automations/basic-automation';
    
    @Module({
      imports: [
        AutomationsModule,
        ConfigModule.forRoot({ isGlobal: true }),
        TimerEventsModule,
      ],
      providers: [BasicAutomation],
    })
    export class AppModule {}
    

    imports에 언급된 모든 이벤트 서비스는 AutomationsService에 자동으로 등록됩니다. 마찬가지로 providers에 언급된 모든 자동화는 AutomationsService에 자동으로 등록됩니다. 새 자동화를 만들 때 기억해야 할 것은 app.module.ts 파일의 공급자 목록에 추가하는 것뿐입니다.
    BasicAutomation가 등록되면 TimerEventsService에 전달됩니다. TimerEventsService은 자동화 트리거를 검색하여 처리할 수 있는 트리거를 검색합니다. BasicAutomation의 경우 15초마다 자동화를 실행하도록 요청하는 하나의 트리거 정의가 있습니다. TimerEventsService은 이를 기억하고 15초마다 해당 자동화에 직접 automation event을 보냅니다.



    모든 automationshandleEvent 함수를 구현해야 합니다. 해당 함수는 이벤트 서비스에 의해 호출되며 automation events 을 제공하는 데 사용됩니다.

    import { Automation, TimerTrigger } from '@hubhazard/core';
    import { Injectable } from '@nestjs/common';
    
    @Injectable()
    export class BasicAutomation extends Automation {
      readonly name = 'Basic automation';
      readonly triggers = [TimerTrigger.every(15, 'seconds')];
    
      private counter = 0;
    
      // Handle the timer event
      async handleEvent() {
        this.counter++;
        console.log(`Triggered the '${this.name}' ${this.counter} times.`);
      }
    }
    


    다음



    다음 기사에서는 HubHazardRaspberry Pi Zero W 서버를 설치하는 방법을 설명하겠습니다. 이 목적에 딱 맞는 5달러짜리 컴퓨터입니다.

    좋은 웹페이지 즐겨찾기