Hub危険から始まる


の主な目標の一つHubHazard セットアップのステップをできるだけ簡単にすることです.この記事では、Hub危険プロジェクトを作成する最も簡単な方法を提示しますHubHazard Basic Template . 要するに
  • から新しいリポジトリを作成するtemplate .
  • リポジトリをクローンする
  • 依存関係をインストールするnpm install )
  • サーバを起動するnpm run start:dev )
  • テンプレートからgithubリポジトリを作成する


    Gitリポジトリを作成することによってプロジェクトを起動するのは常に良いアイデアです.に移動HubHazard Basic Template github repository を押すとUse this template その中のリポジトリを作成するボタン.

    次の画面でリポジトリに名前を付け、Create a repository from template ボタン.あなたは、新しいレポがクローンされる準備ができています.

    クローニング後、すべてのパッケージを実行してインストールすることを忘れないでください.
    npm install
    

    プロジェクトの起動とネスト。js基本


    The 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).


    The Nest.js フレームワークamazing documentation , しかし、あなたはそれが本当に使用する方法を知っている必要はありませんHubHazard . それは何かを知って傷つくことはありませんmodules and providers けれども.
    あなたの自動化に取り組んで開発モードでサーバーを実行することができます.それを実行するにはstart:dev スクリプト
    num run start:dev
    
    プロジェクトをコンパイルして実行します.プロジェクトテンプレートには、15秒ごとにメッセージを表示する例の自動化が付属しています.

    フードの下で何が起こるか


    それで、フードの下で本当にここで起こっていること?遊びには4つの主要な要素があります.

  • オートメーション-オートメーションは、そのトリガーによって記述された条件が満たされたときに実行されるコードの一部です.それぞれの自動化はAutomation クラス.彼らはAutomationsService . automationsservice .

  • イベントサービス-彼らは、購読された自動化にそれらのイベントを送るイベント工場として機能します.各イベントサービスはすべての加入者を知っている.それぞれのイベントサービスはEventsService クラス.彼らはAutomationsService .

  • 自動化サービス-自動化とイベントサービスのクラス管理登録.それはすべて一緒にリンクします.
  • の場合template project 私たちには、1つのイベントサービスと1つのオートメーションだけがあります:

    すべては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 . The TimerEventsService それが扱うことができるものを捜して自動化の走査トリガー.の場合BasicAutomation 自動化を15秒ごとに実行するよう求めているトリガー定義が1つあります.The TimerEventsService それを覚えて、送信されますautomation event 直接その自動化に15秒ごとに.

    すべて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ドルのコンピュータ.