私はMEANスタックの初心者ですが、NodeJSを勉強しているときに、次のようなステートメントを思いついたのです。
Node.jsは、GoogleChromeのJavaScriptV8エンジン上に構築された非常に強力なJavaScriptベースのフレームワーク/プラットフォームです。
しかし、それは正確にはどういう意味ですか
googleChromeのJavaScriptV8エンジン上に構築されています。
また、ChromeのJS V8エンジンで構築されている場合、Firefoxでも機能するのはなぜですか?
MEANスタック、後ろから前に再編成:
したがって、Node.jsは「Firefoxでは機能しません」(Googleでは機能しませんChrome):サーバーサイドテクノロジーです。Python/ Ruby /の代わりと考えてください。その役割のJava。したがって、クライアントのすべての種類(Google ChromeやFirefoxなど)からの要求に応答できます/応答しません。
「BuildedonV8」の意味は、GoogleChromeと同じJavaScriptインタープリター/ジャストインタイムコンパイラーを使用することです。しかし、chromeとの類似点はほとんどそこで止まります:Nodeにはレンダリングエンジン/ cssパーサー/ DOMはありませんが、HTTPのようなサーバーに必要なものはありますライブラリとファイルシステムAPI。
また、私は違法ではないことを意味します。私たちは皆、あなたがいるところから始めました。あなたが質問をしているという事実(これも悪いことではありません!)は、MEANのようなスタック上に構築することが頭上にあることを意味します。ドキュメントは、あなたが知らないように見えることをあなたが知っていることを前提としています。 I 強くデータベースとフレームワークを組み合わせる前に、JavaScriptとNodeいくつかのチュートリアルとベアボーンテストアプリを通じて、理解を深めることをお勧めします。
プログラミング言語をコンピュータで実行するには、マシンが理解できる形式に変換する必要があります(一般に マシンコード と呼ばれます)。 Javascriptも例外ではありません。ブラウザにWebサイトでJavascriptコードが表示されている場合、何かをコンパイルするか、Javascriptの場合は命令をマシンコードに解釈する必要があります。
V8は、まさにそれを行うためにGoogleによって開発されたプログラムです。 Chromeを使用し、ページでJavascriptを検出すると、それをV8に渡してコンパイルを実行し、コンピューターが結果のコードを実行します。
V8はGoogleによってオープンソース化されました。 Nodeの作成者であるRyanDahlは、V8をChromeの外部で、LinuxやMacOSなどのオペレーティングシステムの内部で使用できるようにソースコードを変更しました。これが最初の引用の意味です。
ここで重要なのは、Nodeプログラムをブラウザで実行するのではなく、実際に使用しているコンピュータで実行することです。V8とFirefox、Safari、IEなどの間に相関関係はありません。 。これらのブラウザはすべて、独自のJavascriptインタープリターを備えています。
さて、これを乗り越えましょう:
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を使用してバックエンドをコーディングする場合と同じように、サーバー上で実行されます。
意味なし NodeJSとして言うことはあります "Firefoxでは動作しません"または "Chromeでは動作します"。
これはサーバーサイドスクリプトテクノロジーであり、ブラウザとはまったく関係ありません。
まず、以下の用語について基本的な知識を持ってみましょう。
ECMAScript-汎用スクリプト言語を作成するためにECMA-262で定義された仕様。
Javascript-ECMAScript仕様に準拠する汎用スクリプト言語の1つ。
ECMAScriptエンジンは、ECMAScript言語標準のバージョンで記述されたソースコードを実行するプログラムですたとえば、JavaScript。
これらは、Webブラウザ用の新世代ECMAScriptエンジンの一部です。
つまり、Chrome V8、または単にV8は、The Chromium Project for Google ChromeおよびChromiumWebブラウザーによって開発されたオープンソースのJavaScriptエンジンです。
Node.jsはChromeのV8 JavaScriptエンジン上に構築されたJavaScriptランタイムです。
あなたが今まではっきりしていることを願っています。
ここで、用語MEAN Stack。について考えてみましょう。
[〜#〜] mean [〜#〜]はJavaScriptベースのテクノロジーのコレクションです— MongoDB、Express.js、AngularJS、およびNode.js —開発に使用されますWebアプリケーション。
お役に立てれば。:)
V8エンジンは、GoogleChromeで使用されるJavascriptのインタープリターです。
NodeJSがこのエンジンの上に構築されているというステートメントは、NodeJSが独自の目的でこのインタープリターを使用することを意味します。したがって、デスクトップ環境(Google Chromeなど)だけでなく、サーバーでも使用できます。
NodeJSは、インターネット経由で通信できる別個のアプリケーションであり、Apache、Nginxなどのようなものですが、(前述のような)1つの目的だけに使用されるのではなく、主にWebサーバーのようなアプリケーションの作成に使用されます。
実際、NodeJSはクロスプラットフォームのサーバーサイドフレームワークです。 I/Oバウンドおよびデータストリーミングアプリケーションに最適であるため、上記の目的でGoogleChromeのJavaScriptV8エンジンを使用しているため、ブラウザやプラットフォームに依存しません。
ノードは、chromeを実行するのと同じJS「エンジン」を使用します。この場合のエンジンは、JSコードをマシンコードにコンパイルまたは「変換」するソフトウェアです。または、コンピュータが理解できる0と1。このコンパイルは複雑なプロセスであり、それを解決するためのいくつかの異なるアプローチがあります。たとえば、googleのv8やmozillaのspidermonkeyなどです。これらはそれぞれ、JS標準全体を(ある程度)サポートします。つまり、JavaScriptコードを実行できます。
ノードサーバーを実行すると、サーバーとして機能するマシン上で実行されます。コードはユーザーのマシンではまったく実行されません。したがって、コンテンツの表示にどのブラウザを使用するかは問題ではありません。
MEANスタックでは、ユーザーのコンピューターで実行されるのはangularコードです。ただし、JavaScriptで記述されており、任意のjavascriptエンジンで実行できます。
Node.jsはサーバー上のJavaScriptです。たとえば、 http:// localhost:8000 / でNode.jsサーバーを起動し、ChromeまたはFirefoxでアクセスできます。
Node.js(V8を使用)を使用すると、サーバーはPHPまたはRubyではなく、JavaScriptで記述できます。