9 2024年のベストJavaScriptとTypeScript orms
ライブラリ、および次のJavaScriptプロジェクトで使用を検討する必要がある理由を簡単に説明します。また、プロジェクト開発者およびメンテナンスワーカーとしてのニーズに基づいて、最高のJavaScriptおよびTypeScript ORMライブラリを評価するお手伝いをします。
次の各ツールを見ていきます。knex.js:sql query builder
- 続編
- 本棚
- ウォーターライン
- deploction.js
- mongoose
- typegoose
- typeorm
- mikroom
- prisma
- オブジェクトリレーションシップマップ
オブジェクトリレーショナルマッピングは複雑に見えるかもしれませんが、その目的はプログラマとしての生活を楽にすることです。データベースからデータを取得するには、クエリを記述する必要があります。しかし、これはあなたがSQLを学ばなければならないことを意味しますか?いいえ、オブジェクトリレーショナルマッピングを使用すると、選択した言語でクエリを書くことができます。
オブジェクトリレーショナルマッピングは、データベースクエリの結果をエンティティクラスインスタンスに変換する手法です。エンティティは、データベーステーブルのオブジェクトラッパーにすぎません。データベーステーブル列にマッピングされたプロパティが含まれています。エンティティインスタンスには、CRUD操作を実行し、検証やデータ暗号化などのカスタムロジックを含む他の機能をサポートする方法があります。
小さなプロジェクトを構築している場合は、ORMライブラリをインストールする必要はありません。 SQLステートメントを使用してアプリケーションを駆動するだけで十分です。 ORMは、数百のデータベーステーブルからデータを取得する中型および大規模プロジェクトにとって非常に有益です。この場合、アプリケーションのデータレイヤーを一貫した予測可能な方法で操作および維持できるフレームワークが必要です。
エンティティクラスは、ビジネスルールを実装するために使用されるロジックをカプセル化するように設計されているため、ビジネスアプリケーションのビルディングブロックです。ビジネスルールは、自動化されたプロセスがビジネスポリシーの範囲内でのみ実行されることを保証するために定義されます。ビジネスルールの例は次のとおりです
顧客割引
- ローンの承認
- 販売委員会
- 配送と税の計算
- ormライブラリ
マッパー
)を指します。これは、オブジェクト関係の作業をマッピングします。ビジネスルールでは、通常、複数のSQLステートメントのバッチ実行が必要です。単一のSQLステートメントが失敗した場合、データベースを一貫性のない状態にしておくことがあります。ほとんどのORMライブラリは、トランザクションと呼ばれる機能をサポートしており、このようなイベントが発生するのを防ぎます。このトランザクションコンテキストでSQLステートメントが実行されない場合、そのバッチで正常に実行された他のすべてのSQLステートメントは、ロールバックと呼ばれる操作によって非表示になります。 したがって、ORMライブラリを使用してデータレイヤーを構築すると、データベースが常に一貫していることを確認することができます。 ORMライブラリには通常、次のようなより基本的な関数が含まれています。
- クエリビルダー
- 移行スクリプト ボイラープレートコードを生成するためのCLIツール
- テストデータを使用した事前充填テーブルの sow関数
- この記事では、各ORMライブラリが次のことをどのように行うかについてのコードのスニペットを提供します。
初期設定と構成
- 基本的なCRUD操作
- 高度なクエリ操作
- 起動日、ユーザー数、ドキュメントリンク、利用可能なサポートチャネルなどの重要な情報も含まれています。また、意思決定を行う際に慎重に重量を量る必要があるというクエリのパフォーマンス、ライブラリのメンテナンス、および建築哲学に関連する最も重要な問題についても説明します。
評価を開始する前に、まずknex.jsを見てみましょう。knex.jsは、ここにリストされている多くのORMライブラリと統合された人気のSQLクエリビルダーです。 KNEX.JSは非常に柔軟であり、一般に、クエリビルダーの独自の組み込み実装を持つ一部のORMライブラリよりも優れています。 knex.jsをその基礎として使用するORMライブラリを選択する際の利点と考えてください。
knex.js:sql query builder
開始:2012年12月
- ウェブサイト
- github:158.6kユーザー
- データベース:Postgres、MSSQL、MySQL、Mariadb、SQLite3、Oracle、およびAmazon Redshift
- knex.jsは現在、node.jsおよびブラウザーで実行できる最も成熟したJavaScript SQLクエリビルダーです(Webpackまたはbrowserify経由)。手動で記述されたSQLステートメントと同じ高性能SQLクエリを生成できます。
これは、クエリを形成するためにリンクしてリンクできる一連の関数を提供するAPIにすぎません。例は次のとおりです。
これは質問を請います、なぜ元のSQLステートメントを書く代わりにクエリビルダーを使用する必要があるのですか? 4つの理由を説明します:
<code>knex({ a: 'table', b: 'table' }) .select({ aTitle: 'a.title', bTitle: 'b.title' }) .whereRaw('?? = ??', ['a.column_1', 'b.column_2']) SQL 输出: select `a`.`title` as `aTitle`, `b`.`title` as `bTitle` from `table` as `a`, `table` as `b` where `a`.`column_1` = `b`.`column_2` </code>
データベースのSQL方言からコードを抽象化するのに役立ち、切り替えを容易にします。
- アプリケーションに対するSQLインジェクション攻撃の可能性を排除または大幅に減らします。
- 動的条件のクエリを簡単に構築できます。
- データベース開発操作を実行するための他の機能やCLIツールがあります。
- これらの関数には次のものが含まれます
コールバックとプロミスインターフェイス
- ストリームインターフェイス
- トランザクションサポート
- モードサポート
- 移行
- 種子を播種
- アプリケーションにインストールするには、knex.jsパッケージと使用しているデータベースのドライバーをインストールする必要があります。
- これはセットアップコードの例です。
これは基本的なクエリの例です
<code>$ npm install knex --save # 然后添加以下一个(添加 --save)标志: $ npm install pg $ npm install sqlite3 $ npm install mysql $ npm install mysql2 $ npm install oracledb $ npm install mssql </code>
生のSQLステートメントもサポートしています。複雑なクエリの例は次のとおりです
<code>const knex = require('knex')({ client: 'mysql', connection: { host : '127.0.0.1', user : 'your_database_user', password : 'your_database_password', database : 'myapp_test' } }); knex.schema.createTable('users', function (table) { table.increments(); table.string('name'); table.timestamps(); }) 输出: create table `users` (`id` int unsigned not null auto_increment primary key, `name` varchar(255), `created_at` datetime, `updated_at` datetime) </code>
<code>knex({ a: 'table', b: 'table' }) .select({ aTitle: 'a.title', bTitle: 'b.title' }) .whereRaw('?? = ??', ['a.column_1', 'b.column_2']) SQL 输出: select `a`.`title` as `aTitle`, `b`.`title` as `bTitle` from `table` as `a`, `table` as `b` where `a`.`column_1` = `b`.`column_2` </code>
上記のタイプスクリプトの例では、knex.jsはほぼORMとして機能します。ただし、エンティティオブジェクトインスタンスは作成されません。代わりに、インターフェイス定義を使用して、タイプセーフプロパティを備えたJavaScriptオブジェクトを作成します。
この記事にリストされているORMライブラリの多くは、バックグラウンドでknex.jsを使用していることに注意してください。これらには次のものが含まれます
- 本棚
- deploction.js
- mikroom
javascript ormライブラリ
このカテゴリでは、ここにリストされているすべてのライブラリはjavascriptに記載されており、node.jsで直接実行できます。タイプスクリプトサポートは、組み込みタイプまたは @タイプ/ノード定義パッケージを介して提供されます。 TypeScriptプロジェクトの最大のサポートが必要な場合は、TypeScript ORMライブラリセクションにスキップする必要があります。
データアクセスレイヤーでは、2つの一般的なアーキテクチャパターンが使用されます。
データマッパー
- アクティビティレコード
- データマッパーパターンを使用すると、エンティティクラスは純粋で、プロパティのみが含まれています。 CRUD運用とビジネスルールは、リポジトリと呼ばれるコンテナに実装されています。例は次のとおりです。
CRUDオペレーションとビジネスルールのロジックは、アクティブレコードモードを使用してエンティティクラスで実装されています。上記を説明する同様の例があります:
<code>$ npm install knex --save # 然后添加以下一个(添加 --save)标志: $ npm install pg $ npm install sqlite3 $ npm install mysql $ npm install mysql2 $ npm install oracledb $ npm install mssql </code>
今すぐ注意を払い始めましょう。
<code>const knex = require('knex')({ client: 'mysql', connection: { host : '127.0.0.1', user : 'your_database_user', password : 'your_database_password', database : 'myapp_test' } }); knex.schema.createTable('users', function (table) { table.increments(); table.string('name'); table.timestamps(); }) 输出: create table `users` (`id` int unsigned not null auto_increment primary key, `name` varchar(255), `created_at` datetime, `updated_at` datetime) </code>
続編
開始:2010年7月
ウェブサイト
- github:726kユーザー
- slack
- データベース:Postgres、mysql、mariadb、sqlite、およびmicrosoft sql server
- Sequelizeは、非常に成熟した人気のあるnode.js ormライブラリで、よく説明されたコードの例を備えた優れたドキュメントを備えています。以前のライブラリで言及したデータレイヤー機能の多くをサポートしています。 Bookshelfとは異なり、knex.jsと同様に演奏する独自のクエリビルダーがあります。
- ライブラリのインストールは非常にシンプルで、データベースドライバーも非常に直接的です:
以下は、セットアップコードとCRUDおよび基本的なクエリステートメントの例です。
以下は、複雑なクエリの書き方の例です。
<code>knex('users').where({ first_name: 'Test', last_name: 'User' }).select('id') 输出: select `id` from `users` where `first_name` = 'Test' and `last_name` = 'User' </code>
最後の複雑なクエリの例では、SQL出力は次のとおりです。
<code>const subcolumn = knex.raw('select avg(salary) from employee where dept_no = e.dept_no') .wrap('(', ') avg_sal_dept'); knex.select('e.lastname', 'e.salary', subcolumn) .from('employee as e') .whereRaw('dept_no = e.dept_no') 输出: select `e`.`lastname`, `e`.`salary`, (select avg(salary) from employee where dept_no = e.dept_no) avg_sal_dept from `employee` as `e` where dept_no = e.dept_no </code>
<code>import { Knex, knex } from 'knex' interface User { id: number; age: number; name: string; active: boolean; departmentId: number; } const config: Knex.Config = { client: 'sqlite3', connection: { filename: './data.db', }, }; const knexInstance = knex(config); try { const users = await knex<user>('users').select('id', 'age'); } catch (err) { // 错误处理 } </user></code>
残りの部分は、入力テキストに似ています。同じ方法で擬似原産性を実行できます。 スペースの制限により、この場所は拡張されません。 画像形式は同じままであることに注意してください。
以上が9 2024年のベストJavaScriptとTypeScript ormsの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。
