În acest tutorial, vom analiza construirea unui manager de contacte complet funcțional utilizând Backbone.js, Underscore.js și jQuery. Vom arunca o privire asupra componentelor de bază care fac bifarea backbone, precum și a unor metode de comoditate expuse de Underscore.
Backbone este un cadru arhitectural care ne permite să creăm cu ușurință aplicații non-trivial JavaScript folosind organizarea și structura stilului MVC. Backbone nu este considerat adevărat MVC - C este pentru Colectorul nu Controller, dar încă mai oferă multe din aceleași beneficii și ne permite să scriem un cod puternic și ușor de întreținut.
Underscore este o bibliotecă de utilități care oferă funcționalitate sporită JavaScript, adăugând funcții suplimentare pentru a lucra cu array-uri, colecții, funcții și obiecte.
Sunt sigur că jQuery nu are nevoie de o introducere aici.
Avem nevoie de un director de proiect rădăcină care să conțină css
, img
și js
subfoldere, așa că continuați și creați-le acum. Vom începe cu următoarea pagină HTML:
Backbone.js Web App
Salvați ca index.html
în directorul de proiect rădăcină. Singura cerință obligatorie a backbone-ului este Underscore.js, dar vom dori, de asemenea, să folosim jQuery, astfel încât să le conectăm la aceste două biblioteci înainte de Backbone. Codul aplicației noastre va intra în vigoare app.js
și toate stilurile vor intra în screen.css
. Pe pagină, avem un container gol care va forma baza aplicației noastre.
În continuare, putem crea fișierul JavaScript schelet pe care îl vom completa treptat în cursul acestei serii. Într-un fișier nou adăugați următorul cod:
(funcția ($) var conta = [nume: "Contact 1", adresa: "1, o stradă, un oraș, un oraș, AB12 3CD", tel: "0123456789", email: "[email protected] ", numele:" contact 2 ", adresa:" 1, o stradă, un oraș, un oraș, AB12 3CD ", tel:" 0123456789 ", email:" [email protected] " , numele: "contact 3", adresa: "1, o stradă, un oraș, un oraș, AB12 3CD", tel: "0123456789", email: "[email protected]" tip: "prieten", nume: "Contact 4", adresa: "1, o strada, un oras, un oras, AB12 3CD", tel: "0123456789", email: "[email protected]" : coleg ", nume:" Contact 5 ", adresa:" 1, o stradă, un oraș, un oraș, AB12 3CD ", tel:" 0123456789 ", email:" [email protected] " "familie", nume: "Contact 6", adresa: "1, o stradă, un oraș, un oraș, AB12 3CD", tel: "0123456789", email: "[email protected]" coleg ", name:" Contact 7 ", adresa:" 1, o stradă, un oraș, un oraș, AB12 3CD ", tel:" 0123456789 ", email:" [email protected] " ", name:" Contact 8 ", adresa: "1, o stradă, un oraș, un oraș, AB12 3CD", tel: "0123456789", email: "[email protected]", tip: "family"]; (jQuery));
Salvați acest lucru în js
dosar ca app.js
. Vom pune întregul cod într-o funcție anonimă pe care o invocăm imediat, alcătând jQuery ca fiind $
caracter. De asemenea, în această etapă este definită o serie de obiecte în care fiecare obiect reprezintă un contact.
Vom folosi acest magazin local de date pentru această parte a tutorialului, deoarece ne permite să facem un script să funcționeze fără să vă faceți griji cu privire la sincronizarea cu un server. O vom salva pentru o altă zi!
Un model reprezintă datele unei aplicații; în aplicația noastră, acesta va fi un contact individual, care va avea atribute cum ar fi un nume, un număr de contact etc. Puteți spune că un model individual reprezintă partea atomică a aplicației - cea mai mică unitate posibilă de funcționalitate. Adăugați următorul cod direct după matricea de date:
var Contact = Backbone.Model.extend (implicit: foto: "/img/placeholder.png");
Pentru a crea un model în Backbone, noi extindem Backbone.Model
clasa folosind extinde()
metodă. Putem trece un obiect în metoda care ne permite să personalizăm modelul cu propriile noastre funcționalități. Se numește una dintre proprietățile pe care le putem seta în acest obiect implicite
. Această proprietate ne permite să configuram valorile implicite pentru orice atribut pe care dorim să îl aibă modelele noastre.
În acest caz, am setat o imagine substituent ca valoare implicită a fotografie
atribut pentru instanțe de model. Orice model care nu are acest atribut când este definit va fi dat.
Modelele au alte proprietăți pe care le putem folosi pentru a adăuga funcționalități; am putea defini o inițializa ()
, iar această metodă va fi invocată automat de Backbone pentru noi atunci când fiecare model este inițializat. Nu vom mai folosi acest lucru în prezent, dar nu vă faceți griji, vom reveni la modele mai târziu.
O colecție este o clasă pentru gestionarea grupurilor de modele. Vom folosi unul simplu în acest exemplu pentru a stoca toate contactele noastre. Adăugați următorul cod direct după a lua legatura
model:
var Director = Backbone.Collection.extend (model: Contact);
Ca un model, o colecție este o clasă Backbone pe care o extindem pentru a adăuga funcții personalizate specifice aplicației noastre. Colecțiile au, de asemenea, un extinde()
și acceptă un obiect care ne permite să setăm proprietățile clasei și să adăugăm un comportament. Noi folosim model
proprietatea de a spune colecției ce clasă ar trebui să fie construită fiecare articol din colecție, care în acest caz este o instanță a noastră a lua legatura
model. Nu vă faceți griji că clasele pe care le-am definit până acum par foarte simplu, ne vom întoarce și vom adăuga funcționalități suplimentare în secțiunile ulterioare ale tutorialului.
Vizualizările sunt responsabile pentru afișarea datelor aplicației într-o pagină HTML. Unul dintre beneficiile separării părților aplicației care prelucrează datele și a părților care afișează datele este că putem face foarte ușor o schimbare la una, fără a necesita schimbări extinse asupra celeilalte. Vom folosi câteva opinii în aplicația noastră, prima dintre care ar trebui adăugată imediat după Director
clasă:
var ContactView = Backbone.View.extend (tagName: "articol", className: "contact-container", șablon: $ ("contactTemplate"). (this.template), acest $ $ el.html (tmpl (thismodel.toJSON ())); retur acest lucru;);
Această vizualizare se ocupă cu afișarea unui contact individual. La fel ca modelele și colecțiile, punctele de vedere au un extinde()
- metoda folosită pentru extinderea Backbone.View
clasă. Am stabilit câteva proprietăți de instanță în opinia noastră; nume eticheta
proprietatea este utilizată pentru a specifica containerul pentru vizualizare și numele clasei
proprietăți specifică un nume de clasă care este adăugat la acest container. Vom folosi un șablon simplu în fișierul HTML pentru a face fiecare contact, astfel încât șablon
proprietatea stochează o referință cache la șablon, pe care o selectăm din pagină folosind jQuery.
Apoi definim a face()
funcţie; această funcție nu este invocată automat de Backbone și în timp ce am putea să-i sunăm de la apelul automat invocat inițializa ()
metoda de a face vizualizarea de auto-randare, nu avem nevoie în acest caz.
În cadrul face()
metodă vom stoca o referință la Underscore's șablon ()
și treceți la acesta șablonul stocat. Atunci când a trecut un singur argument care conține un șablon Underscore nu îl invocă imediat, ci va returna o metodă care poate fi apelată pentru a reda șablonul.
Apoi, setăm conținutul HTML al element creat de vizualizarea șablonului interpolat utilizând jQuery
html ()
pentru confort. Acest lucru se face prin apelarea funcției templante pe care Underscore a returnat-o anterior și trecând-o cu datele interpolate. Datele sunt obținute din model folosind Backbone's toJSON ()
metoda de pe model. Interpolarea înseamnă că simbolurile din șablon sunt înlocuite cu date reale. Observați, de asemenea, că folosim $ el
pentru a seta conținutul HTML; acesta este un obiect jQuery stocat în cache reprezentând elementul curent, astfel încât să nu trebuiască să continuăm să creăm noi obiecte jQuery.
La sfârșitul face()
metoda, vom returna acest
obiect, care indică instanța de vizualizare că face()
metoda este chemată. Acest lucru este astfel încât să putem lanț alte metode Backbone la instanța de vizualizare după ce apelează face()
metodă.
Acum, probabil, ar fi un moment potrivit să analizăm subtilitățile încorporate în micro-templating ale Underscore. Underscore oferă Noi folosim a șablon ()
așa cum am văzut să consumăm și să interpolam șabloanele. În pagina HTML trebuie să adăugăm șablonul pe care îl vom folosi; adăugați următorul cod imediat după containerul de contacte >