LoopBack4は完全に新しいフレームワークで、LoopBack-Nextとも呼ばれます。
Page Contents

LoopBack4の裏にあるビジョンは何か?

  • 複雑な統合を必要とするアプリの構築をさらに簡単にする
  • 拡張機能のエコシステムを有効にする
  • 小型、高速、柔軟、強力なコア
  • 小規模および大規模なチームに適する
  • 最小限の意見で、代わりにチームの意見を強化する

詳細については、LoopBack4の作成を参照してください。

チュートリアルはどこにあるか?

サンプルおよびチュートリアルを参照してください。

今後、どんな機能が計画されているか?

我々のロードマップはここにキャプチャされています。 加えて、毎月のマイルストーンプランも是非ご覧ください。

LoopBack 3のユーザー向けには、今後実装したいLB3機能パリティのリストを共有します。 https://github.com/strongloop/loopback-next/issues/1920.

それ以外にあなたが考える機能があれば、是非、loopback-next/issues/newから機能のリクエストをください。

TypeScriptを選ぶ理由

開発者は引き続きJavaScriptまたはTypeScriptのいずれかでアプリケーションロジックを記述できますが、LoopBack4のコアはTypeScriptで記述されています。その理由は次のとおりです。

  • 開発者の生産性とスケーラビリティの向上。 私たちの顧客は、数十、さらには数百の開発者にまで拡張できるフレームワークを必要としています。 この拡張性こそが、TypeScriptが存在し、近年その勢いを増している理由と言えます。
  • 拡張性の向上と柔軟性。 LoopBack4のコアは、明確に定義された拡張ポイントを備えたLoopBack3.xよりもシンプルです。 多くの責任は、JavaScriptまたはTypeScriptである拡張機能(コンポーネント)にシフトされています。
  • 統一されたツール。 TypeScript開発者は全員、同じIDEであるVisual Studio Codeを使用しています。 LoopBackエコシステムは、いつの日かそのIDEに関する便利なベストプラクティスや、優れた開発者プラグインで満たされる可能性があります。 現在、その取り組みはさまざまなエディターに分かれており、まだ存在しません。
  • 将来を見据えて。最新および将来のJavaScriptの構成を活用する力があります。

TypeScriptの静的分析のサポートにより、より堅牢なツールが使用可能になり、スケーラビリティのベースを構成しています。 これには、一般的な人為的エラーなしでコードを簡単にリファクタリングする機能、開発およびコンパイル時のエラーチェック機能が含まれています。 例えば、多くの人は、複雑なリンティングソリューション(多くのプロジェクトで機能するリンティング構成など)をセットアップするための専門知識と時間を持っていません。

詳細については、#6 の議論を参照ください。

JavaScriptは引き続き機能するか?

LoopBack4自体は、TypeScript(JavaScriptにコンパイルされる)で記述されていますが、TypeScriptとJavaScriptの両方で記述されたアプリケーションをサポートしています。 ドキュメントでは、JavaScript言語の基本的な知識があることを前提として記載しています。 ドキュメントの「JavaScript」と表示されている部分は、ECMAScriptバージョン6(ES6)を前提として記載しています。

※ 一部の例ではES6構文を使用しています。 アロー関数、クラス、テンプレートリテラル、let、constステートメントなどのES6構成に慣れることをお勧めします。

LoopBack3 vs LoopBack4

現在のユーザーは、LoopBack4に移行することをお勧めします。対応の開始は、移行ガイド に従って実施してください。 2つのバージョンの違いに興味がある場合は、LoopBack v3とv4の違い を参照してください。

API Explorerを無効にするにはどうすればよいか?

LoopBackは、自己ホスト型と外部API Explorer へのリダイレクトを提供します。

両方のAPI Explorerを無効にするためのドキュメント:

カスタム応答を送信するにはどうすればよいか?

カスタムレスポンス本文を返す

応答は通常、呼び出されるコントローラー関数によって返される値で決定されます。 その代表例は、すべてのLoopBack4アプリケーションに組み込まれたデフォルトの PingControllerです。:

// 注:簡潔にするためにコードを短くしました

// 「GET/ping」 にマッピングします
@get('/ping', {
  responses: {
    '200': PING_RESPONSE,
  },
})
ping(): object {
  // 返すgreetingメッセージ、現在時刻、URL、リクエストヘッダーを設定します
  return {
    greeting: 'Hello from LoopBack',
    date: new Date(),
    url: this.req.url,
    headers: Object.assign({}, this.req.headers),
  };
}
}

この例では、 ping()関数がカスタムオブジェクトを返すことがわかります。 これは、APIコンシューマーが /pingにリクエストを送信すると、応答本文に反映されます。

応答をさらにカスタマイズする方法

応答の他の部分(HTTPヘッダーなど)を変更する必要がある場合があります。 その場合は、 Responseオブジェクトをコントローラーに注入することで対応できます。:

import {inject} from '@loopback/context';
import {get, Response, RestBindings} from '@loopback/rest';

export class PingController {
  constructor(@inject(RestBindings.Http.RESPONSE) private res: Response) {}

  // 「GET/ping」にマッピングします
  @get('/ping', {
    responses: {
      '200': {
        description: 'Ping Response',
        content: {
          'application/json': {
            schema: {
              type: 'object',
              title: 'PingResponse',
              properties: {
                greeting: {type: 'string'},
                additionalProperties: false,
              },
            },
          },
        },
      },
    },
  })
  ping(): object {
    this.res.setHeader('x-secret-sauce', 'Sugar, spice and everything nice.');

    // 返すgreetingメッセージを設定します
    return {
      greeting: 'Hello from LoopBack',
    };
  }
}

これにより、カスタムレスポンスの本文と新しいヘッダー x-secret-sauceが生成されます。

デフォルトのバインディングキーはどこにあるか?

@loopback/*パッケージで使用されるバインディングキーは、予約済みバインディングキー に統合されます。

一般バインディングと構成バインディングの違いは何か?

構成バインディングは、一般的なバインディングAPIを利用して、完全に別個のキーを作成する必要がある構成バインディングキーの命名規則を標準化するAPIです。 慣例による設定 を参照してください。

Expressルーターを接続できるか?

はい。 Expressルーターのマウント を参照してください。

Expressミドルウェアをマウントできるか?

LoopBack4は、Expressミドルウェアについてファーストクラスのサポートに対応していません。 ただし、回避策 があります。