検索
ホームページウェブフロントエンドjsチュートリアルNodejs がキャリアとして JavaScript を選択する理由 language_node.js

まず、NodeJS 公式 Web サイトの概要を見てみましょう:

その特徴は次のとおりです:

1. Javascript 実行環境です

2. コード解釈に Chrome V8 エンジンを利用する

3. イベント駆動型

4. ノンブロッキング I/O

5. 軽量でスケーラブルで、リアルタイムのデータ対話アプリケーションに適しています

6. 単一プロセス、単一スレッド

(1)、Nodejs がキャリア言語として JavaScript を選択する理由

実際、作者の Ryan Dahl は Node.js を実装する際に JavaScript を選択せず​​、C と Lua を試しましたが、クロージャや関数型プログラミングなどの一部の高級言語の機能が欠けており、プログラムが複雑になってしまいました。 、メンテナンスが難しい。

JavaScript は関数型プログラミングのパラダイムをサポートする言語であり、Node.js のイベント駆動型プログラミング モデルによく適合します。 Googleが提供するV8エンジンと相まって、JavaScript言語の実行速度が大幅に向上しました。

最終的に私たちに提示されるのは、Node.c、Node.lua、またはその他の言語実装ではなく、Node.js です。

(2)、Node.js は JS アプリケーションではなく、JS 実行プラットフォームです

Node.js という名前を見ると、初心者は Javascript アプリケーションだと誤解するかもしれませんが、実際には Node.js は C 言語で書かれており、JavaScript の実行環境です。

Node.js は Google Chrome ブラウザの V8 エンジンを使用します。これは非常に優れたパフォーマンスを備え、ファイル操作、ネットワーク プログラミングなどの多くのシステムレベル API も提供します。

以下は NodeJS に関係するすべてのモジュールです:

ブラウザ側の Javascript コードは実行時にさまざまなセキュリティ制限を受けるため、お客様のシステムでの動作が制限されます。

対照的に、Node.js は、他の言語で実現できる多くの機能を Javascript に提供する包括的なバックグラウンド ランタイムです。

(3)、Node.jsの特徴

Node.js は設計においても比較的革新的であり、単一プロセス、単一スレッド モードで実行されます (これは Javascript の実行方法と一致します)。

イベント ドリブン メカニズムは、イベント ループ キューを効率的に維持するために、Node.js によって実装されます。これは、大規模な http に直面しても、マルチスレッドのリソース占有やコンテキストの切り替えが存在しないことを意味します。リクエスト、Node.js はイベント駆動型に依存し、すべてを処理します。

従来の言語に慣れている Web サービス開発者は、マルチスレッドの同時実行性とコラボレーションに精通しているかもしれませんが、Node.js に直面した場合、その特性を受け入れて理解する必要があります。

2. 重要な概念

1. イベントループとは何ですか? (非常に重要な概念)

イベントループは、コンピュータシステムの動作メカニズムを指す非常に重要な概念です。

イベント ループを理解したい場合は、プログラムの実行モードから始める必要があります。実行後のプログラムはプロセスと呼ばれます。通常、プロセスは一度に 1 つのタスクしか実行できません。

実行するタスクが多い場合、解決策は 3 つしかありません。

(1)、並びます。プロセスは一度に 1 つのタスクしか実行できないため、前のタスクが完了するまで待ってから、後続のタスクを実行する必要があります。

(2)、新しいプロセスを作成します。 fork コマンドを使用して、タスクごとに新しいプロセスを作成します。

(3)、新しいスレッドを作成します。プロセスが消費するリソースが多すぎるため、今日のプログラムではプロセスに複数のスレッドを含めることができ、それらのスレッドがタスクを完了することがよくあります。

JavaScript 言語を例に挙げます。これはシングルスレッド言語であり、すべてのタスクは 1 つのスレッド上で完了します。つまり、上記の最初の方法が使用されます。大量のタスクや時間のかかるタスクが発生すると、JavaScript を停止できず、ユーザーの動作に応答できないため、Web ページは「一時停止」したように表示されます。

JavaScript はなぜシングルスレッドなのでマルチスレッドとして実装できないのかと疑問に思われるかもしれません。

これは歴史と関係があります:

JavaScript 言語の主な特徴は、シングルスレッドであることです。つまり、一度に 1 つのことしか実行できません。では、なぜ JavaScript は複数のスレッドを持てないのでしょうか?これにより効率が向上します。

JavaScript の単一スレッドはその目的に関連しています。ブラウザーのスクリプト言語としての JavaScript の主な目的は、ユーザーと対話し、DOM を操作することです。これにより、シングルスレッドのみが可能であることが決まります。そうでない場合は、非常に複雑な同期の問題が発生します。

たとえば、JavaScript に同時に 2 つのスレッドがあるとします。1 つのスレッドが特定の DOM ノードにコンテンツを追加し、もう 1 つのスレッドがそのノードを削除するとします。この場合、ブラウザーはどちらのスレッドを使用する必要がありますか?

したがって、複雑さを避けるために、JavaScript は誕生以来シングルスレッドであり、これがこの言語の中心的な機能となっており、今後も変更されることはありません。

マルチコア CPU の計算能力を活用するために、HTML5 は Web Worker 標準を提案しています。これにより、JavaScript スクリプトは複数のスレッドを作成できますが、子スレッドはメインスレッドによって完全に制御され、子スレッドを操作してはなりません。ドム。
したがって、この新しい標準は JavaScript のシングルスレッドの性質を変更しません。

イベントループに戻ります:

シングルスレッドとは、すべてのタスクをキューに入れる必要があり、前のタスクが完了するまで次のタスクは実行されないことを意味します。前のタスクに時間がかかると、次のタスクも待たされることになります。

キューが大量の計算によるもので、CPU がビジー状態である場合は、それを忘れてください。しかし、多くの場合、IO デバイス (入出力デバイス) が非常に遅いため、CPU はアイドル状態になります (Ajax 操作など)。ネットワークからデータを読み取る)、続行する前に結果が出るまで待つ必要があります。

JavaScript 言語の設計者は、現時点では、メインスレッドが IO デバイスを完全に無視し、待機中のタスクを一時停止し、後のタスクを最初に実行できることに気づきました。 IO デバイスが結果を返すまで待ってから、戻って中断されたタスクの実行を続行します。

したがって、すべてのタスクは、同期タスク (synchronous) と非同期タスク (asynchronous) の 2 種類に分類できます。同期タスクとは、メインスレッドで実行するためにキューに入れられたタスクを指します。

後者のタスクのみが実行可能です。非同期タスクとは、メインスレッドには入らず、「タスクキュー」にのみ非同期タスクが実行可能であることをメインスレッドに通知するタスクを指します。タスクは実行のためにメインスレッドに入ります。

以下に示すように:

メインスレッドが空である限り、「タスクキュー」を読み取ります。これが JavaScript の実行メカニズムです。このプロセスは繰り返され続けます。

3. 例の説明

さて、これ以上「ナンセンス」はやめて、最初の NodeJS アプリケーション「Hello Big Bear」を開始しましょう。

お気に入りのエディターを開き、HelloWorld.js ファイルを作成します。

コードは次のとおりです:

コードをコピー コードは次のとおりです。
1 var http = require("http");2 http.createServer (function(request,response){3 response.writeHead(200,{4 "Content-Type" : "text/plain"5 }) ;6 response.write("Hello, Big Bear!") ;7 response.end( ) ;8 }).listen(8888) ;

このコードを実行してテストしてみましょう。まず、Node.js を使用してスクリプトを実行します。

コマンド ライン ツール CMD を開き、作業ディレクトリに切り替えて、コマンド「node HelloWorld.js」を実行します

次に、ブラウザを開いて http://localhost:8888/ にアクセスすると、「Hello, Big Bear!」という Web ページが表示されます。

少し拡張された知識:

以下の図に示すように、これは NodeJS の http.js のソース コードの一部です。createServer は、内部実装がシングルトン モードを採用していることです。インスタンスの初期化タスクは、効果的な分離、専用の責任、結合の削減などであり、プログラミング時に誰もが学ぶことができるアイデアです。

ははは、とても興味深いですね。これは短い体験ですが、後で説明します。O(∩_∩)O はは~

4. 概要

1. Javascript 実行環境です

2. コード解釈に Chrome V8 エンジンを利用する

3. イベント駆動型

4. ノンブロッキング I/O

5. 軽量でスケーラブルで、リアルタイムのデータ対話アプリケーションに適しています

6. 単一プロセス、単一スレッド

最後に言いたいのは、この記事には多くの例はありませんが、これらの概念は非常に重要なので、将来の NodeJS 学習の基礎を築く必要があります。そして一緒に頑張りましょう。

ははは、この記事は終わりましたが、引き続き皆さんとコミュニケーションをとり、一緒に進歩していきたいと思います。 。 。 。 。 。フフフ…(*^_^*)

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

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

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScript:Web言語の汎用性の調査JavaScript:Web言語の汎用性の調査Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール