ODI - Server - side Framework
16290 ワード
導入
こんにちは人々!
私は現在、サーバーサイドのタイプスクリプトのフレームワークに取り組んでいます.私のチームは既に様々な電子商取引とERPプロジェクトでこのフレームワークを広く使用しています.構造と意味は他の人気のフレームワークのようなものだったSpring and ASP.NET .
主要な目標のリスト:
現在、多くの可能性があります.
最高のパフォーマンスのために、フードの下で.Fastify を使用する.フレームワークは宣言的ですが、また、デコレーターを使用することは可能です.だから、それはすべてのシンプルでクリーンでミニマルである.
概要
コントローラ
コントローラは、最小限のスタイルでシンプルで強力なルーティングメカニズムとして機能します.
@Controller('foo')
export class FooController extends IController {
@RoutePatch('{id}')
bar(id: string, payload: FooDTO) {
...some updates..
return Ok();
}
@Get index() {
return 'Foo';
}
}
それで、あなたが見るように、HTTP要求から注射データのためにどんな追加paramデコレーターも提供する必要はありません.それはちょうど小さなコントローラの概要です、他の多くの可能性があります.を読むことができますdocs .依存性注入
ODIはボックスから強力な依存性注入メカニズムを持っています.
(想像してみましょう
FooRepository
) //foo.service.ts
@Service()
export class FooService {
@Autowired()
repository: FooRepository;
public getFoo(id: string) {
return this.repository.findOne(id);
}
}
//foo.controller.ts
@Controller('foo')
export class OrderController extends IController {
@Autowired()
fooService: OrderService;
@Get async '{id}' (id: string) {
const foo = this.fooService.getFoo(id);
if(!foo)
return NotFound();
return foo;
}
}
ご覧のように、すべての依存関係が自動的にすべてのアプリケーションコンポーネントに提供されます.現在、ODIサポートは3つの注入方法です
class Pet {
...
}
define(Pet)
.set('default', {
constructorArgs: [...],
props: {...},
type: 'singleton'
})
.set('special', {
constructorArgs: [...],
props: {...},
type: 'scoped'
});
DTO
Webサーバが処理する前にデータを検証するのは一般的なシナリオです.DTOは最適化し、このプロセスを自動化することができます.
@Data()
export class TodoDTO {
@MaxLength(80)
title: string;
@IsOptional()
@MaxLength(255)
desctiption: string;
}
次に、コントローラメソッドの引数としてDTOクラスを追加する必要があります @Controller('todo')
export class TodoController extends IController {
@Autowired()
todoService: TodoService;
@Post async index(payload: TodoDTO) {
...
}
}
そして、それはすべてです!ODIはこの引数で検証されたリクエスト本体を自動的に注入します.バリデーション中にエラーが発生した場合、400個のステータスコードがエラー記述で送信されます.ODIはDTO記述のための広いセットを提供します.そして、ネストしたDTOS、配列、enumsなどをサポートします.
まとめる
それはいくつかの機能の小さな概要だった.もっと興味があればDocs .
カミングスーン
GRPC 積分
リンク
ODI TS / ODI
🌪🌌 スケーラブルで,安全で信頼性の高いエンタープライズアプリケーションを構築するための独創的,宣言的,慣用的枠組み
シンプルで最小のAPIを持つエンタープライズグレード(Web)アプリケーションを作成するためのTypeScriptフレームワークは、ビジネスロジックに焦点を当てることができます.宣言と命令プログラミングに基づいてASP.NET / Spring .
チェックDocs 詳細は
ODIは簡単に移植性とスケーラブルなWebアプリケーションの作成のための機能セットを提供します.
機能概要:
MVCフルタイプのDI/IOT認証ウェブソケットタイプ統合グラフアープSSR今後の更新チェックRoadmap
アイデア、提案や機能のリクエストを得たか.自由に感じるSubmit それ!
🚀 始める
パッケージのインストール
npm install odi --save
メタデータのインストール
npm install reflect-metadata --save
インポートリフレクションメタデータ
index.ts
):import "reflect-metadata";
以下の設定を有効にします
tsconfig.json
"EmpeColoratorMetadata ": true"実験的な装飾子":真
🌪 概要
コントローラ
コントローラは、最小限のスタイルでシンプルで強力なルーティングメカニズムとして機能します.
コントローラ(' foo ')
エクスポートクラスFooControllerはicontroller { }を拡張します.
View on GitHub
Docs
また、我々はサポートを目指してDeno 将来的に.
NESTJSの違い
基本的には、いくつかの一般的なNSTEJ : MVCパターンと宣言的なスタイルがあります.しかし、全体のインフラストラクチャ、デコレータの使用、依存性注入や他の多くのように、多くの違いがあります.違いをまとめる
私の目では、NESTJSはより多くですSpring , しかし、我々のフレームワークは、より多くですASP :)
追伸
最初から、フレームワークはオープンソースとして設計されました.私は本当にあなたのフィードバックが必要、それは私にとって非常に重要です!
京大理
リトルビッグプラネット™2でアップロード私の小さな子猫ナンシー😄😄
Reference
この問題について(ODI - Server - side Framework), 我々は、より多くの情報をここで見つけました https://dev.to/dantsk/odi---server-side-framework-2ep7テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol