Se pare că există o nouă recoltă de biblioteci JavaScript cu destinație specială în fiecare săptămână. Se pare că sunt zilele în care se folosește o singură bibliotecă pe proiect. Astăzi vă prezint o bibliotecă de componente foarte amplă, AmplifyJS, care oferă doar câteva componente foarte specializate.
Potrivit site-ului:
AmplifyJS este un set de componente concepute pentru a rezolva problemele comune ale aplicațiilor web.
Sună prestigios, dar ce este de fapt în această bibliotecă?
AmplifyJS are trei piese principale:
Alăturați-vă acum pentru un tur al incredibilei biblioteci AmplifyJS! Vom construi un tracker foarte simplu de angajați; într-adevăr, este doar un tabel cu câteva caracteristici asemănătoare aplicațiilor, amabil (parțial) de AmplifyJS.
Nu avem nevoie să ne preocupăm astăzi de aspectele legate de stil și aspect, așa că am să folosesc biblioteca Twitter Bootstrap. Este incredibil de simplu: trebuie doar să includeți legătură
la fișierul CSS - pe care l-au lăsat să fiți conectați de la Github - și sunteți în afaceri.
Deci, fă-ți un director de proiect. Începeți cu index.html
fișier și a js
pliant. Acum, du-te pe site-ul AmplifyJS și faceți clic pe care uriașe, roșu? buton. Odată, aveți zipul bibliotecii, extrageți-l și mutați-l în js
pliant. Vom avea nevoie și de alte câteva lucruri:
bootstrap-modal.js
: Biblioteca Twitter Bootstrap include câteva scripturi pentru a obține toate informațiile interactive. Și vom folosi unul: plugin-ul jQuery al ferestrei modale. Descărcați-l și adăugați-l la acesta js
pliant.Apoi, începeți-ne index.html
fișier ca acesta:
AmplifyJS comenzi
Angajați
Dacă nu sunteți familiarizat cu utilizarea Twitter Bootstrap, veți vedea că nu este o sudoare de utilizat. Avem o recipient
care are o lățime de 940 pixeli. Apoi, avem două rând
s. Primul are o coloană care acoperă toate cele 16 coloane. Celălalt are două coloane: una este de 4 coloane, iar una are 12 coloane.
Încă un lucru, înainte de a ajunge la o codare reală: vom deschide o fereastră modală care să permită accesul angajaților. Sub În regulă, suntem gata să plecăm! Să codificăm. Deschideți a Folosim modul plugin Bootstrap mod aici; aceasta doar? fereastra modală. Acum, dorim ca fereastra să apară când facem clic pe "Adăugați angajați"? buton. Desigur, va trebui să adăugăm mai întâi butonul: puneți acest lucru în Acea Deci, utilizatorul va trebui să completeze formularul, dați clic pe butonul? Adăugați? butonul care are un ID de Obținem formularul, apoi ascundem fereastra modală. Apoi o să sunăm Dar așteptați, spuneți, ce este Veți dori să aruncați o etichetă de scenariu cu ceilalți. Destul de simplu, nu? Noi doar creăm un obiect literal cu parametrii noștri și adăugăm a Această metodă nu trebuie să știe dacă o altă parte a codului nostru dorește să facă ceva cu fiecare nou angajat pe care îl creăm; Noastră? Butonul de gestionare a evenimentului nu trebuie să vă faceți griji. O vom publica doar ca un "angajat" creat? eveniment pentru orice parte interesată. Transmitem noul obiect angajat ca date pentru oricine interesat. Apoi, returnați obiectul angajat (chiar dacă nu îl urmărim în cadrul procesorului nostru de evenimente). Asa de, este orice altă parte a aplicației noastre interesată de "angajatul-creat"? Da, de fapt. Vrem să facem două lucruri. Mai întâi, adăugați acest angajat la un tabel de pe pagina noastră. În al doilea rând, dorim să stocăm angajatul în localStorage. Iată prima parte a acestui lucru: Pentru a vă abona la un eveniment, sunăm Ce e cu asta? Acum, trebuie să capturăm acest tabel ca o variabilă în cadrul nostru Și E un pic cam complicat, dar nu ar trebui să ai probleme cu grotele. Avem o Acest micro-API ne ușurează să lucrăm cu masa noastră. Ar trebui să puteți vedea modul în care treceți o matrice la Atunci, acolo este '+ message +' După cum puteți vedea, aceasta doar adaugă a Dar asta nu este singura idee pe care o dorim sa o facem atunci cand "angajatul" a fost creat? apare: În partea de sus, cu celelalte două variabile, facem al treilea și ultimul: Acum folosim componenta de stocare AmplifyJS. Chiar nu a putut fi mai simplu: pentru a stoca o valoare, treci Deci, aici, adăugăm un nou angajat la matrice și stocăm matricea în angajații? cheie. Trebuie să rețin că din moment ce stocăm o matrice, AmplifyJS folosește serializarea JSON pentru a converti matricea la un șir. Prin urmare, dacă încercați să sprijiniți browserele fără suport JSON nativ (IE 5 și în jos, Firefox 3 și în jos), veți dori să includeți biblioteca json2.js. În exemplul mic al aplicației, spunem că, în mod prestabilit, datele pe care le puneți în aplicație sunt păstrate numai pe computerul dvs. (în acel browser). Cu toate acestea, dacă utilizatorul dorește, le vom permite să le punem pe server (ipotetic, acestea sunt informații private pe care nu le doresc să le împărtășească, însă dacă doresc să le acceseze de pe alte dispozitive, ar putea face acest lucru. ). Vom începe prin adăugarea unui buton pentru încărcarea datelor. Acum, bineînțeles, mințile voastre strălucite au dat deja seama că vom folosi componenta AJAX a lui AmplifyJS. Făcând AJAX cu AmplifyJS este un pic diferit față de alte biblioteci: ideea este că mai întâi definiți o conexiune la server; atunci puteți utiliza acea conexiune de nenumărate ori după aceea. Să începem prin definirea unei conexiuni, numită "resursă"? de AmplifyJS: Primul parametru este aici În cele din urmă, avem un obiect de opțiuni. Conform documentației, opțiunile de setări sunt tot ce ați seta Bineînțeles, vom avea nevoie de un simplu PHP pe spate; asigurați-vă că Acum, ce zici de folosirea conexiunii, a resurselor pe care le-am definit? Să facem asta într-un manipulator de clicuri pentru asta Când se utilizează resursa, primul parametru este ID-ul resursei; este acelasi ID de resursa pe care o avem resursa pe care am definit-o, deci AmplifyJS stie ce sa foloseasca. În al doilea rând, transmitem hash de date. În acest caz, trecem conținutul în magazinul nostru, sub angajații cheie? Parametrul final este o funcție care se numește atunci când primim un răspuns. Odată ce primim un răspuns, vom publica datele împinse? eveniment. Apoi, vom alerta utilizatorul că a funcționat: Ei bine, asta e aplicația noastră mică. Ne-am uitat la utilizarea tuturor celor trei componente AmplifyJS: Deci, care sunt gândurile tale pe AmplifyJS? Imi place? Găsiți-l prea redundant? Să o auzim în comentarii!Adăugați un angajat
Pasul 2: Cablarea ferestrei modale
scenariu
eticheta din partea de jos a paginii index.html
(Fac doar asta in linie, dar simt ca o sa pun intr-un nou fisier JS). începeți astfel: (funcția () var employeeModal = $ ('add-employee-modal').
.
date-controale-modal = 'add-angajat-modal'
atributul va afișa modulul cu ID-ul menționat atunci când este apăsat butonul.creați-angajat
. Deci, hai să facem un buton pentru un eveniment de clic:$ ('# create-employee') faceți clic pe (funcția () var form = $ (' ]]) val (), form.find ('[name = lastName]') val (), form.find ('[name = role] ') .val ("););
EMPLOYEE.create
metoda, trecând primul nume, prenumele și rolul ca fiind cei trei parametri. În cele din urmă, eliminăm formularul.amplify.publish
EMPLOYEE.create
? Ei bine, este o clasă micro-? pe care l-am pus js / employee.js
. Verifică:var EMPLOYEE = create: funcția (numeName, NumeNumăr, Rolul) var employee = firstName: firstName, lastName: lastName, role: role, dateEmployed: new Date (); amplify.publish ("angajat creat", angajat); angajat retur; ;
dateEmployed
proprietate. Dar, atunci - și în final - avem prima intrare a cadrului AmplifyJS. Aici, folosim componenta evenimente publice / sub evenimente. Acest lucru este minunat pentru a face o legătură slabă între părțile aplicației dvs..
Pasul 3: Reacționarea cu
amplify.subscribe
amplify.subscribe ("angajat-creat", funcție (angajat) employeeTable.add ([employee.firstName, employee.lastName, employee.role, employee.dateEmployed]); newAlert ('succes', 'New Employee Added') ;);
amplify.subscribe
. Vrem să vă abonați la "angajatul creat"; atunci când apar evenimentele, vrem să le adăugăm la employeeTable
; observați că, în loc să îl treceți doar angajat
obiect, noi? converti? la o matrice; acest lucru se datorează faptului că trebuie să fim siguri că elementele vor fi în ordinea corectă. Apoi, dorim să afișăm un mesaj, permițând utilizatorilor să știe că angajatul a fost adăugat cu succes.employeeTable
variabil? Ei bine, în primul rând, trebuie să adăugăm la documentul nostru. Deci, sub angajații noștri??
, adaugă asta:
Nume Numele de familie Rol Data angajat var
declarație în partea de sus:employeeTable = TABLE.create ($ ('# staff-table')),
MASA
? Aceasta este ultima piesă de JS pentru acest puzzle. Pune-o înăuntru js / table.js
și nu uitați tag-ul script:var TABLE = proto: init: funcția (el) this.element = $ (el) .find ('tbody'); , adăugați: funcția (arr) var row = $ ('
') .html (funcția () return $ .map (arr, funcția (valoare) return' '+ valoare +' „; ;); this.element.append (rând);, sarcina: funcția (rânduri, ordine) pentru (var i = 0; ()); vară câmpuri = []; pentru var j = 0; ordine [j]; j ++) fields.push (rânduri [i] );, clare: function () this.element.empty ();, crea: function (el) var tab = Object.create (this.proto); table.init; ; proto
proprietate care este prototipul instanțelor noastre de masă. Atunci când sunăm crea
, folosim Object.create
pentru a crea un obiect care moștenește this.proto
. După aceea, sunăm init
pentru a stabili orice proprietăți. În cele din urmă, vom returna instanța tabelului. adăuga
metoda va adăuga un rând la masa noastră. Observați, de asemenea, că putem trece o serie de rânduri sarcină
și umpleți masa; vom folosi acest lucru în curând.newAlert
metoda pe care am numit-o:funcția newAlert (tip, mesaj) $ ('alert-area') append ($ ('
div
pe dos div
profită de stilul alertei Twitter Bootstrap; după două secunde, ieșim din alertă și o eliminăm. amplify.store
employeeStore = amplify.store ("angajați") || [];
employeeStore
. Dacă amplify.store ( 'angajați')
întoarce ceva, vom folosi asta; în caz contrar, vom folosi o matrice goală.amplify.subscribe ("angajat-creat", funcție (angajat)) employeeStore.push (angajat); amplify.store ("employees', employeeStore););
amplify.store
o cheie și o valoare. Pentru a extrage valoarea, dați-i cheia. Dedesubt, AmplifyJS stochează acea cheie și valoare în orice tip de stocare disponibil pe acel browser.
Pasul 4: Salvarea pe server (cu
amplify.request
)
amplify.request
este un API incredibil de flexibil și nu ne vom uita la tot ce poate face. Cu toate acestea, veți avea o senzație bună despre modul în care funcționează aici.amplify.request.define ('pushData', 'ajax', url: 'data.php', tip: 'POST');
RESOURCEID
, pe care le setăm ca "pushData"; acesta este modul în care ne vom referi la conexiunea noastră atunci când îl folosim. Al doilea parametru este tipul de solicitare; în acest caz, ajax.? Acesta este singurul tip de cerere încorporat în AmplifyJS; puteți adăuga propria dvs., dar acest lucru este potrivit pentru nevoile noastre astăzi.jQuery.ajax
, precum și ascunzătoare
(care vă permite să configurați o memorie cache memorie personalizată) și decodor
(pentru parsarea răspunsului AJAX). În cazul nostru, sunt necesare doar două opțiuni: URL-ul
, si tip
de cerere pe care o facem.date
dosarul este scris.data.php
:
$ ('push-data') faceți clic pe (funcția () amplify.request ('pushData' ', date); ); );
amplify.subscribe ('data-pushed', function () newAlert ('succes', 'Data trimis cu succes serverului'););
Luând-o un pas mai departe
amplify.publish / amplify.subscribe
, amplify.store
, și amplify.request
. Am acoperit destul de mult tot ce trebuie să știți despre pubsub și să stocați părți (acolo este un pic mai mult!), dar există o mult mai mult puteți face cu API-ul de solicitare. Deci, vizitează site-ul pentru a afla mai multe!