node.jsの紹介

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-02-14 08:51:10
オリジナル
837 人が閲覧しました

An Introduction to Node.js

node.jsのことを聞いたことがありますが、それが何であるかわからず、開発プロセスにどのように適合するかわかりませんか?または、ノードの賞賛を聞いたことがあるかもしれませんが、今ではそれを学ぶ必要があるのではないかと思います。たぶん、あなたは他のバックエンドテクノロジーに精通しており、ノード間の違いを理解したいと思うかもしれません。これがあなたのように聞こえるなら、読み続けてください。この記事では、初心者向けの高レベルの観点からNode.jsとその主な例を調べます。ノードの主なユースケースと、ノードの現在のランドスケープを見て、途中でさまざまな出発点(さらに読むため)を提供します。 記事全体で、「ノード」と「node.js」を交互に使用することに注意してください。

キーポイント

  • node.jsは、ブラウザではなくサーバー側でJavaScriptを実行できるようにするChromeのV8 JavaScriptエンジンに構築されたJavaScriptランタイムです。
  • バージョンマネージャーを使用してnode.jsをより効率的にインストールします。これにより、異なるノードバージョン間を簡単に切り替えることができ、NPMが遭遇する一般的な許可問題を回避できます。
  • ブロッキング、イベント駆動型のアーキテクチャのため、node.jsは、チャットサービスやリアルタイムドキュメント編集などのリアルタイムアプリケーションでうまく機能し、ユーザーインタラクションがすぐに回答を受信する環境に適しています。
  • NodeのNPM(ノードパッケージマネージャー)は、世界最大のソフトウェアレジストリとして機能し、最新のJavaScript開発に必要なパッケージのインストールを簡素化します。
  • node.jsの主な利点は汎用性と効率性であり、サーバー上のJavaScriptを使用してコンテキストスイッチングを削減することで生産性を向上させ、非ブロッキング機能により複数の接続を同時に処理できます。

node.jsとは何ですか?

インターネットには多くの定義があります。いくつかの一般的な定義を見てみましょう。プロジェクトのホームページには次のとおりです。

Stack Overflowは次のとおりです。

まあ、「イベントベース」、「ノンブロッキング」、「非同期I/O」 - 一度に多くの情報を消化するのは難しいです。それでは、これらの2つの説明で言及されている別の詳細、つまりV8 JavaScriptエンジンに焦点を当てて、別の視点からこれに対処しましょう。

Google Chromeに基づいた

node v8 JavaScriptエンジン

V8エンジンは、Google ChromeやBrave、Opera、Vivaldiなどの他のクロムベースのWebブラウザーで実行されるオープンソースのJavaScriptエンジンです。パフォーマンスを念頭に置いて設計されており、コンピューターが実行できるネイティブマシンコードにJavaScriptを直接コンパイルする責任があります。ただし、ノードがV8エンジン上に構築されていると言うと、ノードプログラムがブラウザで実行されていると言っているわけではありません。彼らはそうではありません。代わりに、ノードの作成者(Ryan Dahl)はV8エンジンを採用し、ファイルシステムAPI、HTTPライブラリ、および多くのオペレーティングシステム関連のユーティリティアプローチなどのさまざまな機能で強化しました。これは、node.jsがコンピューターでJavaScriptを実行するために使用できるプログラムであることを意味します。言い換えれば、それはJavaScriptランタイムです。

node.jsをインストールする方法は?

このセクションでは、ノードをインストールし、いくつかの簡単なプログラムを書き込みます。また、ノードにバンドルされたパッケージマネージャーであるNPMについても学びます。

ノードバイナリファイルとバージョンマネージャー

多くのWebサイトでは、ノードの公式ダウンロードページにアクセスし、システムに適したノードバイナリファイルを取得することをお勧めします。これは機能しますが、代わりにバージョンマネージャーを使用することをお勧めします。これは、複数のバージョンのノードをインストールし、自由にそれらを切り替えることができるプログラムです。バージョンマネージャーを使用することには多くの利点があります。たとえば、ノードとNPMを使用するときに発生する可能性のある許可の問題を排除し、各プロジェクトにノードバージョンを設定できるようにします。バージョンマネージャーを使用する場合は、nvmを使用してnode.jsの複数のバージョンをインストールするクイックヒントを参照してください。それ以外の場合は、上記のリンクからシステムに適した正しいバイナリファイルを取得し、それらをインストールします。

「こんにちは、世界!」

端末を開いてノード-Vを入力することにより、システムにノードがインストールされているかどうかを確認できます。すべてがうまくいけば、v12.14.1のようなものが表示される必要があります。これは、執筆時点でのLTSの現在のバージョンです。次に、hello.jsという名前の新しいファイルを作成し、次のコードをコピーします。

これにより、ノードの内蔵コンソールモジュールを使用して、端末ウィンドウにメッセージを表示します。この例を実行するには、次のコマンドを入力してください:

console.log("Hello, World!");
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

node.jsが正しく構成されている場合、「こんにちは!」が表示されます。

node hello.js
ログイン後にコピー
ログイン後にコピー
node.jsは、最新のJavaScript

に優れたサポートを提供します この互換性表に示されているように、ノードはECMAScript 2015(ES6)以降の優れたサポートを提供します。 1つのランタイム(V8エンジンの特定のバージョン)のみをターゲットにしているため、最新および最も近代的な構文を使用してJavaScriptを作成できることを意味します。これはまた、通常、互換性の問題を心配する必要がないことを意味します。別のブラウザで実行されるJavaScriptを書いている場合、これに遭遇します。これを説明するために、タグテンプレートリテラル、オブジェクト解体、array.prototype.flatmap():

など、いくつかの最新のJavaScript機能を使用する2番目のプログラムを次に示します。
console.log("Hello, World!");
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
このコードをindex.jsという名前のファイルに保存し、コマンドノードindex.jsを使用して端末から実行します。 Brendan EichがJavaScriptの作成者であることがわかります。

npmの紹介、javascriptパッケージマネージャー 前述のように、NODEにはNPMというパッケージマネージャーが付属しています。システムにインストールされているバージョンを確認するには、NPM -Vと入力してください。 JavaScriptパッケージマネージャーであることに加えて、NPMは世界最大のソフトウェア登録センターでもあります。ダウンロード可能な1,000,000を超えるJavaScriptコードパッケージがあり、週に数十億のダウンロードがあります。 NPMを使用してパッケージをインストールする方法を簡単に見てみましょう。

グローバルインストールパッケージ

端末を開き、次のように入力してください

これにより、システムにjshintパッケージがグローバルにインストールされます。これを使用して、前の例でindex.jsファイルを並べることができます:

node hello.js
ログイン後にコピー
ログイン後にコピー

ES6関連の多くのエラーが表示されるようになりました。それらを修正する場合は、 / * jshint esversion:6 * / index.jsファイルの上部に追加すると、コマンドを再実行し、Lintが渡す必要があります。 Lintを確認する場合は、JavaScript Lintツールの比較を参照してください。

function upcase(strings, ...values) {
  return values.map(name => name[0].toUpperCase() + name.slice(1))
    .join(' ') + strings[2];
}

const person = {
  first: 'brendan',
  last: 'eich',
  age: 56,
  position: 'CEO of Brave Software',
};

const { first, last } = person;
const emoticon = [ ['┌', '('], ['˘', '⌣'], ['˘', ')', 'ʃ'] ];

console.log(
  upcase`${first} ${last} is the creator of JavaScript! ` + emoticon.flat().join('')
);
ログイン後にコピー
ローカルインストールパッケージ

システムにグローバルではなく、プロジェクトにパッケージをローカルにインストールすることもできます。テストフォルダーを作成し、そのディレクトリで端末を開きます。次のタイプ次は次のとおりです。

これにより、同じフォルダー内のpackage.jsonファイルが作成され、自動的に入力されます。次に、NPMを使用してLodashパッケージをインストールし、プロジェクトの依存関係として保存します。

test.jsという名前のファイルを作成し、以下を追加します。
npm install -g jshint
ログイン後にコピー

最後に、node test.jsを使用してスクリプトを実行します。 [1、2、3]端子への出力が表示されます。

jshint index.js
ログイン後にコピー
package.jsonファイルを使用

>

テストディレクトリの内容を見ると、node_modulesというフォルダーに気付くでしょう。これは、NPMがLodashとLodashが依存しているライブラリを保存する場所です。 node_modulesフォルダーはバージョン制御でチェックされるべきではありません。実際、プロジェクトのルートでNPMインストールを実行することでいつでも再作成できます。 package.jsonファイルを開くと、依存関係のフィールドにlodashがリストされています。このようにプロジェクトの依存関係を指定することにより、任意の開発者がプロ​​ジェクトをクローンでクローン化し、NPMインストールで必要なすべてのパッケージを実行できるようにすることができます。 NPMの詳細については、記事NPM初心者ガイド - ノードパッケージマネージャーを必ずお読みください。
npm init -y
ログイン後にコピー

node.jsは何に使用されますか?

ノードとNPMが何であり、それらをインストールする方法を既に知っているので、それらの一般的な用途の1つに注意を向けることができます:(NPM経由)のインストール(ノード経由で)さまざまなビルドツールを実行する - 最新のJavaScriptアプリケーションの開発プロセスを自動化します。これらのビルドツールは非常に多様であるため、現代のJavaScript環境では、遭遇せずに行き過ぎることはできません。 JavaScriptファイルや依存関係のバンドルから静的資産まで、ランニングテスト、または自動コードの糸くずとスタイルのチェックまで、あらゆるものに使用できます。ビルディングツールを説明するために、SetePointに多くの記事があります。これが私のお気に入りの記事のいくつかを紹介します:

  • Webpack初心者のガイド
  • ESLINTを始めましょう - プラグ可能なJavaScript Lint Tool
  • gulp.jsはじめに
  • MochaとChaiを使用してJavaScript
  • をユニットテストします

ReactやAngularなどの最新のJavaScriptフレームワークを使用してアプリケーションの開発を開始する場合は、ノードとNPM(またはYARN)の実用的な知識が必要です。これは、これらのフレームワークを実行するためにノードバックエンドが必要だからではありません。あなたはそれを必要としません。これは、これらのフレームワーク(および多くの関連するパッケージ)がNPMを通じて利用可能であり、ノードに依存して合理的な開発環境を作成して実行できるためです。最新のJavaScriptアプリケーションでノードがどのような役割を果たすかを理解することに興味がある場合は、最新のJavaScriptアプリケーションの分析をお読みください。

node.jsを使用すると、サーバーでjavascriptを実行できます

次に、node.jsの最大のユースケースの1つを見てみましょう - サーバーでJavaScriptを実行します。これは新しい概念ではなく、1994年にNetscapeによって最初に試されました。ただし、node.jsは、実際のアピールを獲得する最初の実装であり、従来の言語よりもいくつかのユニークな利点を提供します。 Nodeは現在、多くの有名企業のテクノロジースタックで重要な役割を果たしています。これらの利点が何であるか見てみましょう。

node.js実行モデル

非常に簡単に言えば、従来のサーバー(Apacheなど)に接続すると、リクエストを処理する新しいスレッドが生成されます。 PHPやRubyなどの言語では、その後のI/O操作(たとえば、データベースとの対話)は、操作が完了するまでコードの実行をブロックします。つまり、結果の処理を続ける前に、サーバーはデータベース検索が完了するのを待つ必要があります。この期間中に新しいリクエストが発生した場合、サーバーはそれらを処理するための新しいスレッドを生成します。多数のスレッドがシステムを遅くする可能性があるため、これは非効率的です。最悪の場合、ウェブサイトはダウンします。より多くの接続をサポートする最も一般的な方法は、より多くのサーバーを追加することです。

ただし、node.jsはシングルスレッドです。また、イベント駆動型です。つまり、ノードで起こることはすべてイベントに対する反応です。たとえば、新しいリクエストが(イベント)に登場すると、サーバーは処理を開始します。その後、ブロッキングI/O操作に遭遇した場合、操作が完了するのを待つのではなく、次のイベントに進む前にコールバックを登録します。 I/O操作が完了すると(別のイベント)、サーバーはコールバックを実行し、元のリクエストの処理を継続します。バックグラウンドでは、NodeはLibuvライブラリを使用して、この非同期(つまり、非ブロッキング)動作を実装しています。ノードの実行モデルにより、サーバーがオーバーヘッドがほとんどなくなるため、多数の同時接続を処理できます。ノードアプリケーションをスケーリングする従来の方法は、それをクローンし、クローンされたインスタンスにワークロードを共有させることです。 node.jsには、単一のサーバーにクローンポリシーを実装するのに役立つモジュールが組み込まれています。次の図は、ノードの実行モデルについて説明しています。

An Introduction to Node.js

出典:クリスチャン・マデラゾ教授とジェームズ・サントス教授によるnode.jsの紹介< または、ビデオが好きなら、この素晴らしいスピーチをチェックしてください。イベントループとは正確には何ですか?それはノードに固有のものではありませんが、概念を非常によく説明しています。

不利な点はありますか?

ノードが単一のスレッドで実行されるという事実は、いくつかの制限をもたらします。たとえば、ブロックI/Oコールを避け、CPU集約型操作をワーカースレッドに引き渡す必要があり、プロセス全体のクラッシュを避けるためにエラーを常に正しく処理する必要があります。一部の開発者は、JavaScriptによって課されるコールバックベースのコーディングスタイルも好まない(そのため、非同期JavaScriptを書くことの恐怖に特化したWebサイトもあります)。しかし、ネイティブの約束の到着に伴い、Asyncが待ち望んでいたため、最新のJavaScriptのプロセス制御はこれまで以上に簡単です。

「こんにちは、世界!」

「こんにちは、世界!」を簡単に見てみましょう

console.log("Hello, World!");
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
このコードを実行するには、コードをhellowld-server.jsという名前のファイルにコピーし、node hellowld-server.jsで実行します。ブラウザを開き、

https://www.php.cn/link/4a914e5c38172ae9b61780ffbd0b2ff90「hello、world!」それでは、コードを見てみましょう。最初に、ノードのネイティブHTTPモジュールが必要です。次に、そのcreateServerメソッドを使用して新しいWebサーバーオブジェクトを作成し、匿名関数を渡します。この関数は、サーバーに確立された新しい接続ごとに呼び出されます。匿名関数は、2つのパラメーター(リクエストと応答)で呼び出されます。これらには、200個のHTTPステータスコードと「Hello World!」メッセージを送信するために使用するユーザーからのリクエストと応答が含まれています。最後に、ポート3000で着信リクエストを聞くようにサーバーに指示し、ターミナルにメッセージを出力して、実行中のことを知らせます。明らかに、ノード内のシンプルなサーバーを作成するか、さらにはエラーを正しく処理することが非常に重要です)。もっと知りたい場合は、ドキュメントを確認するか、チュートリアルを確認することをお勧めします。

node.jsに適したアプリケーションはどのようなアプリケーションですか?

ノードは、リアルタイムの相互作用やコラボレーションの何らかの形で必要なアプリケーションを構築するのに特に適しています。たとえば、チャットサイトやコードシェアなどのアプリケーションで、他の人がリアルタイムでドキュメントを編集するのを見ることができます。また、多くのI/O駆動型の要求(データベースの操作を必要とするリクエストなど)を処理するAPIを構築したり、データフローを含むWebサイトを処理したりするのにも適しています。ノードは、まだアップロード中にファイルを処理できるためです。ノードのこのリアルタイムの側面があなたがもっと知りたいものである場合は、ライブチャットアプリケーションの構築に関するチュートリアルをご覧ください。ただし、誰もが次のTrelloや次のGoogleドキュメントを構築するわけではなく、実際、ノードを使用して単純なCRUDアプリケーションを構築できない理由はありません。ただし、このルートに従うと、ノードが非常に基本的であり、アプリケーションを構築および整理する方法が主にあなた次第であることがすぐにわかります。さまざまなフレームワークを使用して、Expressがリーダーとしての地位を確立しているボイラープレートコードを削減できます。ただし、Expressのようなソリューションでさえ最小限です。つまり、少し珍しいことをしたい場合は、NPMから他のモジュールを導入する必要があります。これは、RailsやLaravelなどのフレームワークとはまったく対照的で、箱から出して多くの機能を提供します。基本的で従来のアプリケーションの構築方法を学びたい場合は、node.js MVCアプリケーションの構築と整理方法に関するチュートリアルをご覧ください。

node.jsの利点は何ですか?

速度とスケーラビリティは別として、WebサーバーとブラウザでJavaScriptを使用することのよく言及された利点は、脳がモードを切り替える必要がなくなったことです。開発者と同じ言語ですべての作業を行うことができます。これにより、より効率的になります(そしてできれば幸せになります)。たとえば、サーバーとクライアントの間でコードを簡単に共有できます。ノードのもう1つの重要な利点は、JSONを使用することです。 JSONはおそらくWeb上の最も重要なデータ交換形式であり、MongoDBなどのオブジェクトデータベースと対話するための共通言語でもあります。 JSONはJavaScriptプログラムに最適です。つまり、ノードを使用する場合、データは再フォーマットなしでレイヤー間でスムーズに流れることを意味します。ブラウザからサーバー、データベースに構文を使用できます。最後に、JavaScriptはどこにでもあります。私たちのほとんどはJavaScriptに精通しているか、ある時点でそれを使用しています。これは、ノード開発への移行が他のサーバー側の言語に移行するよりも簡単になる可能性があることを意味します。彼のノード対PHPショーダウンでクレイグ・バックラーを引用するために、JavaScriptはおそらく世界で最も誤解されている言語ですが、概念がクリックされると、他の言語が不器用に見えます。

ノードのその他の使用

サーバーで停止しません。 node.jsには、他にも多くのエキサイティングで多様な用途があります!たとえば、Scripting言語として使用して、PCで繰り返し発生しやすいタスクやエラーが発生しやすいタスクを自動的に実行できます。また、新しいプロジェクトを構築するためにこのヨーマンスタイルのジェネレーターなど、独自のコマンドラインツールを作成するためにも使用できます。 node.jsは、クロスプラットフォームのデスクトップアプリケーションを構築したり、独自のボットを作成するためにも使用できます。他に何が好きではありませんか?

結論

javascriptはどこにでもあり、ノードは巨大で広範なトピックでもあります。それにもかかわらず、この記事では、Node.jsとその主な例に関する初心者向けの高度な視点を提供してくれたことを願っています。また、以前に見た定義を読み直すと、物事がより意味があることを願っています。

node.jsは、GoogleのV8 JavaScriptエンジンとLibuvライブラリを使用するイベントベースの非ブロッキング、非同期I/Oランタイムです。

質問やコメントがある場合は、Twitterでお気軽にご連絡ください。

Node.js

についての

faqs

node.jsとjavascriptの違いは何ですか?

JavaScriptは、主にクライアント側のWeb開発に使用されるプログラミング言語です。ブラウザで実行される言語です。一方、node.jsは、JavaScriptがサーバー側で実行できるようにするランタイム環境です。 ChromeのV8 JavaScriptエンジンの上に構築されています。 node.jsは、JavaScriptの機能を拡張して、I/O APIと対話し、ネットワーク機能を実行し、データベースにアクセスできるようにします。これは、通常ブラウザーベースのJavaScriptで使用できません。

なぜnode.jsがサーバー側のプログラミングで非常に人気があるのですか?

node.jsは、イベント駆動型のアーキテクチャではないため、サーバー側のプログラミングで非常に人気があります。これは、ネットワークリクエストやデータベース操作などのタスクが完了することなく、複数のクライアントリクエストを同時に処理できることを意味します。これにより、node.jsは、チャットアプリケーション、コラボレーションツール、ゲームサーバーなどのリアルタイムアプリケーションに効率的かつ適しています。

同時リクエストを処理する方法は?

node.jsは、イベント駆動型の非ブロッキングI/Oモデルを使用して、同時リクエストを処理します。リクエストが行われると、node.jsがアクションを実行し、以前のアクションが完了するのを待たずに次のリクエストに進みます。操作が完了すると、イベントがトリガーされ、対応するコールバック関数が実行されます。これにより、node.jsは単一のサーバーを使用して数千の同時接続を処理できます。

node.jsはフロントエンド開発に使用できますか?

node.jsは主にサーバー側の開発に使用されていますが、フロントエンド開発にも使用できます。 Node.jsは、強力なフロントエンドアプリケーションを構築するために、Express.jsやSocket.ioなどのツールとフレームワークを提供します。さらに、Node.jsは、最新のフロントエンド開発に不可欠なBabelやWebpackなどのビルドツールを実行するために使用されます。

node.jsにおけるNPMの役割は何ですか?

npmまたはノードパッケージマネージャーは、node.js開発に不可欠なツールです。これは、開発者がnode.jsアプリケーションで必要なさまざまなライブラリと依存関係をインストール、更新、および管理できるようにするパッケージマネージャーです。 NPMは、開発者がコードの共有と再利用を容易にする大規模なオープンソースパッケージリポジトリを提供します。

node.jsは、PHPやRuby on Railsなどの他のサーバー側のテクノロジーとどのように比較されますか?

node.jsは、いくつかの方法でPHPやRubyのRubyとは異なります。同期PHPやRuby on Railsとは異なり、node.jsは非同期および非ブロッキングであり、複数のリクエストを同時に処理できます。これにより、node.jsはより効率的でリアルタイムアプリケーションに適しています。さらに、node.jsは、多くの開発者がよく知っている言語であるJavaScriptを使用して、学習曲線を減らします。

node.jsのいくつかのユースケースは何ですか?

node.jsにはさまざまな機能があり、さまざまなアプリケーションで使用できます。特に、スケーラブルなWebアプリケーション、チャットアプリケーションやゲームサーバーなどのリアルタイムアプリケーション、コラボレーションツール、APIサーバーの構築に適しています。 Netflix、LinkedIn、Uberなどの企業は、効率的かつ高速であるため、テクノロジースタックでnode.jsを使用しています。

node.jsを使用することの課題は何ですか?

node.jsは多くの利点を提供しますが、いくつかの課題にも直面しています。その非同期の非ブロッキングの性質は、コードを理解してデバッグするのを難しくすることができます。さらに、node.jsはシングルスレッドであるため、CPU集約型タスクはサーバー全体をブロックしてパフォーマンスに影響します。ただし、これらの課題は、優れたコーディングプラクティスとツールとライブラリの適切な使用で軽減できます。

node.jsのエラーを処理する方法は?

node.jsは、最初のエラーコールバックを介してエラーを処理します。これは、コールバック関数に渡された最初のパラメーターがエラーオブジェクトであることを意味します。非同期操作中にエラーが発生した場合、コールバック関数の最初のパラメーターとして渡されます。エラーが発生しない場合、このパラメーターはnullになります。

node.jsはデータベースで使用できますか?

はい、node.jsは、SQLやNOSQLデータベースを含むさまざまなタイプのデータベースと対話できます。 SQLデータベースの後遺症やMongoDBのMongooseなど、いくつかのライブラリとORM(オブジェクトリレーショナルマッピング)が利用可能です。これにより、node.jsアプリケーションのデータベースとの対話が容易になります。

すべての画像形式は.jpgまたは.webpのままです。

以上がnode.jsの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート