
この決定をした理由は何ですか? 1つの簡単な考えは、LAMPスタックが死んでいるということです。 彼の誕生から20年で、Webが構築されるプロトコル、コンテンツ、サーバー、クライアントに根本的な変化が起こりました。 Web開発の3つの時代を区別できます。
1.1991-1999:HTML時代。
HTML時代は、「相互接続されたドキュメントの仮想世界」というティムバーナーズリーの元のコンセプトに完全に準拠したドキュメントに基づいていました。 Webは静的な、手動で作成されたファイルで満たされていましたが、これらのブラウザでは見た目が最も控えめなデザイナーでさえも気分を害しました。 静的ドキュメントは静的クライアントで表示されました。
2. 2000-2009:LAMPの時代。
LAMP時代はデータベースに基づいていました。 ドキュメントの場所は、Webアプリケーションのスタックによって取得されました。 CGI、PHP、Ruby on Rails、DjangoはHTMLテンプレートにデータベースのデータを追加しました。 これで、ページはサーバー上で動的に形成されましたが、まだ静的な形式でブラウザーに到達しました。
3.2010-??:JavaScriptの時代。
JavaScript時代の中心には、イベントのストリームがあります。 最新のWebページはもはやページではなく、イベント駆動型の情報共有アプリケーションです。 Web上にコンテンツを表示するための基盤であるドキュメントオブジェクトモデルはまだ存在しますが、これはJavaScriptプログラムによって生成されたメモリ内のデータ構造としてHTMLマークアップを表すための形式ではありません。
各ユーザーの動きに応じて大量のHTMLマークアップを送信したい人はほとんどいないため、LAMPアーキテクチャは死んでいます。 代わりに、小さなDOMフラグメントをAJAXで更新することをお勧めします。 しかし、サーバーテンプレートのJavaScriptコードの量が90%を超えると、すべてが間違っていることが明らかになります。
これを認識すれば、サーバーの主な機能はドキュメントの保存(HTML時代)やテンプレートのレンダリング(LAMP時代)ではなく、データの配信とそれらを処理するための機能であることがわかります。 サーバーは、クライアントにアプリケーションコードを提供し、次にアプリケーションがDOMに挿入するデータを提供する必要があります。
さらに、サーバーはイベントのフロー(クライアントアクションまたは株価の変更など、他のサーバーからのメッセージ)を監視し、これらのイベントに応答して更新されたデータをクライアントに送信する必要があります。
Node.jsアーキテクチャは、これらの機能に最適です。 JavaScriptはクライアントとサーバーの両方で使用されるため、インターフェイスの不一致の問題や、異なる言語で同じことを行うコードを2回記述する必要なく(フォーム検証など)、計算の一部をブラウザーに転送することが可能になります。
Node.jsは、イベントストリームの操作にも最適です。 非同期の非ブロッキングアーキテクチャのおかげで、非常に高速です。 HTTP 1.1を使用し、数千のオープン接続を一度に保持できます。
最後に、イベントはデータパケットに過ぎず、JSONは次第に今日のWeb上のデータの共通語になりつつあることに言及する価値があります。 JSONは、クライアント側のJavaScriptアプリケーションに最も便利です。 Node.jsの場合、これはネイティブ形式です。
JavaScriptの時代は、Webをグローバルなデジタルライブラリからグローバルなデジタル神経システムに変換します。
著者について:
LinkedInプロフィール
個人サイト 。