Noțiuni de bază cu Parse

Sunt un mare fan al Parse, o tehnologie care face ca dezvoltarea de aplicatii web si mobile sa fie mai rapida. Acesta vă permite să stocați, să sincronizați și să împingeți date în cloud fără a scrie o linie de cod de la server. Citiți mai departe pentru a vedea cum puteți integra Parse în următorul proiect.


Un pic de fundal

Interacțiunea cu baza de date este extrem de nedureroasă!

Să facem un pas înapoi și să evaluăm unde a fost dezvoltarea de web-uri acum cinci ani. Folosim limbi precum PHP / Ruby pe back-end, care interacționează cu baze de date relaționale (cum ar fi MySQL), iar front-end-ul nostru era plin de diverse fișiere JavaScript. Nu știu despre tine, dar majoritatea proiectelor mele erau pe un server cu o cantitate mică de spațiu pe disc, RAM și lățime de bandă.

O mulțime de tehnologii noi utilizează norul și nu este neobișnuit să vezi dezvoltatorii care profită de aceste servicii rentabile, cum ar fi AWS, Amazon S3, Heroku și multe altele. Introducerea acestor servicii a modificat esențial peisajul dezvoltării web; mai mult din ceea ce facem se află în nor.

Astăzi, ne vom uita la Parse, o pornire care oferă un sistem de gestionare a datelor bazat pe cloud. Prin folosirea serviciului, am reușit să creez rapid noi aplicații mobile și web. Vom utiliza Parse pentru a crea aplicația web obligatorie pentru a face-o și sper că vă oferă un gust pentru ceea ce poate oferi serviciul.


Ce este Parse?

Pur și simplu, Parse este un sistem de gestionare a datelor bazat pe cloud, care vă permite să dezvoltați rapid aplicații web și mobile.

Se dezvoltă aplicații într-adevăr ușor prin luarea spate-end din mâinile tale.

Deci, cum funcționează asta? Să presupunem că ești un dezvoltator web. Puteți adăuga fișierul Parse JavaScript pe pagina dvs., obțineți o cheie API și începeți să salvați "obiecte" în cloud cu doar câteva rânduri de cod. Parse vă eliberează de configurarea unui stack de pe server.

Gândiți-vă la asta pentru un minut. În mod tradițional, configurați o stivă de la server (LAMP sau RoR, ASP.NET sau altceva), configurați o bază de date și apoi interacționați cu acesta prin Ajax pe client. Parse reduce doar tot ceea ce lucrează la câteva linii de cod.

În acest tutorial vom folosi SDK-ul JavaScript al Parse. Nu vă limitați însă la utilizarea numai a JavaScript; există biblioteci Parse în multe limbi diferite, inclusiv PHP, NodeJS, Java, C # și multe altele. Puteți găsi toate bibliotecile disponibile aici.


Utilizând parsarea pentru proiectele bazate pe Web

Înainte de a începe, hai să facem un minut și să ne gândim cum ar putea fi creată o aplicație tradițională a listei de sarcini cu ajutorul unui stiv LAMP.

  • Ați crea o bază de date MySQL.
  • Este posibil să aveți o clasă PHP care este responsabilă pentru efectuarea operațiunilor CRUD. Opțional, ați putea avea doar o grămadă de funcții PHP.
  • Puteți folosi JavaScript și Ajax pe partea clientului pentru a apela respectivele scripturi PHP și a trece în șiruri de interogare.
  • Va trebui să dezinstalați datele de intrare pentru a proteja împotriva atacurilor XSS, precum și să vă faceți griji cu privire la securitatea bazei de date în general.
  • Dacă o aplicație colaborativă ar trebui să urmăriți utilizatori diferiți și să le gestionați listele. Mai multe coduri, mai multe mese și mai multe scheme.
  • Va trebui să vă asigurați că baza dvs. de date rămâne performantă.

Ai idee. Există multe de gândit și multe zone pentru a face greșeli. Parse gestionează aceste probleme pentru noi.

Creați un cont de analiză

Înainte de a face ceva, creați un cont gratuit de parse. Apoi creați o nouă aplicație numită EnvatoTodo.

Descărcați Proiectul gol

Parse oferă un ghid excelent QuickStart pentru a vă ajuta să începeți. Selectați JavaScript și alegeți EnvatoTodo din meniul derulant din pasul 2 (prezentat în imaginea de mai jos). Parse va genera un fișier zip care conține SDK Parse și index.html.

Partea clientului

Înainte de a începe să interacționăm cu Parse, să organizăm o structură bazată pe client pentru aplicația noastră. Deoarece interfața cu utilizatorul nu este în centrul acestei aplicații, vă voi arăta codul pe care l-am folosit. Nu este nimic fantezie, dar folosesc YUI3. Puteți utiliza opțional jQuery. Totul este înăuntru index.html.

   Aplicația Todo construită pe parse          

Lista Todo construită pe Parse

Sarcini incomplete

  • Nu există sarcini incomplete! Luați în considerare adăugarea unuia de mai sus.

Cel mai important lucru pe care trebuie să-l rețineți în codul de mai sus este includerea fișierului Parse JavaScript, . Acest fișier conține obiectul Parse cu care vom interacționa.

Adăugați clase în browserul de date

Parse vă eliberează de configurarea unui stack de pe server.

Să ne întoarcem la Parse. Vizualizați browserul de date pentru EnvatoTodo (este în prezent gol). Browserul de date este similar cu un server de baze de date MySQL, dar Parse DB este fără schemă. În timp ce puteți specifica coloane în Browserul de date, puteți salva orice obiect cu JSON simplu (nu spre deosebire de multe baze de date NoSQL / Document). Aceasta este o caracteristică extrem de importantă și utilă a Parsei.

Vom merge mai departe și vom adăuga o "clasă" în baza de date. Gândiți-vă la o clasă ca la o masă. Motivul pentru care se numește o clasă se datorează faptului că în general veți crea obiecte dintr-o anumită clasă și apoi veți salva acel obiect în baza de date.

Disclaimer: JavaScript nu are oficial clase (încă), dar are echivalentul logic. Din motive de simplitate, voi folosi terminologia "clasă" în acest tutorial.

Parse are cinci tipuri de clase.

  • Clasele utilizatorilor stochează informații specifice utilizatorului, iar Parse furnizează metode de zahăr, cum ar fi Inscrie-te(), Logare(), și mai mult pentru a ajuta la administrarea utilizatorilor.
  • Clase de instalare sunt de obicei utilizate pentru a trimite notificări push pentru aplicații mobile. Da, Parse acceptă notificări push tuturor clienților.
  • Clase de roluri ajuta la separarea utilizatorilor în roluri specifice, controlul accesului la citire / scriere în alte clase. Aceasta se numește ACL (lista de control al accesului) în Parse.
  • Clasele de produse stocați datele despre produse în aplicație.
  • Clase personalizate sunt pentru orice altceva.

Să creăm o clasă personalizată numită ListItem. Odată ce a fost creat, veți observa că are deja patru proprietăți. Parsează automat proprietățile fiecărei clase pe care o creați. Unele clase, cum ar fi clasele de utilizatori, pot avea propriile proprietăți specifice.

Al nostru ListItem obiectele vor conține o conţinut proprietate pentru a arăta ce conține Todo, și o este complet proprietate pentru a indica dacă Todo a fost terminat. Am putea adăuga coloane pentru aceste proprietăți, dar Parse o va da de la JSON.

Inițializarea parsei

Să ne întoarcem index.html pentru a adăuga un cod. Primul lucru pe care dorim să-l facem este să inițializăm Parse cu ID-ul de aplicație și cheia JavaScript. Acestea pot fi găsite în fila Prezentare generală a aplicației dvs. în cadrul browserului de date. Adăugați următoarea linie în JavaScript, înlocuind-o APP_ID și JS_KEY cu valorile corespunzătoare:

Parse.initialize (APP_ID, JS_KEY);

Salvarea Todos

Să începem să adăugăm funcționalitate aplicației noastre. Mai întâi vom salva un element de listă de sarcini când utilizatorul face clic pe butonul de adăugare. Următorul cod este tot ceea ce avem nevoie pentru această funcție:

submitBtn.on ('click', functie (e) // Extindeti clasa Parse.Object nativ var ListItem = Parse.Object.extend ("ListItem"); // Instantiate un obiect din clasa ListItem var listItem = new ListItem (); // listItem este acum obiectul pe care dorim sa-l salvam, asa ca atribuim proprietatilor pe care le dorim pe el. ListItem.set ("content", text); listItem.set ("isComplete", false); / / Success Callback, eroare: functie (gameScore, error) // Callback de apel (failback) ););

Interacțiunea cu baza de date este extrem de nedureroasă! Fiecare clasă personalizată din Parse moșteneste de la Parse.Object; prin urmare, ListItem este o subclasă. Argumentul șir "ListItem" spune Parse că această clasă se corelează cu tabela ListItem pe care am creat-o. Apoi vom crea un nou ListItem obiect, setați proprietățile sale și apelați Salvați().

Se afișează elementele

Pentru a afișa o listă cu elementele de rezolvat, vom folosi Parse JavaScript API pentru a interoga cele zece cele mai recent salvate elemente și pentru a le lista pe cele de mai jos. Acest lucru vă va oferi o idee despre modul în care interogările lucrează în Parse.

// Din nou, extindem clasa Parse.Object pentru a face lista ListItem ListItem = Parse.Object.extend ("ListItem"); // De data aceasta, folosim Parse.Query pentru a genera o interogare nouă, în mod special interogând tabela ListItem. interogare = Parse.Query nou (ListItem); // Am stabilit constrângeri în interogare. query.equalTo ('isComplete', false) query.limit = 10; query.descending ( 'createdAt'); // Transmitem interogarea și trecem în funcțiile de apel invers. query.find (success: function (results) // Succes callback, eroare: functie (eroare) // Error Callback);

Încă o dată, este destul de simplu și ușor de citit. Parse.Query () metoda este destul de puternică. Aici, efectuăm o interogare destul de fundamentală, dar interogările Parse pot fi și complexe. Puteți interoga expresii regulate specifice, puteți efectua interogări relaționale și multe altele. Asigurați-vă că vizitați documentația pentru interogări pentru mai multe exemple și fragmente de cod.

Punând totul împreună

Următorul lucru pe care trebuie să-l adăugăm este capacitatea de a marca un element de realizare ca fiind complet când verificați caseta de selectare a elementului. Fiecare casetă de selectare are un caracter unic id asociat cu obiectul Parse pe care îl reprezintă. Prin urmare, când se face clic pe o casetă de validare, trebuie să:

  • Obțineți id-ul.
  • Interogare pentru un obiect Parse cu acel id.
  • Obțineți obiectul returnat Parse și actualizați-l este complet proprietate ca Adevărat.
  • Salvați obiectul actualizat.
  • Eliminați-l din lista afișată.

Iată cum arată acest cod:

incompleteItemList.delegate ("faceți clic", funcția (e) // mențineți o referință la acest var var = acest lucru; // creați un obiect interogare Parse var query = new Parse.Query (ListItem); // query.get ( ) cere ca objectId ca primul argument sa returneze obiectul cu acel id interogare.get (self.one ('input')) get ('id'), success: function (item) // Obiectul este returnat, actualizam proprietatea si salvam elementul.set ('isComplete', true); item.save (); // Deoarece elementul nu mai este incomplet, il vom elimina din lista sam.remove ( ); // Dacă nu există nimic în listă, afișați un mesaj care să spună că lista este goală dacă (incompleteItemList.all ('li').) ()> = 1) noTasksMessage.removeClass ("ascuns" , eroare: funcție (obiect, eroare) alert ("Eroare la actualizarea elementului todo:" + error.code + "" + error.message););

În acest fragment, interogăm un element individual cu un anumit element id, actualizați-l și salvați-l. Apoi îl eliminăm din listă cu self.remove ().

În Parse, actualizarea obiectelor este foarte asemănătoare cu salvarea obiectelor - sunăm Salvați() în ambele cazuri. Parsează dacă este vorba despre un obiect existent (murdar) sau despre un obiect complet nou și efectuează acțiunea corespunzătoare.

Cod sursă complet

Cu asta, suntem bine să plecăm! Destul de ușor, nu? Descărcați fișierul ZIP atașat și deschideți-l index.html pentru a vedea întregul cod sursă.


Alte caracteristici

În acest tutorial, am analizat în primul rând Parse dintr-un punct de vedere al dezvoltării web. Cu toate acestea, serviciul a fost inițial inițiat de dezvoltatorii mobili în minte. Parse are un SDK foarte detaliat pentru Android și iOS și acceptă funcții cum ar fi notificările push tuturor utilizatorilor aplicației dvs. mobile.

Unele alte caracteristici mari pe care nu le-am acoperit în acest tutorial implică utilizatori, roluri și stocarea informațiilor relaționale.

Parsarea face relativ simplu crearea utilizatorilor și atribuirea unor roluri diferite acestora. De exemplu, într-un sistem de management al învățării, este posibil să aveți "Profesori", "Studenți" și "Administratori". Prin atribuirea de roluri, puteți specifica ce tip de utilizator are acces la anumite obiecte parse.


Cum rămâne cu securitatea?

O mulțime de tehnologii noi folosesc norul ...

Ca dezvoltator, îmi place că Parse are grijă de multe probleme de securitate pe care le am. După cum afirmă pe site, SDK-urile Parse sunt proiectate "astfel încât, de obicei, nu trebuie să vă faceți griji cu privire la modul în care sunt salvate datele". Există încă problema utilizatorilor care au acces la informații pe care nu ar trebui să le poată. Pentru a rezolva această problemă, Parse oferă permisiuni la nivel de obiect și la nivel de clasă.

Obiectivele la nivel de obiect permit unui dezvoltator să specifice o serie de ID-uri de obiect care au acces la citirea și / sau scrierea obiectului. Exemplurile la nivel de clasă permit unui dezvoltator să precizeze ce aspecte ale unei clase de parse pot fi manipulate de API. Următoarele operațiuni pot fi permise sau refuzate pe baza unei clase: Obțineți, găsiți, actualizați, creați, ștergeți și adăugați câmpuri.


Argumente pro şi contra

Vreau să subliniez că Parse nu este potrivit pentru orice tip de proiect. Deși planul gratuit este foarte generos, Parse este un serviciu plătit. Poate deveni scump dacă te duci peste anumite limite. Din fericire, modelul de tarifare este foarte transparent și ar trebui să știți cât de mult poate costa aplicația dvs. În general vorbind, o folosesc pentru proiecte mai mici, unde pot anticipa un anumit plafon atunci când vine vorba de numărul de cereri API pe care le fac. Încă nu am încercat Parse pentru un proiect mare.

O problemă comună cu un serviciu precum Parse este efectul de blocare.

Dacă utilizați Parse pentru un mic proiect care se scurge brusc, poate fi dificil să vă deplasați la un serviciu sau platformă de diferență. După cum vă puteți imagina, înlocuirea parsei cu propriul dvs. back-end ar presupune o cantitate semnificativă de refactorizări. Acest lucru nu înseamnă că nu ar trebui să utilizați Parse, dar este ceva de reținut.


Concluzii finale

În acest tutorial, ne-am uitat la modul în care putem folosi Parse pentru a crea o aplicație web relativ simplă. Am folosit acest serviciu pentru o serie de proiecte pentru diverși clienți și consider că echipa Parse este foarte utilă atunci când apar probleme. Vă încurajez să încercați serviciul și să faceți propria decizie!

Dezvăluirea: Nu am nicio relație cu Parse sau cu niciunul dintre angajații săi. Sunt doar un dezvoltator care utilizează serviciul lor și consider că este un plus de ajutor pentru fluxul meu de lucru pentru dezvoltare.

Cod