Ryggraden blir stadig populær som et webapplikasjonsutviklingsramme. Sammen med denne populariteten kommer utallige utvidelser og plugins for å forbedre kraften i rammen, og fylle hull som andre følte nødvendig å fylle. La oss ta en titt på noen av de beste valgene.
Utviklet av Derick Bailey, denne utvidelsen er ganske stor og er min personlige favoritt. I stedet for å legge til en eller to funksjoner til Backbone, besluttet Derick å fylle ut alle de største hullene som han følte eksisterte. Her er hva han sier om det i readme-filen til GitHub-prosjektet.
"Backbone.Marionette er et kompositt applikasjonsbibliotek for Backbone.js som tar sikte på å forenkle konstruksjonen av store JavaScript-applikasjoner. Det er en samling av vanlige design- og implementeringsmønstre funnet i programmene jeg (Derick Bailey) har bygd med Backbone , og inkluderer ulike stykker inspirert av sammensatte applikasjonsarkitekturer, for eksempel Microsofts "Prism" -ramme. "
La oss ta en nærmere titt på hva Marionette gir oss med:
Jeg har bare skrapet overflaten av hva Marionette kan gjøre. Jeg anbefaler absolutt at du går over til GitHub og leser dokumentasjonen deres på Wiki.
I tillegg dekker Andrew Burgess Marionette i sin Tuts + Premium Advanced Backbone Patterns and Techniques kurs.
Backbone.Validation er designet for å fylle en liten nisje av et problem: nemlig modell validering. Det finnes flere valideringsutvidelser for Backbone, men dette synes å ha fått mest respekt fra samfunnet.
Snarere enn å faktisk skrive en validere
Metode for modellene dine, du kan lage en validering
Egenskap for modellene dine, som er et objekt som spesifiserer hvert av attributene du vil validere, og en liste over valideringsregler for hvert av disse attributter. Du kan også angi feilmeldinger for hvert attributt og passere i tilpassede funksjoner for å validere et enkelt attributt. Du kan se et eksempel nedenfor, som er endret fra et av eksemplene på deres hjemmeside.
var SomeModel = Backbone.Model.extend (validering: navn: required: true, 'address.street': obligatorisk: true, 'address.zip': lengde: 4, alder: [1, 80], epost: mønster: 'epost', // leverer din egen feilmelding msg: "Vennligst skriv inn en gyldig e-postadresse", // tilpasset valideringsfunksjon for 'someAttribute' someAttribute: funksjon if (value! == 'somevalue') return 'Feilmelding';));
Det finnes utallige innebygde validatorer og mønstre som du kan sjekke imot, og det er enda en måte å utvide listen med dine egne globale validatorer. Dette Backbone-pluginet gjør ikke riktig valideringsmoro, men eliminerer absolutt noen unnskyldninger for ikke å legge til i validering. Vennligst besøk deres nettsted for flere eksempler og en dypere forklaring på hvordan du bruker dette fantastiske verktøyet.
Backbone.LayoutManager handler om å gjøre Backbone's Views bedre. Som Backbone.Marionette, bringer den inn oppryddingskode for å hindre hukommelse lekkasjer, håndterer alle kjeleplater, og gir deg bare konfigurasjons- og applikasjonsspesifikk kode. I motsetning til Marionette fokuserer LayoutManager spesielt på Visninger.
Fordi LayoutManager fokuserer utelukkende på visninger, kan det gjøre mer for visningene enn Marionette gjør. LayoutManager kan for eksempel gjøre asynkron gjengivelse, i tilfelle du vil dynamisk laste inn maler fra eksterne filer.
LayoutManager kan også håndtere undervisninger, men på en helt annen måte fra Marionette. Uansett er det i stor grad konfigurasjon, noe som gjør ting ekstremt enkelt og eliminerer 90% av arbeidet du måtte ha gjort, hvis du prøvde å implementere alt dette på egen hånd. Ta en titt nedenfor for et enkelt eksempel for å legge til tre undervisninger til en visning:
Backbone.Layout.extend (views: "header": ny HeaderView (), "section": ny ContentView (), "footer": ny FooterView ());
Som vanlig, se på GitHub-siden og dokumentasjonen for å lære mer.
Backbone.ModelBinder lager koblinger mellom dataene i modellene dine og markeringen som vises av dine synspunkter. Du kan allerede gjøre dette ved å binde til endringshendelsen på modellene dine og gjengi visningen igjen, men ModelBinder er mer effektiv og enklere å bruke.
Ta en titt på koden nedenfor:
var MyView = Backbone.View.extend (mal: _.template (myTemplate), initialiser: funksjon () // Old Backbone.js måte this.model.on ('change', this.render, this); / / eller den nye Backbone 0.9.10 + måten this.listenTo (this.model, 'change', this.render);, render: function () this. $ el.html (this.template (this.model. tilJSON ())););
Problemet med denne tilnærmingen er at når en enkelt attributt er endret, må vi gjenta hele visningen. Også, med hver gjengivelse, må vi konvertere modellen til JSON. Til slutt, hvis vil bindingen være bi-directional (når modelloppdateringene, så gjør DOM og vice versa), må vi legge til enda mer logikk til visningen.
Dette eksemplet brukte Underscore's mal
funksjon. La oss anta at malen vi passerte inn i, ser slik ut:
Bruke taggene <%=
og %>
lage mal
funksjon erstatte disse områdene med fornavn
og etternavn
Egenskaper som eksisterer i JSON som vi sendte inn fra modellen. Vi antar at modellen har begge disse egenskapene også.
Med ModelBinder, i stedet kan vi fjerne de templerende kodene og sende inn normalt HTML. ModelBinder vil se verdien av Navn
attributt på inngang
tag, og vil automatisk tildele modellens verdi for den egenskapen til verdi
attributten til taggen. For eksempel, den første inngang
's Navn
er satt til "firstName". Når vi bruker ModelBinder, vil det se det og deretter sette det inngang
's verdi
til modellens fornavn
eiendom.
Nedenfor ser du hvordan vårt tidligere eksempel ville se etter å bytte til bruk av ModelBinder. Også innse at bindingen er toveis, så hvis inngang
Etiketter oppdateres, modellen oppdateres automatisk for oss.
HTML-mal:
JavaScript-visning:
var MyView = Backbone.View.extend (mal: myTemplate, initialiser: funksjon () // Ikke mer bindende her, gjengiv: funksjon () // Kast HTML-koden i denne. $ el.html (dette .template); // Bruk ModelBinder til å binde modellen og se modelBinder.bind (this.model, this.el););
Nå har vi rene HTML-maler, og vi trenger bare en enkelt linje med kode for å binde visningens HTML og modellene sammen modelBinder.bind
. modelBinder.bind
tar to nødvendige argumenter og ett valgfritt argument. Det første argumentet er modellen med dataene som vil bli bundet til DOM. Den andre er DOM-noden som vil bli rekursivt traversert, søker etter bindinger å lage. Det endelige argumentet er a bindende
objekt som angir avanserte regler for hvordan bindinger skal gjøres, hvis du ikke liker standardbruken.
ModelBinder kan brukes på mer enn bare inngang
tags. Det fungerer på ethvert element. Hvis elementet er en type formularinngang, for eksempel inngang
, å velge
, eller textarea
, Det vil oppdatere verdiene til elementet, tilsvarende. Hvis du binder til et element, for eksempel a div
eller span
, den vil plassere modellens data mellom åpnings- og lukkekoder for det elementet (f.eks. [data går her]
).
Det er mye mer kraft bak Backbone.ModelBinder enn det jeg har demonstrert her, så vær sikker på at du leser dokumentasjonen på GitHub-depotet for å lære alt om det.
Det bryter opp ting. Jeg har bare dekket en håndfull utvidelser og plugins, men dette er det jeg anser for å være mest brukbare.
Ryggraden landskapet er i stadig endring. Hvis du vil se en omfattende liste over de forskjellige Backbone-utvidelsene som er tilgjengelige, kan du besøke denne wikisiden, som Backbone-teamet regelmessig oppdaterer.