web-dev-qa-db-ja.com

Meteor JavaScriptフレームワークはどのように機能しますか?

流星 に出くわし、エキサイティングなように見えますが、その仕組みを知りたいと思います。つまり、従来のWebアプリケーションは次のように動作します。サーバー上にデータベースからデータを取得し、それを動的にWebページに追加するスクリプトがあり、ユーザーが送信したデータは他のスクリプトを通じてデータベースに追加されます。

しかし、これらのことはMeteorでどのように機能しますか? Meteorの異なる部分はどのように相互に関連していますか?

107
Jatin

Meteor は、HTMLをリアルタイムでエレガントに更新するフレームワークです。

Meteorの素晴らしい点は、テンプレートとデータモデルを作成するだけで済むことです。通常の定型コードの残りは隠されています。すべての同期コードを記述する必要はありません。

Meteorの主要な部分は、次の部分を使用して自分で作成できます。

  • テンプレートを提供し、データモデルが更新すると自動的に更新されます。これは通常、 Backbone.jsEmber.jsKnockout.js 、または別のツールを使用して行われます。

  • クライアント/サーバーメッセージングは、 socks.js または socket.io のようなものを使用して、 websockets を介して行われます。

  • MongoDBへのクライアント側の接続は本当にクールです。 MongoDBサーバードライバーをクライアントに複製します。残念ながら、最後に確認したところ、彼らはまだこのデータベース接続の保護に取り組んでいました。

  • 遅延補正は、最初にクライアント側モデルを更新してから、サーバーサーバーに更新を送信するだけです。

Meteor サイト、または GitHub で見つけることができる他のきちんとした作品があるかもしれません。

81
xer0x

免責事項:この回答では、流星Meteor ServerのJavaScriptクライアントライブラリ。もともとは質問のあいまいさのために追加されたもので、同様の回答を探している訪問者が直面する類似のあいまいさを明確にする目的に役立つ可能性がありますが、違いは不明です。

Meteor JavaScript framework について読むには、- xer0x による この回答 を参照してください。

Meteor Serverのドキュメントで述べたように、MeteorはCometの実装です。彗星は[〜#〜] ajax [〜#〜]に相当します。

AJAXの場合、通常、クライアントがそれを行う必要があると判断したときにリクエストを行います。サーバーから更新をプルするには、サーバーを呼び出す必要があります。 5秒ごと。

Cometの場合、接続が永続的であるため、サーバーからの更新が高速になります。接続はAJAXのようにクライアントによって確立されますが、サーバーは更新があるか実行制限に達するまで応答しません(サーバー上のスクリプトには実行制限がある場合があります)。

Meteorの場合、特定のサーバー側コード(Meteor Serverなど)とクライアント上の適切なコード(この場合はMeteorクラスのように見える)を必要とするデータの一定のストリームを取得するだけです。

28
Tadeck

依存関係追跡システムが原因で、ライブデータ更新のすべての魔法が発生しています。仕組みの説明は、ドキュメントの Tracker セクションにあります。

25
snez