Learning JavaScript Design Patterns by Addy Osmani

MVC,MVP, and gerinc.js

nagyon kevés, ha bármilyen építészeti JavaScript keretrendszerek, amelyek azt állítják, hogy végre az MVC vagy MVP minták a klasszikus forma, annyi JavaScript fejlesztők nem megtekintése MVC meg MVP-nek, mint az, hogy kölcsönösen kizárják egymást (több valószínű, hogy MVP szigorúan végrehajtott ha ránézünk a webes keretrendszerek, mint ASP.NET vagy GWT). Ez azért van, mert lehetséges, hogy további presenter/view logika az alkalmazás, és még mindig úgy vélik, hogy egy íz MVC.

a bostoni székhelyű Bocoup Gerinchálózata, Irene Ross ezt a gondolkodásmódot támogatja, mivel amikor elválasztja a nézeteket a saját különálló összetevőiktől, szüksége van valamire, hogy ténylegesen összeállítsa őket neki. Ez lehet egy vezérlő útvonal (például egy Backbone.Router, amelyet később a könyv tartalmaz), vagy visszahívás a beolvasott adatokra válaszul.

Ez azt jelenti, hogy egyes fejlesztők ezt a gerincet érzik.a js jobban illeszkedik az MVP leírásához, mint az MVC. Véleményük szerint:

  • az MVP műsorvezetője jobban leírja a Backbone.View (A Nézetsablonok és a hozzá kötött adatok közötti réteg), mint egy adatkezelő.

  • a modell illeszkedik a Backbone.Model – hoz (egyáltalán nem különbözik nagyban az MVC modelljeitől).

  • a nézetek legjobban sablonokat képviselnek (pl. kormány/bajusz jelölő sablonok).

erre az lehet A válasz, hogy a nézet is csak nézet lehet (MVC szerint), mert a gerinc elég rugalmas ahhoz, hogy több célra is használható legyen. A V az MVC – ben és a P az MVP-ben egyaránt megvalósítható a Backbone.View segítségével, mivel két célt tudnak elérni: mind az atomkomponensek renderelését, mind az összetevők más nézetek által történő összeszerelését.

azt is láttuk, hogy a gerinchálózatban a vezérlő felelősségét megosztják mind a Backbone.View, mind a Backbone.Router és a következő példában valójában láthatjuk, hogy ennek szempontjai minden bizonnyal igazak.

gerincünk PhotoView a megfigyelő mintát használja a” feliratkozáshoz”a Nézet modelljének a this.model.bind("change",...)sorban történő módosításához. A render() metódusban is kezeli a sablonokat, de más implementációktól eltérően a felhasználói interakciót a nézetben is kezelik (lásd events).

var PhotoView = Backbone.View.extend({ //... is a list tag. tagName: "li", // Pass the contents of the photo template through a templating // function, cache it for a single photo template: _.template( $("#photo-template").html() ), // The DOM events specific to an item. events: { "click img" : "toggleViewed" }, // The PhotoView listens for changes to  // its model, re-rendering. Since tHere's // a one-to-one correspondence between a  // **Photo** and a **PhotoView** in this // app, we set a direct reference on the model for convenience. initialize: function() { this.model.on( "change", this.render, this ); this.model.on( "destroy", this.remove, this ); }, // Re-render the photo entry render: function() { $( this.el ).html( this.template(this.model.toJSON() )); return this; }, // Toggle the `"viewed"` state of the model. toggleViewed: function() { this.model.viewed(); }});

egy másik (egészen más) vélemény szerint a gerinc jobban hasonlít a Smalltalk-80 MVC-re, amelyen korábban mentünk keresztül.

ahogy a rendszeres gerinchálózat-blogger Derick Bailey korábban fogalmazott, végső soron a legjobb, ha nem kényszerítjük a gerincet, hogy illeszkedjen bármilyen egyedi tervezési mintához. Tervezési minták kell tekinteni, rugalmas vezetőket, hogy az alkalmazások lehetnek strukturált, s ebben a tekintetben, Gerince illik sem MVC, sem MVP. Ehelyett a legjobb koncepciók egy részét több építészeti mintából kölcsönzi, és egy rugalmas keretet hoz létre, amely csak jól működik.

érdemes azonban megértése, hol, miért ezeket a fogalmakat származik, így remélem, hogy az a magyarázat, MVC, valamint MVP volna segíteni. Nevezzük a gerinc utat, MV*, vagy bármi, ami segít hivatkozni az ízét alkalmazás architektúra. A legtöbb strukturális JavaScript-keretrendszer saját, akár szándékosan, akár véletlenül a klasszikus mintákat veszi át, de a lényeg az, hogy segítenek nekünk olyan alkalmazások fejlesztésében, amelyek szervezettek, tiszták, könnyen karbantarthatók.

Related Posts

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük