Node.js入門ガイド(サーバーサイドJavaScript)
Node.js - 簡単に言えば - は サーバーサイドJavaScript. 最近は多くの話題を呼んでいます。あなたがそれについて聞いたことがあるか、あなたがそれを学び、それを手に入れることに興味があるなら - この投稿はあなたのためです.
それでは、サーバーでJavaScriptを使用することの正確さは何ですか? Node.jsの概念を明確にするために、私はそれをPHPのような通常のサーバーサイド言語と比較したいと思います。 Node.jsは イベントベースのサーバ実行手順 PHPのマルチスレッド実行ではなく.
それをさらに説明するために、私達はの考えについて話します。 Node.jsとは何ですか いくつかと一緒に ホスティングプロバイダの提案とインストールのヒント. JavaScript、jQuery、およびAjaxの中級レベルの知識が必要ですが、全体の内容を理解しやすくするための例も提供しますので、Node.jsについて詳しく学んでください。!
ケースを考えましょう。
低速の別のWebサーバーから動的にコンテンツをロードする必要があるWebサイトを考えてください。 PHPでは、2つの方法でそれを行うことができます - 単純なファイルにコーディングする そして 別のスクリプトとしてコーディングする, それから マルチスレッドアプローチで実行する.
最初の方法では、コードは単純ですが 実行はしばらく一時停止します 遅いWebサーバーにアクセスした時点で。 2番目の方法は パフォーマンスの場合はより最適化されています しかし、コーディングが難しく、マルチスレッド管理のオーバーヘッドがあります。このケースは、サーバーサイドJavaScript以外のほとんどのWebプログラミング言語、つまりNode.jsでも同様です。.
Node.jsの違いは何ですか? Node.jsを理解するためには、 ブラウザでのJavaScriptのイベントベースのプログラミング. ここでも同じ技術を利用しています。別のスレッドを使用する代わりに、 関数は終了イベントに添付されています の “Webサーバーへのアクセスが遅い” 上記のように、したがってあなたは得る 全機能 上記の最適化された2番目のオプションでは、マルチスレッドのオーバーヘッドは発生しません。.
Node.jsを始めよう
Node.jsはJavaScriptです。. クライアントでJavaScriptのイベントベースの機能をサーバーに利用できないのはなぜですか?この考えはNode.jsの開発につながったかもしれません.
とはいえ、Node.jsの主なハイライト - イベントベースの非同期関数です. それを使用します イベントループ I / O操作(外部Webサービスへのアクセス、ハードウェアへのアクセス)を待つ代わりに.
Node.jsはまだできます その処理能力を利用する サーバーが他の操作を待っているとき。これはNode.jsになります スケーラブル 何百万もの同時接続数.
JavaScriptはどのようにサーバー上で動作しますか?
Node.jsはv8環境で動作します - それはです 仮想マシン または JavaScriptエンジン それはJavaScriptコードを実行するので、ホスティングのためにあなたは普通のウェブホストを使うことができません。あなたは持っているものが必要になります v8環境.
以下はNode.jsホスティングに関するプロバイダの提案です。
- クラウドファウンドリ
- クラウドノード
- DotCloud
- デュオスタック
Node.jsのインストール
ノード意志 Linux、Macintosh、およびSolarisオペレーティングシステム上で完全に動作します。. Windowsでは、Cygwinエミュレーションレイヤーを使ってインストールできます。 Windowsでのビルドはどれも満足のいくものではありませんが、それでも何かを実行することは可能です.
オプション1:ソースからノードを構築.
つかいます 作る
node.jsをビルドしてインストールする(コマンドラインで次のコマンドを実行する). Gitが必要です.
git clone --depth 1 git://github.com/joyent/node.git cd node gitチェックアウトv0.4.11 export JOBS = 2 mkdir〜/ local ./configure --prefix = $ HOME / local / node make make install echo 'export PATH = $ HOME / local / node / bin:$ PATH' >>〜/ .profile echo 'export NODE_PATH = $ HOME / local / node:$ HOME / local / node / lib / node_modules' >>〜/ .profileのソース〜/ .profile
オプション2:パッケージからのNode.jsのインストール
Macユーザーの場合、Node.jsをhttps://sites.google.com/site/nodejsmacosx/からパッケージとしてインストールできます。.
ノードインストールのテスト
Nodeのインストールが成功したことを確認するために、とても簡単なコンソール「Hello World」プログラムを試すことができます。 "という名前のファイルを作成しますtest.js「そして次のコードを書きます。.
var sys = require( "sys"); sys.puts( "Hello World");
コードの説明
それをロードします sys
変数へのクラス sys
. それはそれから使用します sys
コンソールタスクを実行するためのオブジェクト。の sys.puts
に似たコマンドです。 カウト
C ++では、上記のスクリプトを実行するには、コマンドプロンプトに移動して、次のコマンドで実行します。
ノードtest.js
インストールが成功すると、画面にHello Worldの出力が表示されます。.
HTTPサーバーを作成する
今度はNode.jsを使ってWebサーバー経由で "Hello World"を作成しましょう。これが私たちがやろうとしていることです - 私たちは を出力するサーバーを作成します。 “こんにちは世界” ポート8080上のローカルホストへ URLが何であっても イベント です.
コード:
var sys = require( "sys")、my_http = require( "http"); my_http.createServer(関数(要求、応答)sys.puts( "私は蹴られた"); response.writeHeader(200、"Content-Type": "text / plain"); response.write( "Hello World "); response.end();)。listen(8080); sys.puts( "8080でサーバーが稼働しています");
コードの説明
Node.jsで最も興味深い部分は、そのイベントベースのプログラミングです。 HTTPサーバーを作成するには、 HTTPライブラリ, それで、先に進んで、それを使ってそれを追加 my_http
. 関数によってサーバを作成します。
my_http.createServer(機能(要求、応答))。listen(8080);
最初の引数として与えられた関数が実行されます ポート8080でイベントが発生するたびに, だから機能自体 ノードがポート8080でイベントをlistenすることを提案します。. これを検出するために、私は追加しました “蹴られた” 要求が受信されるたびにコンソール画面に表示されるメッセージ.
の 要求
オブジェクトが含む サーバーに対して行われた要求に関するすべての情報. たとえば、URL文字列が含まれています。の 応答
objectはそのオブジェクトです サーバーからの応答を処理します. まず、レスポンスのヘッダを テキスト/プレーン
内容、そして出力 “こんにちは世界“, その後、出力ストリームを終了します. 200 状況応答です.
さて、上記のものは非常に単純な例ですが、ブラウザで同じサーバーのURLを指定しても、同じ出力が得られることがわかります。 “こんにちは世界”.
単純な静的ファイルサーバーを作成する
次のチュートリアルで簡単な静的ファイルサーバーを作成しましょう.
コード:
var sys = require( "sys")、my_http = require( "http")、path = require( "path")、url = require( "url")、filesys = require( "fs"); my_http.createServer(関数(要求、応答)var my_path = url.parse(request.url).pathname; var full_path = path.join(process.cwd()、my_path); path.exists(full_path、function(exists) )if(!が存在する)response.writeHeader(404、"Content-Type": "text / plain"); response.write( "404が見つかりません\ n"); response.end(); else filesys.readFile(full_path、 "binary"、function(err、file)if(err)response.writeHeader(500、"Content-Type": "text / plain")); response.write(err + "\ n"); response.end(); else response.writeHeader(200); response.write(file、 "binary"); response.end();););)。聞く(8080)。 sys.puts( "8080でサーバーが稼働しています");
コードの説明
上記のコードは非常に単純です。ブロックとして説明します。.
var sys = require( "sys")、my_http = require( "http")、path = require( "path")、url = require( "url")、filesys = require( "fs");
これらのライブラリはすべてプログラムに必要です。その使用法は次のコードで明らかになります.
var my_path = url.parse(request.url).pathname; var full_path = path.join(process.cwd()、my_path);
の 要求
先ほど説明したとおり、objectには要求の詳細があります。私達は使用します 解析する
取得するために含めたURLクラスの機能 パス名
リクエストURLのパス名を取得した後、ファイルのフルパスを取得するために現在の作業ディレクトリのパスと連結します。.
URLに参加するために私達はと呼ばれる機能があります 参加する
パスライブラリ内.
path.exists(full_path、function(exists)
フルパスを取得した後、パスが関数によって存在するかどうかを確認します。 存在する
. チェックが完了した後、コールバック関数が呼び出され、2番目の引数として渡されます.
if(!exists)response.writeHeader(404、"Content-Type": "text / plain"); response.write( "404見つかりませんでした\ n"); response.end(); else filesys.readFile(full_path、 "binary"、function(err、file)if(err)response.writeHeader(500、"Content-Type": "text / plain"); response.write() err + "\ n"); response.end(); else response.writeHeader(200); response.write(file、 "binary"); response.end(););
ファイルが存在しない場合は、コールバック関数内で "404ページが見つかりません"エラー.
ページが見つかった場合は、次のようにしてファイルを読みます。 readFile
ファイルシステムの機能。のコールバック関数も見られます。 readFile
そこに関数が定義されています。ファイルの読み込みにエラーがなければ、それが表示されます。エラーがあると、ステータス500がエラーテキストと共に返されます。.
また、前回のチュートリアルのコードを関数にラップして、次回のチュートリアルや将来の使用に使えるようにすることをお勧めします。.
var sys = require( "sys")、my_http = require( "http")、path = require( "path")、url = require( "url")、filesys = require( "fs"); my_http.createServer(関数(要求、応答)var my_path = url.parse(request.url).pathname; var full_path = path.join(process.cwd()、my_path); path.exists(full_path、function(exists) )if(!が存在する)response.writeHeader(404、"Content-Type": "text / plain"); response.write( "404が見つかりません\ n"); response.end(); else filesys.readFile(full_path、 "binary"、function(err、file)if(err)response.writeHeader(500、"Content-Type": "text / plain")); response.write(err + "\ n"); response.end(); else response.writeHeader(200); response.write(file、 "binary"); response.end(););); my_http。 createServer(関数(要求、応答)var my_path = url.parse(request.url).pathname; load_file(my_path、response);)。listen(8080); sys.puts( "8080でサーバーが実行されている");
乞うご期待 !
それで全部です。これがNode.jsの良いアイデアになることを願っています。次の記事では、その方法を説明します。 Node.jsを使ってFacebookのお気に入りの数をロードして表示する. 乞うご期待!
編集者注: この投稿はによって書かれています ジオポール Hongkiat.comのために。 Geoは独立したWeb / iPhone開発者で、PHP、Codeigniter、WordPress、jQuery、およびAjaxを扱うことを楽しんでいます。彼は4年間のPHP経験と2年間のiniPhoneアプリケーション開発経験を持っています。.