node.js:高性能のリアルタイムWebアプリケーションを構築するための最新のフレームワーク
node.jsは、現代のWeb開発における重要なフレームワークです。 node.jsを使用すると、JavaScriptをサーバー側とクライアント側の両方でエンドツーエンドを使用できます。このチュートリアルでは、node.jsのインストールを説明し、最初の「Hello World」プログラムを作成する方法を示します。最終的に、node.jsとExpressを使用してWeather APIを構築する方法を学びます。
従来、JavaScriptはWebブラウザーでのみ実行できますが、node.jsは、サーバー側にそれを持ち込むことに関心が高まっているためになりました。
node.jsは、スレッドではなくイベントに基づいているため、他のサーバーテクノロジーとはわずかに異なります。 PHPやその他のCGIスクリプトの提供に使用されるApacheなどのWebサーバーは、着信要求ごとにシステムスレッドを生成するため、スレッドベースです。多くのアプリケーションではこれで十分ですが、多くの長期的な接続(たとえば、インスタントメッセージングアプリケーションなどのリアルタイムアプリケーションの提供に必要な接続)を処理する場合、スレッドベースのモデルはスケーラブルではありません。
「node.jsのすべてのI/O操作は非同期です...」
node.jsは、スレッドの代わりにイベントループを使用し、数百万の同時接続にスケーリングすることができます。これらの操作はメモリ操作よりもはるかに遅いため、サーバーがI/O操作を待機する時間のほとんどを使用します(たとえば、ハードディスクからファイルを読み取り、外部Webサービスにアクセスする、またはファイルのアップロードが完了するのを待つことを利用しています。 Node.jsの各I/O操作は非同期です。つまり、I/O操作が進行中にサーバーが着信要求を処理し続けることができます。 JavaScriptは、匿名の機能と閉鎖を備えているため、イベントベースのプログラミングに最適です。これにより、インラインコールバックの定義が簡単になり、JavaScriptの開発者はこの方法でプログラムする方法をすでに知っています。このイベントベースのモデルは、node.jsを非常に高速にし、リアルタイムアプリケーションのスケーリングを非常に簡単にします。
Node.jsは、Linux、MacOS、Microsoft Windows、Smartos、FreeBSDを正式にサポートしています。 node.jsの最新バージョンをWindows(V16以降)にインストールするには、コンピューターがWindows 8.1、10、または11を実行している必要があります。
Node.jsには、NODEパッケージマネージャー(略してNPM)と呼ばれる独自のパッケージマネージャーが組み込まれています。これにより、NPMレジストリからサードパーティモジュールをインストールできます。
npm -v
を実行してNPMバージョンを表示します。また、プログラムでノードを検索する場合は、node.jsコマンドプロンプトを見つける必要があります。
コマンドプロンプトは、javaScript node.jsコードを入力してコードをすぐに評価し、結果を出力できるREPL(Read-Evaluation-Printループ)を提供します。 JavaScriptを外部ファイルからREPLセッションなどにロードすることもできます。
新しいテクノロジーの学習は、「Hello World!」から始まるので、そのメッセージを提供する簡単なHTTPサーバーを作成します。
まず、新しいnode.jsプロジェクトを作成します。これを行うには、ターミナルを開き、プロジェクトを配置するディレクトリに切り替えて、次のコマンドを実行します。
npm init
ライブラリ名、著者、エントリファイル、ライセンス、バージョンなど、ライブラリに関する情報を提供するように求められます。この手順をスキップするには、以下に示すようにrequire
関数を添付します(内部test.js ):
var util = require( "util");
これにより、出力をターミナルに印刷するなどのシステムレベルのタスクを処理するためのユーティリティ関数が含まれるutil
モジュールがロードされます。モジュールで関数を使用するには、モジュールを保存する変数に呼び出します。この場合、ファイル名をパラメーターとして使用してノードコマンドを使用します。
node test.js
このコマンドを実行すると、コマンドラインに「Hello World!」が出力されます。
HTTPサーバーを作成するには、 http
モジュールを使用する必要があります。
var util = require( "util"); var http = require( "http"); http.createserver(function(req、res){ res.writehead(200、{'content-type': 'text/html'}); res.write( 'hello world!'); res.end(); })。聞きます(8080); util.log( "https:// localhost:8080/"で実行されているサーバー);
このスクリプトは、 http
モジュールをインポートし、HTTPサーバーを作成します。 http.createServer()
に渡された匿名関数は、リクエストを受信すると実行されます。ブラウザにhttp://localhost:8080/
にアクセスすると、 Hello Worldが表示されます! 。
OK、HTTPサーバーを構築しましたが、どのURLにアクセスしても、「Hello World」以外は何も送信されません。 HTTPサーバーは、HTMLファイル、画像、その他のファイルなどの静的ファイルを送信できる必要があります。これは、次のコードがどのように行うかです。
var util = require( "util")、 http = require( "http")、 url = require( "url")、 パス= require( "path")、 fs = require( "fs"); http.createserver(function(request、response){ var uri = path.parse(request.url).base; var filename = path.join(process.cwd()、uri); fs.Access(filename、fs.constants.f_ok、function(err){ if(err){ Response.writehead(404、{"content-type": "text/plain"}); Response.write( "404 not not found \ n"); Response.End(); 戻る; } fs.readfile(filename、 "binary"、function(err、file){ if(err){ Response.writehead(500、{"content-type": "text/plain"}); respons.write(err "\ n"); Response.End(); 戻る; } Response.Writehead(200); Response.write(file、 "binary"); Response.End(); }); }); })。聞きます(8080); util.log( "http:// localhost:8080/"で実行されているサーバー);
まず、コード内のすべてのモジュールを使用する必要があります。これには、要求された受信URLを解析し、アクセスしたファイルのパス名を見つけるhttp
、 path
、およびurl
モジュールが含まれます。 process.cwd()
(または現在の作業ディレクトリ)と要求されたファイルへのパスを使用して、サーバーのハードドライブで実際のファイル名を見つけます。
次に、非同期操作であるファイルが存在するかどうかを確認するため、コールバック関数が必要です。ファイルが存在しない場合、404が見つかっていないメッセージがユーザーに送信され、関数が返されます。それ以外の場合は、 fs.readFile()
を使用してファイルを読み取ります。ブラウザでhttp://localhost:8080/path/to/file
アクセスすると、ファイルがブラウザに表示されます。
静的ファイルサーバーに基づいて、特定の都市の予想される気象条件を取得および表示するnode.jsサーバーを構築します。まず、この例では、 axios
モジュールとexpress
モジュールの2つの追加のサードパーティモジュールが必要です。 Expressは、node.jsアプリケーションにRESTFUL APIを構築するためのWebフレームワークです。 Expressモジュールを使用して、各リクエストから都市を取得し、都市の予測気象条件を含むHTMLボディで対応する単一のAPIエンドポイントを構築します。天気情報は外部APIからのものです。したがって、 axios
クライアントを使用してAPIリクエストを行います。
まず、次のコマンドを同時に使用してexpress
およびaxios
モジュールをインストールします。
npm私は軸を発現します
これにより、NPMレジストリから両方のモジュールがインストールされます。 app.get()
コードを次のコードに置き換えます。
app.get( '/'、(req、res)=> { city = req.query.city; axios.get( `https://api.openweathermap.org/data/2.5/forecast?q=$ {city}&appid = $ {apikey}`) .then((respons)=> { if(respons.status === 200){ res.send(「あなたの街の天気」$ {city}」は<br> $ {respons.data.list [0] .weather [0] .description} `) } }) .catch((err)=> { console.log(err); }) })
まず、 query
プロパティからクエリ文字列(都市)を取得します。
次に、 axios
を使用して、天気予報APIにGETリクエストを発行します。 URLには2つの変数が必要です。予測された都市と、Open Weather API Information Centerで提供されるユニークなAPIキーを取得したいと考えています。
res.send()
メソッドを設定します。エラーが発生した場合、コマンドラインでnode test.js
を実行し、次のURLをブラウザに入力するだけで、エラーデータをコンソールにログに記録できます。
<code>http://localhost:3000/?city=nairobi</code>
ナイロビはお好みの都市に置き換えることができることに注意してください。これがあなたが得るべき結果を紹介します。
node.jsは、高性能リアルタイムアプリケーションの作成を簡素化する非常にエキサイティングなテクノロジーです。あなたがそれの利点を見て、あなた自身のアプリケーションのいくつかでそれを使用できることを願っています。 node.jsには強力なモジュールシステムがあるため、アプリケーションでオープンソースのサードパーティライブラリを使いやすく、データベース接続レイヤー、テンプレートエンジン、メールクライアント、さらにはこのコンテンツをすべて接続するための完全なフレームワークなど、ほとんどすべてのモジュールが利用可能です。
幸せなnode.jsプログラミングをお祈りします!
この記事は更新されており、キングスリー・ウバからの貢献が含まれています。キングスレーは、読者を教育し、刺激するコンテンツを作成することに情熱を傾けています。趣味には、読書、サッカー、サイクリングが含まれます。
以上がnode.jsを使用したサーバー側JavaScriptの学習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。