検索

初心者向けのnode.js

Mar 14, 2025 am 10:33 AM

初心者向けのnode.js

node.jsのイベント駆動型プログラミングは、初心者にとって難しい場合がありますが、これは開始するのが難しいという意味ではありません。この記事では、node.jsの基本を紹介し、なぜそれが人気があるのか​​を説明します。

導入

node.jsを開始するには、まずnode.jsとPHP、Python、Rubyなどの従来のサーバー側スクリプト環境の違いを理解する必要があります。

非同期プログラミング

あなたは非同期プログラミングに精通している可能性があります。ノードの各関数は非同期です。したがって、通常、スレッドをブロックするすべての操作は、約束を使用してバックグラウンドで実行されます。これはノードの最も重要なことです。たとえば、ファイルシステムでファイルを読んでいる場合、非同期関数が使用されます。

ノード関数のバージョンを使用している場合は、約束が表示される前に設計されたコールバック関数を使用します。ほとんどのノード関数にはPromiseが同等のものがあるため、ここで使用されるコールバック関数を約束ベースの等価物に変換し、構文を比較することをお勧めします。

プロセス全体を制御します

ノードを使用すると、自分で多くの仕事をしなければなりません。たとえば、HTTPモジュールは非常に合理化されており、特定のスタイルに固執していません。これは初心者にとって圧倒的かもしれませんが、利点は高性能Webアプリケーションを構築する能力です(ただし、JavaScriptのパフォーマンスは主にV8が最適化されたエンジンに起因しています)。 1つのスクリプトは、すべてのクライアントとのすべての通信を処理します。これにより、アプリケーションが使用するリソースの量が大幅に削減されます。たとえば、簡単なnode.jsアプリケーションコードを次に示します。

 const i、a、b、c、max;
max = 1000000000;
var d = date.now();
for(i = 0; i <max i a="1234" b="1234" c="1234" console.log d><p>これがPHPで書かれた同等のコードです:</p>
<pre class="brush:php;toolbar:false"> $ a = null;
$ b = null;
$ c = null;
$ i = null;
$ max = 100000000;

$ start = microTime(true);

for($ i = 0; $ i <p>それでは、ベンチマークデータを見てみましょう。次の表には、これら2つの簡単なアプリケーションのミリ秒単位での応答時間を示します。</p><pre class="brush:php;toolbar:false"> const http = require( 'http');

HTTP変数。

上記のコードでは、モジュールの名前をエクスポートオブジェクトに渡し、コードのスニペットを公開するプロパティとメソッドを入力します。次のモジュールの例を考えてみましょう。

 exports.area = function(r){
  Math.pi * r ** 2を返します。
};

exports.circumference = function(r){
  2 * math.pi * rを返します。
};

このコードは、エクスポートオブジェクトを作成します。これらの関数は、PIで定義され、外部干渉から完全に保護されているため、モジュールの外部でアクセスできます。したがって、Circuiteference()が常に期待どおりに機能することを保証できます(インポートキーワードの値を提供するだけです):

 // ファイル
"./mymodule.js"からmymoduleをインポートします
//ノードビルトイン/パッケージ「HTTP」からHTTPをインポートする

ブラウザでは、ESMは上記のように、相対ファイルパスでのみ検索できます。ただし、ノードでは、ノード:プレフィックスなしでパスを通過できます。

ただし、以前のメソッドはデフォルトエクスポートに対してのみ機能します。名前付きエクスポートを使用している場合(後で詳細)、わずかに異なる構文を使用する必要があります。

 "./mymodule.js"から{exportone、exporttwo}をimport

コンテンツをエクスポートするには、エクスポートデフォルトのキーワードを使用します。エクスポートは名前付きエクスポートに使用され、エクスポートデフォルトはデフォルトエクスポートに使用されます。名前のエクスポートを使用すると、さまざまなコンテンツをエクスポートし、上記のインポート構文を使用して異なるモジュールでそのうちの1つのみを使用できます。 1つのコンテンツのみをエクスポートする場合、デフォルトでエクスポートしやすくなります。

 //名前export関数exportone(){
    ...
}
export関数exporttwo(){
    ...
}
//デフォルトエクスポートデフォルト関数defaultfunction(){
    ...
}

このチュートリアルの残りの部分では、ESMを使用します。

グローバル範囲

ノードは、GoogleのV8 JavaScriptエンジンで実行されるJavaScript環境です。したがって、クライアント開発で使用するベストプラクティスに従う必要があります。たとえば、何かをグローバルな範囲に入れないでください。ただし、これは必ずしも可能ではありません。ノードのグローバルスコープは(ブラウザのウィンドウ)であり、変数を宣言するときにVARを省略することにより、関数のグローバル変数を簡単に作成できます。

インストール

当然のことながら、アプリケーションを作成して実行する前に、ノードをインストールする必要があります。 WindowsまたはMacOSを使用している場合、インストールは非常に簡単です。 Linuxには、任意のパッケージマネージャーを使用してください。たとえば、APTをサポートする配布を使用している場合は、端末を開き、タイプを開きます。

 sudo apt-getアップデート
sudo apt-getインストールノード

または:

 Sudo Aptitudeの更新
sudo aptitudeインストールノード

node.jsは、SIDリポジトリにあります。

 sudo echo deb https://ftp.us.debian.org/debian/ sid main>/etc/apt/sources.list.d/sid.list

ただし、古いシステムにSIDパッケージをインストールすると、システムが損傷する可能性があることに注意してください。注意して、module_nameを削除してください。

Hello Worldアプリ

もちろん、最初のnode.jsスクリプトは、コンソールに表示されるテキスト「Hello World!」を印刷します。

HTTPサーバー

先に進み、より高度なアプリケーションを持っています。次のコードから始めましょう。コメントを読んでから、以下の説明を読んでください。

 // HTTPモジュールが含まれています。
「http」から{createserver}をインポート

//サーバーを作成します。パラメーターとして渡される関数は、要求が作成されるたびに呼び出されます。
//要求変数はすべての要求パラメーターを保存します//応答変数を使用すると、クライアントに送信された応答に対してアクションを実行できます。
createserver(function(request、response){
    //リスナーをエンドイベントに添付します。
    //このイベントは、クライアントがすべてのデータを送信して応答を待つときに呼び出されます。
    request.on( "end"、function(){
        //ヘッダーを応答に書き込みます。
        // 200はHTTPステータスコードです(このコードは成功を示しています)
        // 2番目のパラメーターはオブジェクトのヘッダーフィールドを保存します
        Response.writehead(200、{
            「コンテンツタイプ」:「テキスト/プレーン」
        });
        //データを送信して応答を終了します。
        Response.End( 'Hello http!');
    });
//ポート8080を聞いてください。
})。聞きます(8080);

このコードは非常に簡単です。 respons.end()を使用して、より多くのデータをクライアントに送信できます。このコードをhttp.jsとして保存し、コンソールに次のコマンドを入力します。

ノードhttp.js

ブラウザを開き、 https://www.php.cn/link/7232a90ea7d391905f9ee07bcc7c5967に移動します。ページにText Hello httpが表示されます。

URLパラメーターを処理します

前述のように、リクエストパラメーターを解析するなど、ノードですべての作業を行う必要があります。ただし、これは非常に簡単です。次のコードを見てください。

 // createServerを含めます
「http」から{createserver}をインポート
//リクエストパラメーターの解析に非常に役立つURLモジュール。
url = require( "url");

//サーバーを作成します。
createserver(function(request、response){
    //リスナーをエンドイベントに添付します。
    request.on( 'end'、function(){
        //パラメーターを要求し、_get変数に保存します。
        //この関数は、リクエストからURLを解析し、オブジェクト表現を返します。
        var _get = url.parse(request.url、true).query;
        //ヘッダーを応答に書き込みます。
        Response.writehead(200、{
            「コンテンツタイプ」:「テキスト/プレーン」
        });
        //データを送信して応答を終了します。
        Response.End( 'ここにあなたのデータがあります:' _get ['data']);
    });
//ポート8080を聞いてください。
})。聞きます(8080);

このコードは、URLのパラメーターを取得するクエリ属性を使用します。このファイルをget.jsとして保存し、次のコマンドで実行します。

 node get.js

次に、データパラメーターに移動しても、スクリプトを中断しません。

ファイルの読み取りと書き込み

ノード内のファイルを管理するには、 FSモジュール(コアモジュール)を使用します。 Fs.WriteFile()メソッドを使用して、それぞれファイルを読み書きします。次のコードの後に​​パラメーターについて説明します。

 // createServerを含める
「http」から{createserver}をインポート
// "fs"からfs関数インポート{readfile、writefile}

// HTTPサーバーを作成します。
createserver(function(request、response){
    //リスナーをエンドイベントに添付します。
    request.on( "end"、function(){
        //ファイルを読み取ります。
        readfile( "test.txt"、 'utf-8'、function(error、data){
            //ヘッダーに書き込みます。
            Response.writehead(200、{
                「コンテンツタイプ」:「テキスト/プレーン」
            });
            //ファイルから取得した番号をインクリメントします。
            data = parseint(data)1;
            //ファイルにインクリメント番号を書き込みます。
            writefile( 'test.txt'、data);
            //いくつかの素敵なメッセージで応答を終了します。
            Response.End( 'このページは「データ」の' time! 'を更新しました);
        });
    });
//ポート8080を聞いてください。
})。聞きます(8080);

これをfiles.jsとして保存します。このスクリプトを実行する前に、 files.jsと同じディレクトリにtest.txtという名前のファイルを作成します。

このコードは、fs.writefile()メソッドを示しています。サーバーがリクエストを受信するたびに、スクリプトはファイルから番号を読み取り、その番号を増やし、新しい番号をファイルに書き込みます。 fs.WriteFile()メソッドは、ファイル名とデータをパラメーターとして受け入れます。また、3番目と4番目の引数(両方ともオプション)を受け入れ、それぞれエンコード関数とコールバック関数を指定します。

次のコマンドでこのスクリプトを実行しましょう。

 node files.js

https://www.php.cn/link/7232a90ea7d391905f9ee07bcc7c5967のブラウザで開き、数回更新します。今、あなたはあなたのコードが2回増加しているように見えるので、あなたのコードにエラーがあると思うかもしれません。これは間違いではありません。このURLが要求されるたびに、2つのリクエストがサーバーに送信されます。最初のリクエストは、 favicon.icoを要求するブラウザによって自動的に発行されます。もちろん、2番目の要求はURL( https://www.php.cn/link/7232a90ea7d391905f9ee07bcc7c7c5967 )です。

この動作が技術的に間違っていなくても、それは私たちが望む行動ではありません。リクエストURLをチェックすることでこれを簡単に修正できます。以下は変更されたコードです。

 // createServerを含める
「http」から{createserver}をインポート
// "fs"からfs関数インポート{readfile、writefile}

// HTTPサーバーを作成します。
createserver(function(request、response){
    //リスナーをエンドイベントに添付します。
    request.on( 'end'、function(){
        //ユーザーがリクエストするかどうかを確認します/
        if(request.url == '/'){
            //ファイルを読み取ります。
            readfile( 'test.txt'、 'utf-8'、function(error、data){
                //ヘッダーに書き込みます。
                Response.writehead(200、{
                    「コンテンツタイプ」:「テキスト/プレーン」
                });
                //ファイルから取得した番号をインクリメントします。
                data = parseint(data)1;
                //ファイルにインクリメント番号を書き込みます。
                writefile( 'test.txt'、data);
                //いくつかの素敵なメッセージで応答を終了します。
                Response.End( 'このページは「データ」の' time! 'を更新しました);
            });
        } それ以外 {
            //要求されたファイルが見つからなかったことを示します。
            Response.Writehead(404);
            //データを送信せずにリクエストを終了します。
            Response.End();
        }
    });
//ポート8080を聞いてください。
})。聞きます(8080);

今、それをテストする必要があります。

MySQLデータベースへのアクセス

ほとんどの従来のサーバー側のテクノロジーには、データベースに接続して照会する方法が組み込まれています。 node.jsを使用すると、ライブラリをインストールする必要があります。このチュートリアルでは、安定して使いやすいノードMysQLを選択しました。このモジュールのフルネームはmysql @ 2.0.0-alpha2 ( @ isバージョン番号の後のすべてのコンテンツ)です。コンソールを開き、スクリプトを保存したディレクトリに移動し、次のコマンドを実行します。

 NPMインストールmysql

これにより、モジュールがダウンロードされ、インストールされ、現在のディレクトリにnode_modulesフォルダーも作成されます。次のコードで使用する方法を見てみましょう。

 // HTTPモジュールを含む、
「http」から{createserver}をインポート
//インストールしたばかりのMySQLモジュール。
「mysql」からmysqlとしてインポート *

//接続を作成します。
//データはデフォルトで新しいMySQLインストールがインストールされ、構成に応じて変更する必要があります。
const connection = mysql.createconnection({
    ユーザー:「ルート」、
    パスワード: ""、
    データベース:「db_name」
});

// HTTPサーバーを作成します。
createserver(function(request、response){
    //リスナーをエンドイベントに添付します。
    request.on( 'end'、function(){
        //データベースを照会します。
        connection.query( 'select * from your_table;'、function(error、rows、fields){
            Response.writehead(200、{
                'Content-Type': 'x-application/json'
            });
            // JSON文字列としてデータを送信します。
            // rows変数クエリの結果を保存します。
            Response.End(json.Stringify(行));
        });
    });
//ポート8080を聞いてください。
})。聞きます(8080);

このライブラリを使用してデータベースをクエリするのは簡単です。実際のアプリケーションでは、エラー(エラーが発生した場合は未定義)を確認し、クエリの成功または障害に基づいて応答コードを送信する必要があります。また、JSONの有効なMIMEタイプであるX-Application/JSONを設定していることに注意してください。 JSON.stringify()メソッドを使用して、行をJSON構造に変換します。

このファイルをmysql.jsとして保存して実行します(mysqlがインストールされている場合):

ノードmysql.js

https://www.php.cn/link/7232a90ea7d391905f9ee07bcc7c5967にブラウザに移動すると、JSONフォーマットファイルをダウンロードするためのプロンプトを受け取る必要があります。

結論は

node.jsには追加の作業が必要ですが、高速で強力なアプリケーションの報酬は価値があります。最低レベルですべての作業を行いたくない場合は、いつでもフレームワーク(Expressなど)を選択して、アプリケーションの開発を簡素化できます。

node.jsは有望な技術であり、高負荷アプリケーションに最適な選択肢です。 Microsoft、eBay、Yahooなどの企業はこれを証明しています。 Webサイトやアプリケーションをホストすることがわからない場合は、安価なVPSソリューションまたはMicrosoft AzureやAmazon EC2などのさまざまなクラウドベースのサービスをいつでも使用できます。どちらのサービスもリーズナブルな価格でスケーラブルな環境を提供します。

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

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

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの未来:傾向と予測PythonとJavaScriptの未来:傾向と予測Apr 27, 2025 am 12:21 AM

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

Python vs. JavaScript:開発環境とツールPython vs. JavaScript:開発環境とツールApr 26, 2025 am 12:09 AM

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

JavaScriptはCで書かれていますか?証拠を調べるJavaScriptはCで書かれていますか?証拠を調べるApr 25, 2025 am 12:15 AM

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptの役割:WebをインタラクティブでダイナミックにするJavaScriptの役割:WebをインタラクティブでダイナミックにするApr 24, 2025 am 12:12 AM

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. 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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

EditPlus 中国語クラック版

EditPlus 中国語クラック版

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SecLists

SecLists

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

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター