Nodejs——前書き、Nodejs概要


前言
これはシステム性がとても強くて、論理が緊密で、詳しくてやや適切で、面白いNodejs学習ノートです.メモを取る以上、手抜かりのないようにする必要があります.実は基礎的な部分と理解しにくい部分と間違いやすい部分だけに関心を持っています.先端の基礎があり、Nodejsに対して十分な情熱があれば、この資料はとてもお似合いです.しかし、正直に言うと、この資料は初めて毛の生え始めた先端技術者たちには向いていないかもしれません.私はすでに関連しているすべての知識点を最も詳しく説明することができます.
問題が発生した時、私はいつも自分を強制して一つの問題から一つの問題を解決するまで、この関連しているすべての問題を解決することが好きです.だからこの資料はとても詳しくて、詳しくは私が編纂する時まで恋していけないと感じて、いつも無数な問題が解決しなければならないためです.
この資料は基礎知識と実戦の二つの部分に分けられています.基礎知識の部分で、基礎理論の勉強にもっと注意を払います.実戦部分では、事例コード駆動がメインです.この資料は強いシステム性を持っています.その中の課題ロジックも非常に厳密です.この資料を順番に読んで、資料の中で提供されたコードを順次実践することをお勧めします.
約束する
(1)重点部分や注意すべき部分は太字で表示されます.
(2)チャプターまたは前置き
章のリード、前文または背景は引用フォントで表示されます.
(3)コード表示
         
または として現れる.
(4)エピソード、比喩、書名は斜体で表示されます.
(5)コードコメントの中=>記号の後の内容は出力の結果を表します.
第一章Nodejs概要
Nodejsは、リアルタイムウェブアプリケーションの開発のために誕生したプラットフォームです.誕生当初からリアルタイム応答、超大規模データ要求におけるアーキテクチャの拡張性を十分に考慮した.これは、従来のプラットフォームがマルチスレッドに依存して同時設計を実現することを排除し、シングルスレッド、非同期IO、イベント駆動式の設計モデルを採用する.これらの特性は,巨大な性能向上をもたらすだけでなく,マルチスレッドプログラミングの複雑さを低減し,開発効率を向上させた.
Nodejsは2009年にRyan Dahlによって開始されたオープンソースプロジェクトで、現在はJoyent社が管理し、維持しています.Nodejsは、強力で柔軟なパッケージマネージャ(node package manager、npm)を持っています.現在はすでに複数の第三者モジュールがあります.この中には、expressのようなウェブサイト開発の枠組みがあります.mysql、mongodbデータベースのインターフェース、テンプレート言語解析、CSS生成ツール、メール、暗号化、図形、デバッグサポート、さらにはグラフィカルユーザーインターフェースとオペレーティングシステムAPIツールがあります.
1.1 Nodejsは何ですか?
Nodejsは独立した言語ではなく、JSフレームやブラウザ端のライブラリでもありません.NodejsはJSをサーバー端に実行させる開発プラットフォームです.PHP、Pythonと比較して、Apphe、NginxなどのHTTPサーバをスキップして、直接先端に向かって開発しています.
NodejsはJSをブラウザ以外で実行させるプラットフォームです.ファイルシステム、モジュール、バッグ、オペレーティングシステムAPIネットワーク通信など、ブラウザにおけるJSの足元にも及ばない機能を実現しました.
NodejsはCommon JS規格に従い、現在世界最速のJSエンジンであるGoogle Chrome V 8を採用しています.Nodejsはブラウザで実行していません.いわゆるブラウザの互換性はありません.JS言語のすべての特性を丁寧に使用することができます.
1.2 Nodejsは何ができますか?
Nodejsはネットのために生まれましたが、それができるのはウェブサイトの開発ほど簡単ではないです.Nodejsを使って、簡単に開発できます.
  • 複雑な論理を持つウェブサイト
  • ソーシャルネットワークに基づく大規模なウェブアプリケーション
  • ウェブsocketサーバ
  • TCP/UDPソケットアプリケーション
  • コマンドラインツール
  • インタラクティブ端末プログラム
  • グラフィックインターフェースを有するローカルアプリケーション
  • ユニット試験ツール
  • クライアントJSコンパイラ
  • Nodejs内にHTTPサーバのサポートを構築しました.つまり、簡単にウェブサイトとサーバーの組み合わせを実現できます.ノードjsは、命令ラインツールのような非ネットワークアプリケーションの環境にも展開することができる.
    1.3 Nodejsの最大の特徴——非同期IOとイベント駆動
    Nodejsの最大の特徴は、非同期IOとイベント駆動のアーキテクチャパターン設計を採用することである.高合併の解決策では、従来のアーキテクチャはマルチスレッドモデルであり、各トラフィックロジックのためのシステムスレッドを提供し、同期IO呼び出し時の時間オーバーヘッドをシステムスレッド切り替えによって補う.Nodejsは単一スレッドモードを使用しており、すべてのIOに対して非同期的な要求方式を採用しており、頻繁なコンテキスト切り替えを回避している.Nodejsは実行中にイベントキューを維持します.プログラムは実行時にイベントループに入り次のイベントが来るのを待っています.各非同期IO要求が完了するとイベントキューに転送され、処理が行われるのを待ちます.非同期IOとイベント駆動機構については後述する章で詳細に説明します.
    1.4 Nodejsの性能
    1.4.1 Nodejsアーキテクチャ
    1.4.2 Nodejs比較PHP+Ngix
    3000の同時接続、30秒のテストで、「ハローworld」の要求とMYSQLのクエリ操作要求を出力した結果、Nodejsの性能はPHP+Ngixより明らかに優れていることが分かりました.
    単純にJSについて言えば、今の社会で一番速い脚本言語の一つになりました.
    1.5 Common JS
    1.5.1サーバー端JSの再生
    最初は、ほとんどの人がサーバー端のJSの威力を見たのはマイクロソフトのASPだった.しかし、Web 2.0時代の到来に伴い、ajaxなどの概念が提案され、JSは先端開発の代名詞となり、サーバー側のJSも次第に忘れられていきました.ここ数年まで、JSはまたサーバーの端で流行っている条件を持って、Nodejsは承諾して生みます.Mongodbなどの新型の非関係型データベースもJSとJsonを操作言語として使用し始め、JSベースのサーバー側で実現し始めました.
    1.5.2 Common JSの規範と実現
    JSのブラウザ以外の標準を統一するために、CommunJSが誕生しました.これはサーバー端のJSの仕様です.Common JSは標準ライブラリの実現に参加しないで、Nodejsなどのプロジェクトに任せて完成します.Common JS仕様は、モジュール、パッケージ、システム、バイナリ、システムファイル、コンソール、コード、ソケット、ユニットテストなどの部分を含みます.
    Nodejsは現在のCommunJSの最も人気のある実現ですが、CommunJSの規定に完全に従わないです.規定の指定はいつも技術の発展に遅れています.