サーバーの場所
サーバーの場所
Node.jsは、サーバー上で実行されるオープンソースのクロスプラットフォームJavaScriptランタイムです。 2009年のリリース以来、このプラットフォームは非常に人気があり、最近のWeb開発の分野で非常に重要な役割を果たしています。プロジェクトがGitHubで収集した星の数を人気の指標と見なすと、50,000を超える星を持つNode.jsは、非常に人気のあるプロジェクトです。
Node.jsプラットフォームは、GoogleChromeブラウザで使用されるGoogleのV8JavaScriptエンジン上に構築されています。このプラットフォームは主にWebサーバーの作成に使用されますが、その範囲はこれに限定されません。
Node.jsの主な機能を見てみましょう。
速度
Node.jsの主な魅力の1つは、速度です。 Node.jsで実行されるJavaScriptコードは、CやJavaなどのコンパイル言語で記述されたコードの2倍の速度であり、PythonやRubyなどのインタープリター言語よりも数桁高速です。この理由は、プラットフォームのノンブロッキングアーキテクチャであり、具体的な結果は使用するベンチマークによって異なりますが、全体として、Node.jsは非常に高速なプラットフォームです。
シンプルさ
Node.jsプラットフォームは、習得と使用が簡単です。実際、特に他のいくつかのサーバープラットフォームと比較すると、非常に単純です。
JavaScript
JavaScriptはNode.js環境で実行されます。つまり、ブラウザでJavaScriptをすでに使用している何百万ものフロントエンド開発者は、サーバー側の開発に移行するためのまったく新しいツールを習得しなくても、サーバー側とクライアント側の両方のコードを同じプログラミング言語で記述できます。
ブラウザとサーバーは同じ言語の概念を使用します。さらに、Node.jsは、プラットフォームに実装されているため、新しいECMAScript標準にすばやく移行できます。
Node.jsは開発者を完全に制御するサーバー側の環境であるため、ユーザーがこのためにブラウザーを更新するのを待つ必要はありません。その結果、Node.jsのサポートバージョンをインストールすると、新しい言語機能が利用できるようになります。
V8エンジン
Node.jsの中心となるのは、他のソリューションの中でも、GoogleChromeやその他のブラウザーで使用されるGoogleのオープンソースV8JavaScriptエンジンです。これは、Node.jsが、JavaScript Chromeランタイムを信じられないほど高速にした何千人ものエンジニアを活用し、V8の改善に向けて努力を続けていることを意味します。
非同期
従来のプログラミング言語(C、Java、Python、PHP)では、開発者がコードの非同期実行を明示的に処理しない限り、すべての命令がデフォルトでブロックされます。その結果、たとえば、このような環境で、JSONコードをダウンロードするネットワーク要求を行うと、要求が行われたストリームの実行は、応答が受信されて処理されるまで中断されます。
JavaScriptを使用すると、単一のスレッド、コールバック、および開発へのイベント駆動型アプローチを使用して、非同期の非ブロッキングコードを簡単に記述できます。重い操作を実行する必要があるたびに、適切なメカニズムにコールバックを渡します。このメカニズムは、この操作の完了直後に呼び出されます。その結果、プログラムが動作し続けるために、そのような操作の結果を待つ必要はありません。
同様のメカニズムはブラウザで生まれました。たとえば、待つ余裕はありませんAJAXボタンのクリックなどのユーザーアクションに応答できずに終了するように要求します。ユーザーがWebページを操作しやすくするために、ネットワークからのデータのダウンロードとボタンのクリックの処理の両方をすべて、リアルタイムで同時に実行する必要があります。
ボタンクリックイベントハンドラーを作成したことがある場合は、非同期プログラミング手法をすでに使用しています。
非同期メカニズムにより、単一のNode.jsサーバーが、スレッド管理や並列コード実行タスクでプログラマーに負担をかけることなく、数千の接続を同時に処理できます。そのようなことはしばしばエラーの原因になります。
Node.jsは、開発者にノンブロッキングの基本的なI / Oメカニズムを提供します。一般に、Node.jsフレームワークで使用されるライブラリは、ノンブロッキングのパラダイムを使用して記述されています。これにより、ブロッキング動作が標準ではなく例外になります。
Node.jsが、ネットワークからのデータのロード、データベースまたはファイルシステムへのアクセスなど、I / O操作を実行する必要がある場合、そのような操作の結果を待機するメインスレッドをブロックする代わりに、Node.jsはその操作を開始します。実行し、この操作の結果が受信されるまで他のことを続けます。
ライブラリ
npmと呼ばれるNode.jsのパッケージマネージャーを簡単かつ便利に操作できるため、Node.jsエコシステムは繁栄しています。現在、npmレジストリには50万を超えるオープンソースパッケージがあり、Node.js開発者なら誰でも自由に使用できます。
Node.jsプラットフォームの主な機能のいくつかを確認したので、実際に試してみましょう。インストールから始めましょう。
Node.jsのインストール
Node.jsはさまざまな方法でインストールできますが、これについては後で説明します。したがって、すべての主要なプラットフォームの公式インストールパッケージを見つけることができます。
Node.jsをインストールするもう1つの非常に便利な方法は、オペレーティングシステムで提供されているパッケージマネージャーを使用することです。たとえば、この分野の事実上の標準であるmacOSパッケージマネージャーは、Homebrewと呼ばれます。
システムにノードがある場合は、コマンドラインで次のコマンドを実行してNode.jsをインストールできます。
brewインストールノード
LinuxやWindowsを含む他のオペレーティングシステムのパッケージマネージャーのリストは、ここにあります。
人気のあるNode.jsバージョンマネージャーはnvmです。このツールを使用すると、Node.jsのさまざまなバージョンを簡単に切り替えることができます。たとえば、新しいバージョンのNode.jsをインストールして試してから、必要に応じて古いバージョンに戻すことができます。 Nvmは、古いバージョンのNode.jsでコードをテストする必要がある状況でも役立ちます。
初心者が公式のNode.jsインストーラーを使用する場合。 macOSユーザーの場合、Homebrewを使用してNode.jsをインストールすることをお勧めします。 Node.jsをインストールしたので、「HelloWorld」を作成します。
最初のNode.jsアプリケーション
最初のNode.jsアプリケーションの最も一般的な例は、単純なWebサーバーです。そのコードは次のとおりです。
const http = require( 'http')
const hostname = '127.0.0.1'
constポート= 3000
const server = http.createServer((req、res)=> {
res.statusCode = 200
res.setHeader( 'Content-Type'、 'text / plain')
res.end( 'Hello World \ n')
})
server.listen(port、hostname、()=> {
console.log( `サーバーはhttp:// $ {hostname}:$ {port} /`で実行されています)
})
このコードを実行するには、ファイルserver.jsに保存し、ターミナルで次のコマンドを実行します。
ノードserver.js
サーバーを確認するには、ブラウザを開き、アドレスバーhttp://127.0.0.1:3000、つまり、正常に起動した後にコンソールに表示されるサーバーアドレスを入力します。すべてが正常に機能する場合、ページには「HelloWorld」と表示されます。
この例を見てみましょう。
まず、コードにHTTPモジュールを接続するコマンドが含まれていることに注意してください。
Node.jsプラットフォームには、ネットワークを操作するための十分に開発されたメカニズムを含む、優れた標準モジュールセットがあります。
createServer()objectメソッドhttpは、新しいHTTPサーバーを作成して返します。
サーバーは、特定のホストの特定のポートでリッスンするように構成されています。サーバーの準備が整うと、対応するコールバックが呼び出され、サーバーが実行中であることが通知されます。
サーバーがリクエストを受信すると、2つのオブジェクトを提供するイベントが発生します。 1つ目はリクエスト(req、http.IncomingMessageオブジェクト)、2つ目はレスポンス(res、http.ServerResponseオブジェクト)です。これらは、HTTPリクエストを処理するための最も重要なメカニズムです。
1つ目は、リクエストに関する情報を提供します。この簡単な例では、このデータを使用しませんが、必要に応じて、オブジェクトを使用して、reqyouはリクエストヘッダーとそれに渡されるデータにアクセスできます。
2つ目は、リクエストへの応答を作成して送信するために必要です。
この場合、リクエストへの応答は次のようになります。まず、プロパティステータスコードを値200に設定します。これは、操作が成功したことを示します。
res.statusCode = 200
次に、タイトルContent-Typeを設定します。
res.setHeader( 'Content-Type'、 'text / plain')
次に、その内容を引数としてメソッドend()に追加することにより、応答の準備を完了します。
res.end( 'Hello World \ n')
Node.jsプラットフォームの周りに強力なエコシステムが形成されていることはすでに述べました。次に、Node.jsの一般的なフレームワークとヘルパーツールについて説明します。
Node.jsのフレームワークとヘルパーツール
Node.jsは低レベルのプラットフォームです。その開発を簡素化し、プログラマーの生活を楽にするために、膨大な数のライブラリーが作成されました。それらのいくつかは、時間の経過とともに非常に人気があります。これは、よくできていて、調べる価値があると思うライブラリの小さなリストです。
Express:このライブラリは、Webサーバーを構築するための非常にシンプルで強力なツールを開発者に提供します。 Expressの成功の鍵は、「ワンストップ」サーバーアーキテクチャのビジョンを課そうとせずに、最小限のアプローチと基本的なサーバー側メカニズムに焦点を当てることでした。
流星:これは、JavaScriptアプリケーションを開発し、クライアントとサーバーの両方でコードを使用するために同形のアプローチを採用する強力なフルスタックフレームワークです。 Meteorは、開発者が必要とするすべてのものを含むスタンドアロンツールでした。また、React、Vue、Angularなどのフロントエンドライブラリとも統合されるようになりました。 Meteorは、一般的なWebアプリケーションの開発に加えて、モバイル開発にも使用できます。
コア:このWebフレームワークは、Expressの背後にある同じチームによって構築されています。 Expressでの長年の経験に基づいて、シンプルさとコンパクトさを重視して開発されました。このプロジェクトは、コミュニティを分割する可能性のある他のフレームワークメカニズムと互換性のないExpressに大きな変更を加えるという問題の解決策として生まれました。
Next.js:このフレームワークは、Reactアプリケーションのサーバー側レンダリングを整理するように設計されています。
マイクロ:非同期HTTPマイクロサービスを構築するための非常に軽量なライブラリです。
Socket.io。リアルタイムネットワークアプリケーションを開発するためのライブラリです。
実際、Node.jsエコシステムでは、ほとんどすべてのタスクのヘルパーライブラリを見つけることができます。ご想像のとおり、このようなエコシステムを構築するには多くの時間がかかります。 Node.jsプラットフォームは2009年に登場しました。その存在の間に、このプラットフォームを学びたいプログラマーが知っておくべき多くのことが起こりました。
Node.jsの簡単な歴史
Node.jsは今年9歳です。もちろん、この年齢を、すでに23歳であるJavaScriptの年齢、またはMosaicの出現から数えてわかるように、Webの25歳と比較するとそれほど多くはありません。ブラウザ。
9年はテクノロジーにとって短い時間ですが、今ではNode.jsプラットフォームが常に存在していたようです。
プラットフォームの初期バージョンのNode.jsは、2年しか経っていませんでした。それでも、Node.jsに関する情報はそれほど多くなかったにもかかわらず、Node.jsは非常に深刻であるとすでに感じることができました。
それでは、Node.jsの背後にあるテクノロジーについて説明し、このプラットフォームに関連する主な開発.
つまり、JavaScriptは、NetscapeNavigatorブラウザでWebページを操作するためのスクリプト言語としてNetscapeで作成されたプログラミング言語です。
Netscapeのビジネスの一部は、NetscapeLiveWireと呼ばれる環境を含むWebサーバーの販売でした。サーバーサイドJavaScriptを使用して動的なWebページを作成できました。
サーバーサイド開発にJSを使用するという考えは、Node.jsよりもはるかに古いものです。このアイデアはJavaScript自体とほぼ同じくらい古いものですが、問題の時点では、サーバー側のJSは一般的ではありませんでした。
Node.jsプラットフォームが非常に広く普及した主な要因の1つは、それが最初に登場したときです。そのため、数年前、JavaScriptは深刻な言語と見なされ始めていました。これは、GoogleマップやGmailなどのWeb 2.0アプリケーションのおかげで起こりました。これは、最新のWebテクノロジーの力を世界に示しました。
今日まで続いているブラウザの競争戦争のおかげで、JavaScriptエンジンのパフォーマンスは大幅に向上しました。主要なブラウザの背後にある開発チームは、ソリューションのパフォーマンスを改善するために毎日取り組んでいます。これは、JavaScript全般に有益な効果をもたらします。
そのようなエンジンの1つは、Chromeブラウザーで使用され、Node.jsで使用される前述のV8です。これは、ブラウザ開発者が高性能のJavaScriptコードを求めて努力した結果の1つです。
もちろん、Node.jsの人気は、幸運な偶然だけでなく、プラットフォームが適切なタイミングで誕生したという事実に基づいています。彼女は、サーバーサイドJavaScript開発への革新的なアプローチを世界に紹介しました。 Node.jsの歴史における主要なマイルストーンを見てみましょう。
2009
Node.jsの登場
最初のnpmバリアントを作成します。
2010
Expressの登場。
Socket.ioの登場。
2011
Npm1.0リリース。
LinkedInやUberなどの大企業がNode.jsの使用を開始しました。
2012
Node.jsの人気の急上昇。
2013
Node.jsを使用した出版物の最初の主要なプラットフォームであるGhostの登場。
コアリリース。
2014
今年は劇的なイベントが発生しました。 Node.jsのフォークであるIO.jsプロジェクトが登場しました。その目的は、とりわけ、ES6サポートを導入し、プラットフォームの開発を加速することでした。
2015
Node.jsFoundationが設立されました。
IO.jsとNode.jsをマージします。
npmでは、プライベートモジュールを操作できるようになります。
Node.js 4を生成します(プラットフォームのバージョン1、2、および3はそうではなかったことに注意してください)。
2016
左パッドパッケージインシデント。
糸の出現。
Node.js6リリース。
2017
Npmはセキュリティにもっと注意を払い始めています。
Node.js8リリース
HTTP / 2のサポートの出現。
V8は、ChromeだけでなくNode用にも設計されたJSエンジンとして公式に認められています。
毎週30億npmのダウンロードがあります。
2018
Node.js10リリース。
ESモジュールのサポート。
実験的なmjsのサポート。