7

node.jsは、V8Javascriptエンジンでホストされる「イベント駆動型I/O」サーバー側javascriptであると言われていることを私は知っています。node.jsのWebサイトにアクセスし、ウィキペディアのエントリを読みましたが、それをどこで使用し、どのように役立つかを完全に理解することはできません。「イベント駆動型IO」?「V8Javascriptエンジン」?ただし、状況によっては、「サーバー側」のJavaScriptを少しやり過ぎだと思います。たとえば、node.jsのウィキペディアエントリにあるこのコードを取り上げます。

var http = require('http');

http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n');
}).listen(8000);

console.log('Server running at http://127.0.0.1:8000/');

私は考えていましたが、アプリケーションのフロントエンド部分で実行されるjavascriptファイルを特に提供するサーバーを実行することには本当に重要な目的がありますか?

また、githubでnode.jsリポジトリをフォークして、その動作について詳しく学びました。そのモジュールの一部はC++で記述されていることがわかりました。それで、それは結局のところjavascriptではありませんか?

誰かが私にこれらすべてについて明確な説明をすることができますか?質問が明確でない場合は申し訳ありませんが、私は初心者です。入力/提案をいただければ幸いです。ありがとう

4

3 に答える 3

9

node.jsサーバーは、簡単に言えば、 Apache Webサーバーのようなものに置き換わるものですが、主に、クライアント側ではなくサーバー(V8エンジンによって実行される)で実行されるJavaScriptで記述されています。機能を追加するためにJavaScriptインターフェースでラップされた「ネイティブコード」モジュール(C ++などで記述)で拡張できますが、AFAIKのほとんどのnode.jsモジュールは純粋なJavaScriptです。

「イベント駆動型I/O」は、JavaScriptで使用されている通常の非同期コールバックメカニズムを表す用語です。node.jsでは、あらゆる種類のコールバックを提供し、関連するイベントが発生したときに関数が呼び出されます。

追加するモジュールの数にもよりますが、node.jsサーバーはApacheのようなものに比べて比較的軽量であり、いくつかの点ではるかに単純です。

私が見るnode.jsの2つの主な利点は次のとおりです。

  1. これにより、Webアプリケーションのサーバー側とクライアント側の両方の部分を同じ言語で記述できます。場合によっては、両側で同じコードを使用できます。
  2. これにより、PHPやJavaなどのより一般的なサーバー側言語を習得しなくても、JavaScriptを知っているすべてのWeb開発者がサーバー側コーディングにアクセスできるようになります。

これが私がちょうど出くわした記事で、これもまた光を当てる可能性があります:Node.jsとは何ですか?

于 2011-07-09T04:19:45.733 に答える
3

@sjeが言ったことに多くを追加することはできませんが、彼が共有したブログリンクを繰り返します。これは、nodejsをすばやく説明するために私が見つけた最高のリソースです。

http://radar.oreilly.com/2011/07/what-is-node.html

また、それはOReillyからのものであり、私たちのほとんどが、一般的に市場に出回っているプログラマーのための最高のリファレンスの発行者であることを知っていることにも注意してください;)

私は考えていましたが、アプリケーションのフロントエンド部分で実行されるjavascriptファイルを特に提供するサーバーを実行することには本当に重要な目的がありますか?

これは完全に間違っています。これは、あなたが作ることができるノードについての最も間違った仮定です。Nodeは、 ruby、php、またはasp.netコードが実行されるのと同じように、サーバー上でjavascriptを実行します。ブラウザがjavascriptも実行できるという事実は、ノードとは関係ありません。

確かに、サーバーとクライアント間でモジュールを共有できます(たとえば、フォームデータの検証ルーチン)が、コードベースは、さまざまな目的で使用されるため、概して異なります。

また、githubでnode.jsリポジトリをフォークして、その動作について詳しく学びました。そのモジュールの一部はC++で記述されていることがわかりました。それで、それは結局のところjavascriptではありませんか?

はい、ノードはV8エンジンを使用してJavaScriptを解釈するサーバーです。それは何かで書かれなければなりませ。比較してみましょう。Microsoft.NETコードは主に.NET上に.NETで記述されていますが、実際に機能するメインコードは、マネージを管理するランタイム(ほとんどの人が参照するCLR)です。 -コード、そのコードはCで書かれています。ノードでも同じです。はい、そのほとんどは(あなたが見たように)javascriptで書かれていますが、他のすべてを実行するコアライブラリはCで書かれています。

誰かが私にこれらすべてについて明確な説明をすることができますか?質問が明確でない場合は申し訳ありませんが、私は初心者です。入力/提案をいただければ幸いです。ありがとう

これが部分的にそれをクリアするのに役立ったことを願っています。カバーすることがたくさんあり、evented-io(プロセスとスレッドおよびioアクセスと他の多くのものを理解することを含む)に立ち入ることなく、これはこの質問に対する基本的な高レベルの答えです。流動的なよりランダムな議論のために、必要に応じて、ここのチャットサーバーのnodejsルームにあなたを招待します。https://chat.stackoverflow.com/rooms/642/node-js

あなたが尋ねた最初の質問に関して:

どこに収まりますか?

同じ場所rubyとphpとperlとpythonとasp.netが行います。サーバー上で、クライアントが受信するコードを生成します。

于 2011-07-09T05:28:29.180 に答える
1

私はまだ誰もこれに簡単な答えを与えるのを見たことがありません。

Node.jsは次のとおりです。

  • v8javascriptエンジン
  • イベントループ
  • 特に、v8 IO機能(ネットワークとファイルIOの両方)を提供するいくつかのc++バインディング

重要なのは、Nodeは必ずしもWeb開発にも使用される必要はないということです。その目的は「イベントIO」です。

于 2011-07-09T09:03:23.763 に答える