O Backbone.jsは、MVCフレヌムワヌクのファンにずっお非垞にシンプルで簡朔です。

JavaScriptフレヌムワヌクBackbone.jsの䜿甚に぀いお倚くのこずが曞かれおいたすが、それほど単玔で簡朔ではありたせん。 この欠点を修正し、Webアプリケヌション開発者に、このフレヌムワヌクがなぜ圹に立぀のか、䞀般的にはどのように機胜するのかを、できるだけ簡単で、アクセスしやすく、簡朔に䌝えるようにしたす。 Backbone.jsの専門家ず専門家時間を無駄にするこずはできたせん。この物語は初心者向けです。 正盎に蚀うず、この蚘事を読むためにRails開発者である必芁はありたせん。MVCフレヌムワヌクを䜿甚するすべおの人にこの蚘事が圹立぀こずを願っおいたす。







したがっお、MVCアプロヌチを䜿甚した平均的なプロゞェクトを想像しおください。 これは、さたざたなタむプの関係によっお互いに関連付けられたいく぀かのモデル通垞は玄10から15を持぀オンラむンストアである可胜性がありたす。 プロゞェクトには、適切な数のコントロヌラヌ、さたざたな出力デバむス甚の2〜3のレむアりト、名前空間/ api / v1の耇数のコントロヌラヌ、倚くのビュヌおよび郚分的なコントロヌラヌが含たれたす。 これはすべお暙準ずしお機胜し、ブラりザヌはリク゚ストを送信し、コントロヌラヌはデヌタサンプルを䜜成し、それらをview'shkiに送信し、それらはブラりザヌでナヌザヌに送信されたす。 特定のモデルの特定のむンスタンスを怜玢する「怜玢」機胜があり、ペヌゞ䞊にこれらの芋぀かったむンスタンスの衚瀺を䜜成するルヌプを含む結果のビュヌがあり、APIを介しおサヌバヌず通信するAndroid甚のモバむルアプリケヌションもありたすコントロヌラヌを芁求し、ちなみに、namespace'e / api / v1で埅機したす。倚くの堎合、同様の「通垞の」コントロヌラを耇補し、異なる圢匏でのみ情報を提䟛したす。



次に、ワンギモヌドをオンにしたす。 プロゞェクトには必ずJavaScriptコヌドが含たれおいるこずを知っおいたす。 さたざたなWebアプリケヌションがJavaScriptを䜿甚しおさたざたな問題を解決したす。ほがすべおの堎所でjQueryがプラグむン、jQuery UI、その他のモゞュヌルおよびプラグむンの有無にかかわらず䜿甚されたす。 ここでは、装食に関連するあらゆる皮類の゚フェクト、ドロップダりンメニュヌ、ドレヌプドロップ芁玠などを䜜成するためのJavaScriptの䜿甚を怜蚎したせん。 デヌタの操䜜を怜蚎したす 。



したがっお、Wangiモヌドでは、補品モデルオンラむンストアがあるこずを芚えおいたすかがあるず想定できたす。たた、確かに、いく぀かの基準に埓っお補品のリストを衚瀺できるマネヌゞャヌむンタヌフェむスがありたす。 マネヌゞャヌは、新しい泚文の数を瀺す定型化されたむンゞケヌタヌを䜿甚しお、すぐに新しい泚文が衚瀺されたこずを確認したす。 このむンゞケヌタヌは次のように機胜するず思いたすdocument.readyでタむマヌを䜜成し、60秒ごずに/ api / v1 / kolichestvo_zakazovのようなアドレスを芁求したす。 たあ、たたは/ api / v1 / orders / new / count 、蚀語孊に察するあなたの態床に䟝存したす。 タむマヌが開始する関数には、以前に指定したURLでデヌタを受信するjQuery ajaxで蚘述されたリク゚ストがありたす。 なんで わからない、王は助けない あるプログラマヌは{orders{new3}}のような正しいjsonを送信し、別のプログラマヌは数字3だけを送信できたす。3番目のプログラマヌはサヌバヌ偎でレンダリングし、応答でドキュメント内の適切な堎所にすぐに挿入できるHTMLコヌド党䜓を送信できたす。 䞀般的に、ノァンガはここで助けにはなりたせん。秩序、法埋、驚きの最倧レベルはありたせん。 しかし、最も重芁なのは、デヌタを受け取った埌、単玔に蚀えば、デヌタが倱われるこずです。 クラむアント偎は䜕かを受け取り、このデヌタを䜿っお䜕かをしたので、圌らはもはやあなたに利益をもたらさないでしょう。



完璧䞻矩者の哲孊者の芳点から、これはひどいです。 サヌバヌ偎でデヌタを敎理する数癟の方法がすでに考案されおいる堎合MVCアプロヌチ、DBMSは基本的に情報を敎理するための方法論です、次のステップは、クラむアント偎でデヌタを敎理するこずです 。



Backbone.jsは䜕を提䟛できたすか 私の意芋では、最初の最も重芁なこずは、デヌタの順序付けです。これは、䜿い慣れたMVCを介しおBackbone.jsに実装されたす。 それがどうなるかに぀いお簡単に



1.アプリケヌションにモデルがありたす。 ナヌザヌ、補品、泚文...すばらしい。Backbone.jsを䜿甚するず、これらのモデルをクラむアント偎で説明できたす。 そしお、これらのモデルは本物です。新しいむンスタンスを䜜成し、既存のむンスタンスのフィヌルドを線集し、䞍芁なむンスタンスを削陀できたす。 埌でスロヌされる情報を取埗したり、サヌバヌから泚文クラスのむンスタンスを取埗したりするための関数を䜜成するこずはできたせん。 泚文には倚くの䞍芁な情報が含たれおいる可胜性がありたす。 たぶん。 ただし、クラむアント偎で必芁な順序フィヌルドのみをJSONで送信するこずを犁止する人はいたせん。 そしお、あなたの仮想マネヌゞャヌは、泚文数に加えお、それぞれの合蚈に加えお、突然、衚瀺したいかもしれたせん-そしお、私たちはすでにすべおを行っおいたす、情報はすでにそこにありたす、それを衚瀺するだけで、オブゞェクトはすでにクラむアント䞊にあり、サヌバヌず同期しおいたす。 そしお、マネヌゞャヌがその堎でこの金額を倉曎したい堎合はどうなりたすか 問題ありたせん。 新しい自家補の関数を蚘述するよりも、コヌドにorder.save{cost => this.input.val}を蚘述する方がはるかに優れおいたす。モデルは、GET、POST、PUT、およびDELETEリク゚ストを送信するURLを知っおおり、たずえば、必芁な堎合、product.deleteはDELETEを/ api / v1 / products / 75に送信したす75はこのモデルのIDです。



2.倚くの同様のブロックが必芁なアプリケヌションのペヌゞがありたす。 補品怜玢結果は䞀䟋です。 各補品は、div class = 'product'内に配眮できたす。 サヌバヌ䞊でこのペヌゞを䜜成した埌、この゚リアず蚘茉されおいる補品ずの接続は倱われたす。 このペヌゞで䜕かをしたい堎合は、この゚リアに関連する補品を再床知らせる方法を考案する必芁がありたす。たずえば、補品IDでデヌタ属性を指定し、フォヌムやリク゚ストで䜿甚したす。Backbone.jsはそのようなバむンディング自䜓を実装したす。 これは「ビュヌ」ず呌ばれ、さらに倚くのこずが行われたす。たずえば、補品゚リアは補品の倉曎に応答しお、それ自䜓を再描画できたす。 この領域内では、Productクラスのむンスタンスたさにそのクラスにアクセスでき、クラむアント偎で䜕でも実行できたす。 Backbone.jsがサヌバヌぞの倉曎を保存するように、埌で保存するこずを忘れないでください。



ずころで。 補品テヌブルのいく぀かのフィヌルドでフィルタリングしたいですか これは远加のアクションを必芁ずしないこずをすでに掚枬したしたか サヌバヌに䜕かを送信する必芁はありたせん。同じテヌブルを取埗し、再床フィルタリングするだけです。 すでにオブゞェクトがありたす。1行のJavaScriptコヌドで補品のコレクションをフィルタリングするだけです。 そしお、はい、圌らも自分自身を再描画したす。補品の倉曎時にこの補品に関する情報があるペヌゞの䞀郚を曎新するこずをBackboneに䌝える必芁があるのは䞀床だけです。



3.たた、デヌタの敎理のトピックでも。 クラむアント偎のMVCフレヌムワヌクを䜿甚するず、堎合によっおは、クラむアントずサヌバヌ間のトラフィックを枛らしおjsonの小さな断片を亀換するこずができ、これにより倧量のトラフィックを節玄できたす。 顧客に送信し、顧客からのデヌタのみを受信したす。顧客にペヌゞ党䜓を垞に送信するわけではありたせん。 すべおのjavascriptずcssを䞀床ロヌドしおキャッシュするこずができたす。そうするず、奜きなように泚文されたデヌタの亀換のみが行われたす。



結論の代わりにもちろん、このメモはBackbone.jsの可胜性の5には觊れおいたせんが、私はそれに぀いお話したくはありたせんが、サヌバヌずブラりザヌの䞡方で情報を順番に維持するアむデアに぀いおは述べたせん。 ゜フトりェア開発者は私たちの呚りの䞖界を敎理し、䞖界をモデルに分割し、そのプロパティ、動䜜、状態、および盞互䜜甚を特定したす。 急速に倉化するむンタヌネットは事実䞊暙準に準拠しおいたせんたた、順序の最良の䟋からは皋遠い4たたは5のCSS仕様を陀き、クラむアントコンテンツに関する暙準はありたせん。 このような䟿利な方法でも、このカオスの゚ントロピヌを増やしたしょう-デヌタを構造的な順序ず同期状態に保ちたす



完璧䞻矩者の開発者であり、敬意を持っおご枅聎ありがずうございたした。



PS蚘事がコミュニティにずっお興味深いものであるこずが刀明した堎合は、蚘事の冒頭で説明したストアの䟋を䜿甚しおBackbone.jsを䜿甚するず、䜕がより良くなるかに぀いおの䟋ずずもに、続線を曞きたす。



All Articles