web-dev-qa-db-ja.com

nodeJSがV8エンジン上に構築されているとはどういう意味ですか?

私はMEANスタックの初心者ですが、NodeJSを勉強しているときに、次のようなステートメントを思いついたのです。

Node.jsは、GoogleChromeのJavaScriptV8エンジン上に構築された非常に強力なJavaScriptベースのフレームワーク/プラットフォームです。

しかし、それは正確にはどういう意味ですか

googleChromeのJavaScriptV8エンジン上に構築されています。

また、ChromeのJS V8エンジンで構築されている場合、Firefoxでも機能するのはなぜですか?

14
James LeBorn

MEANスタック、後ろから前に再編成:

  • MongoDB:データの永続性、後で取得するためにデータを保存します
  • Node.js:Webアプリケーションサーバー、クライアントからの要求に応答します
  • Express:Webアプリケーションフレームワーク、削減Node定型文
  • Angular.js:ブラウザフレームワーク

したがって、Node.jsは「Firefoxでは機能しません」(Googleでは機能しませんChrome):サーバーサイドテクノロジーです。Python/ Ruby /の代わりと考えてください。その役割のJava。したがって、クライアントのすべての種類(Google ChromeやFirefoxなど)からの要求に応答できます/応答しません。

「BuildedonV8」の意味は、GoogleChromeと同じJavaScriptインタープリター/ジャストインタイムコンパイラーを使用することです。しかし、chromeとの類似点はほとんどそこで止まります:Nodeにはレンダリングエンジン/ cssパーサー/ DOMはありませんが、HTTPのようなサーバーに必要なものはありますライブラリとファイルシステムAPI。

また、私は違法ではないことを意味します。私たちは皆、あなたがいるところから始めました。あなたが質問をしているという事実(これも悪いことではありません!)は、MEANのようなスタック上に構築することが頭上にあることを意味します。ドキュメントは、あなたが知らないように見えることをあなたが知っていることを前提としています。 I 強くデータベースとフレームワークを組み合わせる前に、JavaScriptとNodeいくつかのチュートリアルとベアボーンテストアプリを通じて、理解を深めることをお勧めします。

20
Jared Smith

プログラミング言語をコンピュータで実行するには、マシンが理解できる形式に変換する必要があります(一般に マシンコード と呼ばれます)。 Javascriptも例外ではありません。ブラウザにWebサイトでJavascriptコードが表示されている場合、何かをコンパイルするか、Javascriptの場合は命令をマシンコードに解釈する必要があります。

V8は、まさにそれを行うためにGoogleによって開発されたプログラムです。 Chromeを使用し、ページでJavascriptを検出すると、それをV8に渡してコンパイルを実行し、コンピューターが結果のコードを実行します。

V8はGoogleによってオープンソース化されました。 Nodeの作成者であるRyanDahlは、V8をChromeの外部で、LinuxやMacOSなどのオペレーティングシステムの内部で使用できるようにソースコードを変更しました。これが最初の引用の意味です。

ここで重要なのは、Nodeプログラムをブラウザで実行するのではなく、実際に使用しているコンピュータで実行することです。V8とFirefox、Safari、IEなどの間に相関関係はありません。 。これらのブラウザはすべて、独自のJavascriptインタープリターを備えています。

7
ccnixon

さて、これを乗り越えましょう:

Node.jsは、GoogleChromeのJavaScriptV8エンジン上に構築された非常に強力なJavaScriptベースのフレームワーク/プラットフォームです。

JavaScriptは、インターネットブラウザで使用されるプログラミング言語です。 1995年にNetScapeによって発明され[〜#〜] ecma [〜]という認証機関に提出されたと思います。 #〜] 1996年。

ECMAはJavaScriptの元のアイデアを採用し、ECMAScriptと呼ばれる標準を作成しました。これは各JavaScript実装が従う必要があります。ご覧のとおり、JavaScriptはエーテルのどこかに存在する言語ではありません-各インターネットブラウザには独自の言語の実装が付属しています-つまり、JavaScriptは通常Mozilla、Safariなどのインターネットブラウザでのみ機能しますOperaまたはChromeなど。 (Internet ExplorerにもECMAScriptの実装が付属していますが、ライセンス上の理由からJScriptと呼ばれています)

Google Chromeに付属するJavaScriptの実装は、C++と呼ばれる言語で記述された強力なV8エンジンで実行されます。 V8はJavaScriptコードを解釈し、すべての変数タイプを提供し、メモリなどを管理します。V8の優れている点は、オープンソースであり、他のC++プログラムに埋め込むことができることです。

したがって、Nodeの作成者は、V8を採用し、サーバーがWebサイトにサービスを提供するために必要な機能(ファイルの読み取り、要求への応答、ルーティングなど。これは、コードを解釈し、基本的にそれをC++に変換し、その後のマシンコードに変換するNode.jsアプリケーションのおかげで、JavaScriptを使用してWebサイトのサーバー側実装をプログラムできるようになったことを意味します。 重要な違いは、Node.jsはブラウザで実行されないことです! PHPとApacheを使用してバックエンドをコーディングする場合と同じように、サーバー上で実行されます。

5
PeterTheLobster

意味なし NodeJSとして言うことはあります "Firefoxでは動作しません"または "Chromeでは動作します"。

これはサーバーサイドスクリプトテクノロジーであり、ブラウザとはまったく関係ありません。

まず、以下の用語について基本的な知識を持ってみましょう。

  • Ecma International-テクノロジーの標準を作成する組織。
  • ECMA-262-これはEcmaInternationalによって発行された標準です。汎用仕様が含まれています
    スクリプト言語、例:Javascript。
  • ECMAScript-汎用スクリプト言語を作成するためにECMA-262で定義された仕様。

  • Javascript-ECMAScript仕様に準拠する汎用スクリプト言語の1つ。


ECMAScriptエンジンは、ECMAScript言語標準のバージョンで記述されたソースコードを実行するプログラムですたとえば、JavaScript。

これらは、Webブラウザ用の新世代ECMAScriptエンジンの一部です。

  • Carakan:Opera Software ASA、Opera Webブラウザのリリース(=でV8に切り替えるまで)によって開発されたECMAScriptエンジンOpera 15)
  • Chakra(JScript9):InternetExplorerで使用されるECMAScriptエンジン。
  • Chakra:MicrosoftEdgeで使用されるECMAScriptエンジン。
  • SpiderMonkey:Firefoxを含むMozillaGeckoアプリケーションのECMAScriptエンジン。
  • JavaScriptCore:WebKitプロジェクトおよびSafariなどのアプリケーションで使用されるECMAScriptエンジン。
  • Tamarin:AdobeFlashで使用されるECMAScriptエンジン。
  • Nashorn:Oracleで使用されるECMAScriptエンジンJava Development Kit(JDK)
  • V8:Google Chrome、Node.js、およびV8.NETで使用されるECMAScriptエンジン。

つまり、Chrome V8、または単にV8は、The Chromium Project for Google ChromeおよびChromiumWebブラウザーによって開発されたオープンソースのJavaScriptエンジンです。

Node.jsChromeのV8 JavaScriptエンジン上に構築されたJavaScriptランタイムです。

あなたが今まではっきりしていることを願っています。


ここで、用語MEAN Stack。について考えてみましょう。

[〜#〜] mean [〜#〜]はJavaScriptベースのテクノロジーのコレクションです— MongoDB、Express.js、AngularJS、およびNode.js —開発に使用されますWebアプリケーション。

  • Node.js- GoogleChromeのV8JavaScriptランタイム上に構築されたサーバー側のJavaScript実行環境。
  • Express- NodeでWebアプリケーションを構築するために使用される軽量フレームワーク
  • MongoDB-スキーマレスのNoSQLデータベースシステム。
  • AngularJS-JavaScriptベースのオープンソースフロントエンドWebアプリケーションフレームワーク。

お役に立てれば。:)

1
Eldho NewAge

V8エンジンは、GoogleChromeで使用されるJavascriptのインタープリターです。
NodeJSがこのエンジンの上に構築されているというステートメントは、NodeJSが独自の目的でこのインタープリターを使用することを意味します。したがって、デスクトップ環境(Google Chromeなど)だけでなく、サーバーでも使用できます。

NodeJSは、インターネット経由で通信できる別個のアプリケーションであり、Apache、Nginxなどのようなものですが、(前述のような)1つの目的だけに使用されるのではなく、主にWebサーバーのようなアプリケーションの作成に使用されます。

0
VentyCZ

実際、NodeJSはクロスプラットフォームのサーバーサイドフレームワークです。 I/Oバウンドおよびデータストリーミングアプリケーションに最適であるため、上記の目的でGoogleChromeのJavaScriptV8エンジンを使用しているため、ブラウザやプラットフォームに依存しません。

0
user7220615

ノードは、chromeを実行するのと同じJS「エンジン」を使用します。この場合のエンジンは、JSコードをマシンコードにコンパイルまたは「変換」するソフトウェアです。または、コンピュータが理解できる0と1。このコンパイルは複雑なプロセスであり、それを解決するためのいくつかの異なるアプローチがあります。たとえば、googleのv8やmozillaのspidermonkeyなどです。これらはそれぞれ、JS標準全体を(ある程度)サポートします。つまり、JavaScriptコードを実行できます。

ノードサーバーを実行すると、サーバーとして機能するマシン上で実行されます。コードはユーザーのマシンではまったく実行されません。したがって、コンテンツの表示にどのブラウザを使用するかは問題ではありません。

MEANスタックでは、ユーザーのコンピューターで実行されるのはangularコードです。ただし、JavaScriptで記述されており、任意のjavascriptエンジンで実行できます。

0
nadavvadan

Node.jsはサーバー上のJavaScriptです。たとえば、 http:// localhost:8000 / でNode.jsサーバーを起動し、ChromeまたはFirefoxでアクセスできます。

Node.js(V8を使用)を使用すると、サーバーはPHPまたはRubyではなく、JavaScriptで記述できます。

0