HubHazard로 시작하기
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 기본사항
HubHazard은 Nest.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 을 사용하기 위해 실제로 어떻게 작동하는지 알 필요는 없습니다. 그래도 modules 및 providers에 대해 아는 것이 나쁠 것은 없습니다.
자동화 작업을 할 때 개발 모드에서 서버를 실행할 수 있습니다. 그렇게 하려면
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을 보냅니다.모든 automations은
handleEvent
함수를 구현해야 합니다. 해당 함수는 이벤트 서비스에 의해 호출되며 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.`);
}
}
다음
다음 기사에서는 HubHazard에 Raspberry Pi Zero W 서버를 설치하는 방법을 설명하겠습니다. 이 목적에 딱 맞는 5달러짜리 컴퓨터입니다.
Reference
이 문제에 관하여(HubHazard로 시작하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/xkonti/starting-with-hubhazard-5ef2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)