Node環境とブラウザの違いを深く分析する


ちょうど最近友達が私にこの問題を相談しています。簡単に私が理解しているnode環境とブラウザの違いを話してください。
一、グローバル環境におけるthisの指向
nodeの中でthisはglobalを指してブラウザの中でthisはwindowを指して、これはどうしてundersscoreの中で上がってきてとrootを定義しました;

 var root = typeof self == 'object' && self.self === self && self ||
       typeof global == 'object' && global.global === global && global ||
       this;
また、ブラウザのwindowの下には、多くのAPIが封入されています。例えば、alert、document、location、historyなどがあります。私達はnodeの環境の中でxxx()ができません。window.xxx()もういいです。これらのAPIはブラウザ級のパッケージであり、純粋なjavascriptにはないからです。もちろんnodeの中にもnode特有のAPIがたくさんあります。
二、jsエンジン
ブラウザでは異なるブラウザメーカーが異なるブラウザのカーネルを提供しています。ブラウザはこれらのカーネル解釈に依存して、私たちが作成したjsを折っています。しかし、異なるカーネルの少量の違いを考慮すると、ブラウザの互換性を考慮する必要があります。幸いにもいくつかの優秀な倉庫が私達にこの問題を処理するように助けてくれました。例えば、jquery、undersscoreなどです。
NodeJSはChrome's JavaScript runtimeに基づいています。つまり、実際にはGoogleV 8エンジン(Google Chromeブラウザに適用)をカプセル化しています。V 8エンジンはJavascriptを実行するスピードがとても速くて、性能がとてもいいです。
      NodeJSは簡単なパッケージを提供してAPIの呼び出しを提供しているわけではありません。そうすれば、今のように怒ることはありません。Nodeはいくつかの特殊な用例を最適化し、代わりのAPIを提供し、V 8が非ブラウザ環境でよりよく実行されるようにした。例えば、サーバ環境においては、バイナリデータの処理は通常不可欠であるが、Javascriptはこれに対してサポートが不足しているため、V 8.NodeはBufferクラスを追加し、バイナリデータを効率的に処理するのに便利である。したがって、Nodeは単にV 8を使用しただけでなく、それを最適化し、各環境においてより力を与えます。
jsエンジンが固定されていますが、何の互換性がありますか?
三、DOM操作
ブラウザ内のjsの多くは、直接的または間接的(いくつかの仮想DOMのライブラリとフレーム)の動作DOMである。ブラウザのコードは主に表現層で動作するからです。しかし、nodeは一つのサービスエンド技術です。フロントページがありませんので、nodeでDOMを操作しません。
四、I/O読み書き
ブラウザと違って、他のサービス技術のようにファイルを読み、書きます。nodejsは便利なコンポーネントを提供します。ブラウザ(互換性を確保する)は、ページの中で直接地元の画像を開くのが面倒くさいです。試してみたら分かります。ライブラリを探したり、バイナリストリームを探したり、アップロードしたりしたら、ネットワークアドレスが表示されます。じゃなくて、どうしてjsライブラリを作ったのですか?
五、モジュールロード
javascriptの特徴は、元の生がカバンの引用を提供していないAPIを一度にロードするものを全部実行するということです。ここでは皆さんのクローズドの功力が見られます。使うものはすべていっしょにいて、分割して統治していないで、するのは特に論理性と多重性がありません。ページが簡単であれば、もちろんAMD、CMDのjsライブラリ(例えば、requireJSとseaJS)を通じて解決できます。実は多くの大手サイトはこのようにしています。
nodeJSでCMDのモジュールローディングのAPIを提供します。seaJSを使ったことがあるなら、すぐ上手になります。
nodeはnpmというパッケージ管理ツールも提供しています。私たちが飲むライブラリをより効果的に管理できます。
もちろんブラウザのこちらのES 6もこの方面の補充があって、未来がもっと良いことができることを信じます。
締め括りをつける
以上は小编が皆さんに绍介したNode环境とブラウザの违いです。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに皆さんに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。