ホームページ ウェブフロントエンド jsチュートリアル JavaScript の Backbone.js フレームワークを使用するためのいくつかの提案_基礎知識

JavaScript の Backbone.js フレームワークを使用するためのいくつかの提案_基礎知識

May 16, 2016 pm 03:15 PM
backbone dom javascript

Backbone は、複雑な Javascript アプリケーションにモデル、コレクション、ビューの構造を提供します。このモデルは、キーと値のデータとカスタム イベントをバインドするために使用されます。コレクションには、列挙可能な関数の豊富な API が装備されており、ビューはイベント処理関数を宣言し、RESTful JSON インターフェイスを通じてアプリケーションに接続できます。
大量の JavaScript を含む Web アプリケーションを開発する場合、最初に行う必要があることの 1 つは、DOM オブジェクトへのデータの追加を停止することです。 複雑な jQuery セレクターとコールバック関数を使用して、HTML UI、JavaScript ロジック、データ間の同期の維持を含む Javascript アプリケーションを複雑にすることなく作成できます。 しかし、クライアント アプリケーションにとって、優れたアーキテクチャには多くの利点があります。
Backbone はデータをモデルとして提示し、モデルを作成し、検証して破棄し、サーバーに保存することもできます。 UI の変更によりモデル プロパティが変更されると、モデルは「変更」イベントをトリガーし、モデル データを表示するすべてのビューがこのイベントの通知を受け取り、ビューが再レンダリングされます。 HTML を手動で更新するために、特定の ID を持つ要素を DOM で検索する必要はありません。 —モデルが変わるとビューも自動的に変わります。
backbone.js は、キーと値のバインディングとカスタム イベント処理にモデルを使用し、列挙関数用の豊富な API セットを提供するコレクションを使用し、イベント処理と既存のアプリケーションとの統合にビューを使用して、RESTful JSON を介して対話する Web 開発フレームワークを提供します。 jqueryとアンダースコアをベースにしたjsフレームワークです。

バックボーンは本来、自分の意見を主張するものではありません。ドキュメントから得られる最も基本的なアイデアは、backbone.js が提供するツールを使用して、必要なことを何でも行うというものです。

非常に多くの異なるユースケースがあり、アプリの作成を開始するのが非常に簡単であるため、これは素晴らしいことです。このアプローチにより、開始時の間違いを最小限に抑えることができます。

何かが間違っている場合、私たちはそれを発見し、修正する方法を見つけなければなりません。

次のヒントは、Backbone.js の開発時に発生したエラーを回避するのに役立ちます:

1. ビューはデータレスです

データはビューではなくモデル (モデル) に属します。次回、データをビュー (または最悪の場合は DOM) に保存していることに気づいたら、すぐにそれをモデルに移動してください。

モデルがない場合は、非常に簡単に作成できます。

this.viewState = new Backbone.Model();

ログイン後にコピー

他に何もする必要はありません。

データの変更イベントをリッスンしたり、サーバーとオンラインで同期したりすることもできます。

2. DOM イベントはモデルのみを変更します

ボタンのクリックなど、DOM イベントがトリガーされたときに、ビュー自体を変更させないでください。このモデルを変更します。

状態を変更せずに DOM を変更するということは、状態が DOM に保存されたままであることを意味します。このルールにより一貫性が保たれます。

「さらに読み込む」エッジをクリックした場合は、ビューを展開せず、モデルを変更するだけです。

this.viewState.set('readMore', true);

ログイン後にコピー

わかりましたが、ビューはいつ変更されますか?良い質問ですね。次のルールで答えられます。

3.DOM はモデルが変更された場合にのみ変更されます

素晴らしいイベントですので、ぜひご利用ください。最も簡単な方法は、変更のたびにトリガーすることです。

this.listenTo(this.stateModel, 'change', this.render);

ログイン後にコピー

より良いアプローチは、必要な場合にのみ変更をトリガーすることです。

this.listenTo(this.stateModel, 'change:readMore', this.renderReadMore);

ログイン後にコピー

このビューは常にそのモデルとの一貫性を保ちます。このビューは、モデルがどのように変更されても、コマンド インターフェイスからのアクションやデバッグ情報に応じて常に更新されます。

4. バインドされたものはバインドを解除する必要があります

「remove」メソッドを使用してビューを DOM から削除する場合、バインドされているすべてのイベントからビューをバインド解除する必要があります。

「on」を使用してバインドする場合は、「off」を使用してバインドを解除する必要があります。バインドを解除しないと、メモリ コレクターはメモリを解放できず、アプリケーションのパフォーマンスが低下します。

これが「listenTo」の由来です。ビューのバインドとバインド解除を追跡します。 Backbone は、これを DOM から移動する前に「stopListening」を実行します。

// Ok:
this.stateModel.on('change:readMore', this.renderReadMore, this);
 
// 神奇:
this.listenTo(this.stateModel, 'change:readMore', this.renderReadMore);

ログイン後にコピー


5. チェーン書き込みを続けます

レンダリング メソッドと削除メソッドからは常に「this」を返します。これにより、メソッド チェーンを作成できるようになります。

view.render().$el.appendTo(otherElement);

ログイン後にコピー

これはメソッドです。破らないでください。

6. イベントはコールバックよりも優れています

応答イベントを待つ方が、折り返し電話するよりも良いです

バックボーン モデルはデフォルトで「同期」イベントと「エラー」イベントをトリガーするため、これらのイベントをコールバックの代わりに使用できます。これら 2 つのシナリオを考えてみましょう。

model.fetch({
 success: handleSuccess,
 error: handleError
});
//这种更好:
view.listenTo(model, 'sync', handleSuccess);
view.listenTo(model, 'error', handleError);
model.fetch();

ログイン後にコピー

モデルがいつフェッチされるかは関係なく、handleSucess/handleError が呼び出されます。

7. ビューにはスコープ

があります。

ビューはそれ自体以外の DOM を操作してはなりません。

ビューは、'el' や jquery オブジェクト '$el' などの独自の DOM 要素を参照します

つまり、jQuery を直接使用しないでください。

$('.text').html('Thank you');

ログイン後にコピー

DOM 要素の選択を独自のドメインに制限してください:

this.$('.text').html('Thank you');
 
// 这等价于
// this.$el.find('.text').html('Thank you');

ログイン後にコピー

如果你需要更新一个别的不同的视图,只要触发一个事件,让别的视图去做。你也可以使用Backbone的全局Pub/Sub系统。

例如,我们阻止页面滚动:

var BodyView = Backbone.View.extend({
 initialize: function() {
  this.listenTo(Backbone, 'prevent-scroll', this.preventScroll);
 },
 
 preventScroll: function(prevent) {
  // .prevent-scroll 有下面的CSS规则: overflow: hidden;
  this.$el.toggleClass('prevent-scroll', prevent);
 }
});
 
// 现在从任何其他地方调用:
Backbone.trigger('prevent-scroll', true);  // 阻止 scrolling
Backbone.trigger('prevent-scroll', false); // 允许 scrolling

ログイン後にコピー

还有一件事

只要读读backbone的源代码,你会学到更多。看一看backbone.js的源代码,然后看看这些神奇的事情是怎么实现的。这个库非常小,而且可读性很好,整个读完不会超过10分钟的。

这些小贴士帮助我们写干净的,更好的可读的代码。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript と WebSocket: 効率的なリアルタイム画像処理システムの構築 JavaScript と WebSocket: 効率的なリアルタイム画像処理システムの構築 Dec 17, 2023 am 08:41 AM

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。

See all articles