backbone.jsは、モデル、、ビュー、、コントローラー、コレクション、およびコレクションを提供することにより、単一ページアプリケーションを構築するためのフレームワークです。 カスタムイベント
。その構造は、ユーザーインターフェイスをビジネスロジックから分離するのに役立ちます。この記事では、これらの要素のいくつかについてのみ紹介しますが、より詳細なガイドが必要な場合は、「backbone.jsの基本:モデル、ビュー、コレクション、テンプレート」という記事を読むことをお勧めします。 🎜>モデルはデータを表し、backbone.modelを拡張することで作成できます。
<span>var MyModel = Backbone.<span>Model</span>.extend({ </span> <span>initialize: function () { </span> <span>console.log('model initialized'); </span> <span>} </span><span>})</span>
イベントは、任意のオブジェクトに混合できるモジュールであり、オブジェクトにカスタムという名前のイベントをバインドおよびトリガーする機能を提供します。モデル
を変更します。 OKボタンを押すと、ビューは新しいID値をレンダリングします。 サーバーとクライアントの間のリアルタイム通信
WebSocketsは、ユーザーのブラウザとサーバーの間でインタラクティブな通信セッションを開くことを可能にする高度な方法です。このAPIを使用すると、ユーザーはサーバーにメッセージを送信し、回答のためにサーバーにポーリングすることなくイベント駆動型の応答を受信できます。この契約は、ルールと予想される行動を説明し、両側からの行動を伴う契約です。これらの2つのピースがAPIを介してリンクすると、サーバーとクライアントを統合するための接着剤として機能します。
橋の類推では、一度所定の位置にあると、データと命令が橋を渡ることができます。たとえば、サーバーは命令を受信し、アクションを実行し、命令を処理した後、情報をWebアプリケーションに返します。パーティー間のギブアンドゲット。この抽象化レイヤー(API)を使用すると、サーバーがどのようにアクションを実行したかについての詳細を理解する必要はありません。
Socket.ioは、リアルタイムWebアプリケーション用のJavaScriptライブラリです。これにより、Webクライアントとサーバー間の双方向通信が可能になります。両側には同一のAPIがあり、node.jsのようにイベント駆動型です。ブラウザとサーバー間のこのインタラクティブな通信セッションを開くには、リアルタイム通信を有効にするためにHTTPサーバーを作成する必要があります。これにより、メッセージを放出して受信できます。ソケットは、Webクライアントとサーバー間のこの通信を処理するオブジェクトです。
以下のコードは、Expressフレームワークを使用してSocket.ioを使用してそのサーバーを作成します。そのサーバーを作成した後、ソケットをパラメーターとして使用するコールバックをセットアップできるIOクラスがあります。このソケットオブジェクトを使用すると、ユーザーのブラウザとサーバーの間に接続を作成できます。
<span>var MyModel = Backbone.<span>Model</span>.extend({ </span> <span>initialize: function () { </span> <span>console.log('model initialized'); </span> <span>} </span><span>})</span>
ブラウザでは、クライアントは、接続のソケットを返すIO関数を呼び出すサーバーにリンクします:
<span>var MyView = Backbone.<span>View</span>.extend({ </span> <span>el: 'div#my-view-container', </span> <span>initialize: function (options) { </span> <span>this.model = new MyModel() </span> <span>console.log('view initialized') </span> <span>} </span><span>})</span>
言った、データと指示が橋を渡ることができるという簡単なコミュニケーションを作成しましょう。
<span>var express = require('express'), </span> app <span>= express(), </span> http <span>= require('http').<span>Server</span>(app), </span> io <span>= require('socket.io')(http); </span> http<span>.listen(process.env.PORT || 5000, function(){ </span> <span>console.log('listening on *:5000'); </span><span>});</span>
CodepenのSitePoint(@SitePoint)のペンMVRYMWを参照してください。
平均スタックの紹介
Express 4
を使用してRESTFUL APIを作成しますnode.js-PoweredチャットルームWebアプリを作成:ノード、MongoDB、Socket
Socket.iopubsubは、同期分離を持つパターンです。ラジオの仕組みのようなイベントシステムを使用します。ラジオ局の放送(
公開<span>var MyModel = Backbone.<span>Model</span>.extend({ </span> <span>initialize: function () { </span> <span>console.log('model initialized'); </span> <span>} </span><span>})</span>
この時点で、標準トリガーを使用し、メソッドを使用してメッセージを公開および購読できます。
<span>var MyView = Backbone.<span>View</span>.extend({ </span> <span>el: 'div#my-view-container', </span> <span>initialize: function (options) { </span> <span>this.model = new MyModel() </span> <span>console.log('view initialized') </span> <span>} </span><span>})</span>
目標は、モジュール間の依存関係を回避することです。各モジュールには、イベント(パブリッシャー)を起動するラジオ局のようなチャネルを持つことができます。他のモジュールは、通知を受信したいイベント(購読者)を聴くことができます。
<span>var express = require('express'), </span> app <span>= express(), </span> http <span>= require('http').<span>Server</span>(app), </span> io <span>= require('socket.io')(http); </span> http<span>.listen(process.env.PORT || 5000, function(){ </span> <span>console.log('listening on *:5000'); </span><span>});</span>
CodepenのSitePoint(@SitePoint)のペンgpgnpzを参照してください。
グラフの視覚化例
グラフの視覚化では、クライアント側に2つのモジュールを使用します。1つは指示されたグラフを描画するため、もう1つはデータを保存および取得するためです。グラフ描画モジュールは、Force Editorという名前のツールを使用します。このモジュールは、コードのForceViewと呼ばれ、グラフのノードを2次元空間にシンプルで直感的な方法で配置できます。 DBAASと呼ばれるストレージモジュールは、socket.ioを使用して、Webクライアントとサーバー間のリアルタイムの双方向通信を有効にします。それらのどれも、
forceview、他のいずれについても知りません。それらの行動はすべて孤立しています。 両方のモジュールは、依存関係を避けるためにsubpribscribe
スタイルでセットアップされています。彼らは、ラジオの動作と同じ方法でイベントシステムを使用し、ラジオ局の放送(パブリッシュ)とラジオレシーバーのリスニング(購読)を使用します。各モジュールは、他のモジュールと直接話すのではなく、共有された「ラジオ局」でメッセージを公開します。独自のチャンネルでイベントを発射し、他のイベントのために他のチャンネルを聞くこともできます。 ここでの唯一の依存関係は、非常に小さなAPIを持つ各ラジオチャネルの依存関係です。重要なのは、どのメッセージがトリガーしているか、システムがイベントに正しく反応することを保証することです。イベントをトリガーして正しいことをすると、システム全体が機能します。以下の画像を見て、これらの各モジュールからどのイベントが放出されているかを確認してください。
バックボーンビューは、フォースビューとDBAAの間のメディエーターとして機能します。これにより、すべてを使用可能な小片に分解し、それらの小さな断片を美しく機能させることができます。このようにして、コードの理解がより簡単になり、簡単に維持可能になります。たとえば、特定の味に合わせて少しカスタマイズしたい場合は、モジュールを簡単に拾い上げて、好きなように変更できます。グラフの視覚化を他のグラフライブラリ、例えば置き換えることができます。 JQPlot、Dracula、Arborjs、Sigmajs、Raphaeljsなど。または、Firebase、Appbase、Neo4J、TitandBなどのリアルタイムデータベースを使用することもできます。良いニュースは、別のライブラリに移行するために単一のファイルを変更するだけであることです。以下の画像は、バックボーンビューとこれら2つのモジュール間の相互作用を示しています。
データベースを使用していないことに注意してください。データはメモリに保存されています。コードを分離する方法により、あらゆる種類のデータベースに接続できます。グラフの視覚化の例をローカルに実行する
その後、コンソールからnpmインストールを実行して、すべての依存関係をインストールします。 次に、node server.jsを実行して、アプリケーションを開始します。
<span>var MyModel = Backbone.<span>Model</span>.extend({ </span> <span>initialize: function () { </span> <span>console.log('model initialized'); </span> <span>} </span><span>})</span>
ブラウザを使用してhttp:// localhost:5000にアクセスして、実行中のアプリケーションを確認します。アプリケーションが実行中に表示されたい場合は、こちらからデモを見つけることができます。
結論
終了! Backboneの組み込み機能を使用して、PubSubパターンを実装しました。さらに、このパターンを使用して、ユーザー間でデータが美しく同期されたリアルタイムでグラフデータを表現および保存しました。ご覧のとおり、デカップルされたコードが一緒に動作するのを見るために、素晴らしい例に興味深い概念がほとんど混ざり合っています。
次のステップは、メモリではなくデータベースにデータをカスタマイズして保存することです。ただし、おそらく今後の投稿の1つでカスタマイズについて説明します。backbone.jsとsocket.io
を使用してWebアプリの構築に関するよくある質問(FAQ)
Webアプリの構築におけるbackbone.jsの役割は何ですか?以上がbackbone.jsとsocket.ioを使用してWebアプリを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。