フロントエンドの開発者にとって、node.jsのマスタリングは依然として貴重なスキルです。 Denoはサーバー側のJavaScriptの代替品を提供していますが、Node.jsの広範なエコシステムはその継続的な関連性を保証します。この記事では、ブラウザベースのJavaScriptに精通しており、node.jsを使用してサーバー側の開発を検討したいと考えています。 Node.jsとNPM初心者にとって、Smashing MagazineのJamie Corkhillの「Getering of Node」は素晴らしいリソースです。
ブラウザJavaScriptは、多くの場合、非同期コードを最小限に使用します(たとえば、API呼び出しのためにfetch
)。ただし、node.jsは、ほとんど常に非同期プログラミングが必要です。非同期コールバックに依存しているシングルスレッドイベントループは、その設計の基本です。この非同期ファーストアプローチは、node.jsの成功にとって重要でしたが、同期コーディングに慣れている人々に学習曲線を提示します。
node.jsの概念を説明するためのシンプルなクイズアプリを構築しましょう。より完全なバージョンはGitHubで利用できます。このアプリは、クイズ、質問、回答用のテーブルを備えたSQLiteデータベースを使用しています。各質問には複数の答えがあり、そのうちの1つだけが正しいです。 SQLiteにはブールタイプがありません。 falseには0、Trueには1を使用します。
まず、NPMを初期化し、 sqlite3
パッケージをインストールします。
npm init -y npmインストールsqlite3
ES6モジュールを有効にするには、 "type":"module"
をpackage.json
に追加します。 migrate.js
を作成して、データベーステーブルを設定します。
// migrate.js 「sqlite3」からsqlite3をインポートします。 db = new sqlite3.database( "quiz.db"); db.serialize(function(){ // ...(データベーススキーマの作成と初期データ挿入)... }); db.close();
このスクリプトはテーブルを作成し、サンプルデータを入力します。 node migrate.js
で実行します。
データベースを照会しましょう。 index.js
では、 sqlite3
をインポートし、データベースオブジェクトを作成し、 get
関数を使用します。
// index.js 「sqlite3」からsqlite3をインポートします。 db = new sqlite3.database( "quiz.db"); db.get( `select * from quiz where quizid = 0`、(err、row)=> { if(err){ console.error(err.message); } console.log(row); db.close(); });
これにより、クイズデータがコンソールに印刷されます。
IDでクイズを取得するための関数getQuiz(id)
を作成しましょう。非同期実行により、コールバック内から結果を単に返すことは間違っています。
//不正 - これを避けてください! 関数getquiz(id){ // ...(コールバック付きのデータベースクエリ)... 返品結果; //結果は未定義になります! }
正しいアプローチでは、コールバックを使用して非同期結果を処理します。
関数getquiz(id、callback){ // ...(データベースクエリ、結果を伴うコールバックを呼び出す)... } getquiz(0、(quiz)=> { console.log(quiz); });
複数の非同期呼び出しをチェックすると、「コールバックヘル」につながります。約束はよりクリーンなソリューションを提供します:
関数get(params){ // ...(約束にラップされたデータベースクエリ)... } get({table: "Answer"、column: "AnswerId"、value:2}) 。それから(...) 。それから(...) 。それから(...) 。キャッチ(...);
Async/awaingは、非同期コードをさらに簡素化し、同期コードに似ています。
async関数printquizfromanswer(){ const回答= await get({table: "Answer"、column: "AnswerId"、value:2}); // ...(同様に後続の呼び出しを待っています)... } printquizfromanswer();
トップレベルの待望(最近のnode.jsバージョンで利用可能)により、さらに簡潔なコードが可能になります。
効率のために、SQL結合を使用して、単一のクエリで関連データを取得します。
function quizfromanswer(AssensId、callback){ // ...(sql queryを結合して回答、質問、クイズのデータを取得します)... }
これにより、データベース呼び出しの数が減ります。
node.jsは、データベースインタラクション、ファイルシステムアクセス、HTTPサーバーなどの新しいAPIを導入します。 package.json
ファイルやエラーファーストコールバックを含むnode.jsの規則を理解することが重要です。 CommonJSモジュールとESモジュールの違いも注意が必要です。
node.jsサーバー側の開発は、エラーが個々のユーザーに影響を与えることが多いクライアント側のJavaScriptとは異なり、例外とセキュリティの脆弱性を注意深く処理する必要があります。
node.jsは、フロントエンド開発者がサーバー側の開発のためにJavaScriptスキルを活用できるようにします。非同期性は学習曲線を提示しますが、同時性と広大なエコシステムの利点はそれを強力なツールにします。非同期JavaScriptの概念、node.js API、およびセキュリティベストプラクティスに慣れてください。
以上がノードJavaScriptをブラウザのJavaScriptと比較しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。