backbone.jsとsocket.ioを使用してWebアプリを作成します
キーテイクアウト
- backbone.jsは、キー価値のバインディングとカスタムイベントを備えたモデル、列挙性関数を備えたコレクション、イベント処理を備えたビュー、およびRESTFUL JSONインターフェイスを介した既存のAPIへの接続を提供することにより、Webアプリケーションに構造を提供します。 socket.ioは、Webクライアントとサーバー間の双方向通信を可能にすることにより、リアルタイムのWebアプリケーションを有効にするJavaScriptライブラリです。ユーザーのブラウザとサーバーの間にインタラクティブな通信セッションを作成するために使用されます。
- PubSubパターンは、カップリングを回避し、コードをより柔軟で拡張可能、保守可能にするのに役立つ非同期メッセージングパラダイムです。 BackBone.jsは、このイベントシステムを簡単に実装します 提供された例では、backbone.jsとsocket.ioを使用して、ユーザー間でリアルタイムでデータが同期されるグラフ視覚化ツールを作成します。コードは、他のライブラリまたはデータベースへの簡単なカスタマイズと移行を可能にするために構成されています。 この例をローカルに実行するには、GitHubリポジトリのクローニング、依存関係のインストール、アプリケーションの開始、http:// localhost:5000に向かい、実行中のアプリケーションを確認することが含まれます。
- この記事は、Thomas GrecoとMarc Towlerによって査読されました。 SetePointコンテンツを最高にしてくれたSitePointのすべてのピアレビュアーに感謝します!多くの人が知っているように、backbone.jsは有名なMV*フレームワークです。 GitHubでホストされており、キー価値のバインディングとカスタムイベントをモデルに提供し、列挙機能の豊富なAPIを備えたコレクション、宣言的なイベント処理を伴うビューを提供し、既存のAPIに接続することにより、Webアプリケーションに構造を提供します。 RESTFUL JSONインターフェイス この記事では、カップリングを避けるために非同期メッセージングパラダイムを実装するために、イベント
- と呼ばれるバックボーンの組み込み機能を使用します。アイデアは、互いに大きく依存しているコードのグループを分離することです。 私が表示する例は、データがクロスユーザーを美しく同期するグラフ視覚化ツールです。 WebSocketを使用すると、ユーザーのブラウザとサーバーの間でインタラクティブな通信セッションを開くことができます。

backbone.js
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.io- を使用したチャットアプリケーション
- Socket.io
- を使用した backbone.js このセクションでは、backbone.jsでsocket.ioを使用する方法の例を紹介します。
- そしてこれが結果です:
- CodepenのSitePoint(@SitePoint)のペンQydxwoを参照してください Backbone.js
pubsub
pubsubは非同期メッセージングパラダイムです。結合を避けるために私たちを提供する機能を提供します。カップリングとは、コードのグループが互いに大きく依存している場合です。つまり、コードの一部が変更された場合、このコードを使用するすべての更新が必要です。pubsubは、同期分離を持つパターンです。ラジオの仕組みのようなイベントシステムを使用します。ラジオ局の放送(
公開<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および
dbaas、他のいずれについても知りません。それらの行動はすべて孤立しています。 両方のモジュールは、依存関係を避けるためにsubpribscribe
スタイルでセットアップされています。彼らは、ラジオの動作と同じ方法でイベントシステムを使用し、ラジオ局の放送(パブリッシュ)とラジオレシーバーのリスニング(購読)を使用します。各モジュールは、他のモジュールと直接話すのではなく、共有された「ラジオ局」でメッセージを公開します。独自のチャンネルでイベントを発射し、他のイベントのために他のチャンネルを聞くこともできます。 ここでの唯一の依存関係は、非常に小さなAPIを持つ各ラジオチャネルの依存関係です。重要なのは、どのメッセージがトリガーしているか、システムがイベントに正しく反応することを保証することです。イベントをトリガーして正しいことをすると、システム全体が機能します。以下の画像を見て、これらの各モジュールからどのイベントが放出されているかを確認してください。
バックボーンビューは、フォースビューとDBAAの間のメディエーターとして機能します。これにより、すべてを使用可能な小片に分解し、それらの小さな断片を美しく機能させることができます。このようにして、コードの理解がより簡単になり、簡単に維持可能になります。たとえば、特定の味に合わせて少しカスタマイズしたい場合は、モジュールを簡単に拾い上げて、好きなように変更できます。グラフの視覚化を他のグラフライブラリ、例えば置き換えることができます。 JQPlot、Dracula、Arborjs、Sigmajs、Raphaeljsなど。または、Firebase、Appbase、Neo4J、TitandBなどのリアルタイムデータベースを使用することもできます。良いニュースは、別のライブラリに移行するために単一のファイルを変更するだけであることです。以下の画像は、バックボーンビューとこれら2つのモジュール間の相互作用を示しています。
データベースを使用していないことに注意してください。データはメモリに保存されています。コードを分離する方法により、あらゆる種類のデータベースに接続できます。グラフの視覚化の例をローカルに実行する

コード全体がGitHubで利用可能です。リポジトリをクローンするか、コードをダウンロードできます。
その後、コンソールから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は、カスタムイベントをモデルにバインドできるイベント処理システムを提供します。 「ON」メソッドを使用して、イベントをモデルにバインドし、「トリガー」メソッドを使用してイベントをトリガーできます。 「オフ」方法を使用してイベントを削除することもできます。このイベントシステムにより、アプリケーションの変更を管理し、ユーザーインターフェイスをデータと同期させることができます。 node.jsの人気のあるWebアプリケーションフレームワークであるExpress.jsと簡単に統合できます。 Express.jsアプリケーションを作成してから、socket.ioサーバーを添付できます。その後、socket.ioを使用して、クライアントとサーバー間のリアルタイム通信を処理できます。 Express.jsとsocket.ioのこの組み合わせは非常に強力であり、複雑なWebアプリケーションを作成するために使用できます。 Restful APIで動作するように設計されています。 「フェッチ」メソッドを使用してサーバーからデータを取得し、「保存」メソッドをサーバーに保存できます。 「破壊」メソッドを使用して、サーバーからデータを削除することもできます。 backbone.jsは、サーバーに送信するときにモデルデータをJSON形式に自動的に変換し、サーバーから受信するときにモデルデータに戻します。 >
socket.ioは、ブロブやアレイバッファなどのバイナリデータをサポートしています。クライアントからサーバー、またはサーバーからクライアントにバイナリデータを送信できます。 socket.ioは自動的にバイナリデータのエンコードとデコードを処理します。エラーを処理します。 「ON」メソッドを使用してエラーハンドラーをモデルにバインドし、「トリガー」メソッドを使用してエラーイベントをトリガーできます。エラーハンドラーはモデルとエラーを引数として呼び出します。クライアントが切断されると、サーバー上で「切断」イベントが放出されます。クライアントが再接続されると、クライアントに「再接続」イベントが放出されます。これらのイベントを使用して、アプリケーションの切断と再接続を処理できます。以上がbackbone.jsとsocket.ioを使用してWebアプリを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...
