Komme i gang med parse

Jeg er en stor fan av Parse, en teknologi som gjør utviklingen av web- og mobilapper raskere. Den lar deg lagre, synkronisere og skyve data i skyen uten å skrive en linje med server-side-kode. Les videre for å se hvordan du kan integrere Parse i ditt neste prosjekt.


Litt av bakgrunn

Interaksjon med databasen er ekstremt smertefri!

La oss ta et skritt tilbake og vurdere hvor webutvikling var for fem år siden. Vi brukte språk som PHP / Ruby på back-end som interagerte med relasjonsdatabaser (for eksempel MySQL), og vår forside var fulle av forskjellige JavaScript-filer. Jeg vet ikke om deg, men de fleste av prosjektene mine var på noen server med en liten mengde diskplass, RAM og båndbredde.

Mange nye teknologier utnytter skyen, og det er ikke uvanlig å se utviklere dra nytte av disse kostnadseffektive tjenestene, som AWS, Amazon S3, Heroku og mer. Innføringen av disse tjenestene forandret i hovedsak webutviklingslandskapet; mer av det vi gjør ligger i skyen.

I dag skal vi se på Parse, en oppstart som tilbyr et skybasert datahåndteringssystem. Ved å utnytte sin tjeneste, kunne jeg raskt lage nye mobil- og webapps. Vi skal bruke Parse til å lage det obligatoriske Toll-programmet, og jeg håper det gir deg en smak av hva tjenesten kan tilby.


Hva er Parse?

Enkelt sagt, Parse er et skybasert datahåndteringssystem som lar deg raskt utvikle web- og mobilapper.

Det gjør utvikler apps egentlig lett ved å ta back-enden ut av hendene dine.

Så, hvordan fungerer dette? Vel, la oss anta at du er en webutvikler. Du kan legge til Parse JavaScript-filen på siden din, få en API-nøkkel, og begynn å lagre "objekter" i skyen med bare noen få linjer med kode. Parse frigjør deg fra å sette opp en server-side stabel.

Tenk på dette i et øyeblikk. Tradisjonelt sett konfigurerer du en server-side stabel (LAMP, eller RoR, ASP.NET eller noe annet), sett opp en database, og deretter samhandle med den via Ajax på klienten. Parse bare redusert alt som fungerer til noen få linjer med kode.

I denne opplæringen bruker vi Parse's JavaScript SDK. Du er ikke begrenset til å bruke bare JavaScript, men; Det finnes Parse-biblioteker på mange forskjellige språk, inkludert PHP, NodeJS, Java, C # og mer. Du finner alle tilgjengelige biblioteker her.


Bruke Parse for dine web-baserte prosjekter

Før vi begynner, la oss ta et øyeblikk og tenk hvordan en tradisjonell Tøyliste-app kunne opprettes ved hjelp av en LAMP-stabel.

  • Du vil opprette en MySQL-database.
  • Du kan ha en PHP-klasse som er ansvarlig for å utføre CRUD-operasjoner. Eventuelt kan du bare ha en haug med PHP-funksjoner.
  • Du kan bruke JavaScript og Ajax på klientsiden for å ringe de respektive PHP-skriptene og sende inn spørringsstrenger.
  • Du trenger å sanitere inngangen for å beskytte mot XSS-angrep, samt bekymre deg for databasesikkerhet generelt.
  • Hvis en samarbeidende app, må du spore forskjellige brukere og administrere sine lister. Mer kode, flere tabeller og flere skjemaer.
  • Du må sørge for at databasen forblir effektiv.

Du får ideen. Det er mye å tenke på og mange områder å gjøre feil. Parse håndterer disse problemene for oss.

Opprett en Parse-konto

Før du gjør noe, opprett en gratis Parse-konto. Deretter oppretter du en ny app kalt EnvatoTodo.

Last ned det tomme prosjektet

Parse gir en flott QuickStart-guide for å hjelpe deg med å komme i gang. Velg JavaScript og velg EnvatoTodo fra rullegardinmenyen i trinn 2 (vist på bildet nedenfor). Parse genererer en zip-fil som inneholder Parse SDK og index.html.

Klientsiden

Før vi begynner å samhandle med Parse, la oss sette opp en grunnleggende klientsidestruktur for applikasjonen vår. Siden brukergrensesnittet ikke er fokuset på denne applikasjonen, viser jeg bare koden jeg brukte. Det er ikke noe fancy, men jeg bruker YUI3. Du kan eventuelt bruke jQuery. Alt er i index.html.

   Todo App Bygget på Parse          

Todo List bygget på Parse

Ufullstendige oppgaver

  • Det er ingen ufullstendige oppgaver! Vurder å legge til en over.

Det viktige å merke seg i koden ovenfor er inkluderingen av Parse JavaScript-filen, . Denne filen inneholder Parse-objektet som vi skal samhandle med.

Legg til klasser i databrowseren

Parse frigjør deg fra å sette opp en server-side stabel.

La oss komme tilbake til Parse. Se databrowseren for EnvatoTodo (den er tom for øyeblikket). Databrowseren ligner en MySQL-databaseserver, men Parse DB er skjema-mindre. Mens du kan angi kolonner i databrowseren, kan du faktisk lagre et objekt med enkel JSON (ikke i motsetning til mange NoSQL / Document-databaser). Dette er en ekstremt viktig og nyttig funksjon av Parse.

Vi skal fortsette og legge til en "klasse" i databasen. Tenk på en klasse som et bord. Grunnen til at den kalles en klasse er fordi du vanligvis lager objekter fra en bestemt klasse og deretter lagrer objektet i databasen.

Ansvarsfraskrivelse: JavaScript har ikke offisielt klasser (ennå), men det har den logiske ekvivalenten. For enkelhets skyld vil jeg bruke terminologien "klasse" i denne opplæringen.

Parse har fem typer klasser.

  • Brukerklasser lagre brukerspesifikke opplysninger, og Parse gir sukkermetoder som melde deg på(), Logg Inn(), og mer for å hjelpe med brukeradministrasjon.
  • Installasjonsklasser Brukes vanligvis til å sende push-varsler til mobilapper. Ja, Parse støtter push notifications til alle klienter.
  • Roller klasser hjelpe segregere brukere til bestemte roller, kontrollere tilgang til å lese / skrive til andre klasser. Dette kalles ACL (tilgangskontrollliste) innenfor Parse.
  • Produktklasser lagre produktdata i appen.
  • Egendefinerte klasser er for noe annet.

La oss lage en tilpasset klasse som heter listitem. Når den er opprettet, vil du legge merke til at den allerede har fire egenskaper. Parse oppdaterer automatisk egenskapene til hver klasse du lager. Noen klasser, som brukerklasser, kan ha sine egne spesifikke egenskaper.

Våre listitem objekter vil inneholde en innhold eiendom for å vise hva Todo inneholder, og en er ferdig eiendom for å indikere om Todo var ferdig. Vi kan legge til kolonner for disse egenskapene, men Parse vil finne ut det fra vår JSON.

Initialiserer Parse

La oss gå tilbake til index.html å legge til noen kode. Det første vi ønsker å gjøre er å initialisere Parse med vår App ID og JavaScript-nøkkel. Disse finner du under oversikt-fanen i søknaden din i databrowseren. Legg til følgende linje på JavaScript, og erstatt APP_ID og JS_KEY med de riktige verdiene:

Parse.initialize (APP_ID, JS_KEY);

Lagre Todos

La oss begynne å legge til funksjonalitet i vår søknad. Vi lagrer først en gjøremålsliste når brukeren klikker på add-knappen. Følgende kode er alt vi trenger for denne funksjonaliteten:

submitBtn.on ('klikk', funksjon (e) // Utvid den opprinnelige Parse.Object-klassen. var ListItem = Parse.Object.extend ("ListItem"); // Instant et objekt av ListItem-klassen var listItem = nytt ListItem (); // listItem er nå objektet som vi vil lagre, så vi tilordner egenskapene vi ønsker på den. ListItem.set ("content", text); listItem.set ("isComplete", false); // Vi kalle lagre-metoden, og bestå i suksess og mislykkes tilbakekallingsfunksjoner. ListItem.save (null, suksess: funksjon (element) // Suksess tilbakeringing, feil: funksjon (gameScore, feil) // Feil tilbakeringing ););

Interaksjon med databasen er ekstremt smertefri! Hver tilpasset klasse i Parse arver fra Parse.Object; derfor, listitem er en underklasse. Strengen argumentet "Listitem" forteller Parse at denne klassen korrelerer med ListItem-tabellen som vi opprettet. Deretter oppretter vi en ny listitem objekt, angi egenskaper og ring lagre().

Viser elementer

For å vise en liste over ting å gjøre, bruker vi Parse JavaScript API for å søke etter de ti sist lagrede elementene, og oppgi dem under appen. Dette vil gi deg en ide om hvordan spørringer jobber i Parse.

// Vi utvider igjen Parse.Object-klassen for å lage ListItem-klassen ListItem = Parse.Object.extend ("ListItem"); // Denne gangen bruker vi Parse.Query til å generere en ny spørring, spesielt etterspørsel av ListItem-tabellen. query = new Parse.Query (ListItem); // Vi stiller begrensninger på spørringen. query.equalTo ('isComplete', false) query.limit = 10; query.descending ( 'createdAt'); // Vi sender forespørselen og sender inn tilbakeringingsfunksjoner. query.find (suksess: funksjon (resultater) // Suksess tilbakeringing, feil: funksjon (feil) // Feil tilbakeringing);

Igjen er det ganske enkelt og lett å lese. De Parse.Query () Metoden er ganske kraftig. Her utfører vi en ganske enkel spørring, men Parse-spørringer kan også være komplekse. Du kan søke etter bestemte regulære uttrykk, utføre relasjonelle spørringer, og mange flere. Sørg for å besøke spørringsdokumentasjonen for flere eksempler og kodestykker.

Sette alt sammen

Den neste tingen vi må legge til, er muligheten til å merke en gjøremål som komplett når du merker av for avmerkingsboksen. Hver avkrysningsboks har en unik id knyttet til Parse-objektet som det representerer. Derfor, når en avkrysningsboks er klikket, må vi:

  • Få id.
  • Søke etter et Parse-objekt med det id.
  • Få det returnerte Parse-objektet, og oppdater det er ferdig eiendom som ekte.
  • Lagre det oppdaterte objektet.
  • Fjern den fra listen som vises.

Slik ser den koden ut:

incompleteItemList.delegate ('klikk', funksjon (e) // hold en referanse til dette var self = this; // opprett et Parse query-objekt var query = new Parse.Query (ListItem); // Query.get ) -metoden krever objektId som det første argumentet. Det returnerer objektet med det id.query.get (self.one ('input'). få ('id'), suksess: funksjon (element) // Når objektet er returnert, vi oppdaterer eiendommen og lagrer det. item.set ('isComplete', true); item.save (); // Siden varen ikke lenger er ufullstendig, fjerner vi den fra listen. self.remove ); // Hvis det ikke er noe i listen, vis en melding om at listen er tom. Hvis (incompleteItemList.all ('li') .størrelse ()> = 1) noTasksMessage.removeClass ('hidden'); , feil: funksjon (objekt, feil) alarm ("Feil ved oppdatering todo element:" + error.code + "" + error.message););, 'li');

I denne brikken spør vi om et enkelt element med en bestemt id, oppdater det og lagre det. Da fjerner vi det fra listen med self.remove ().

I Parse er oppdatering av objekter svært likt å lagre objekter - vi ringer lagre() i begge tilfeller. Parse viser om det er et eksisterende (skittent) objekt, eller et helt nytt objekt, og utfører den aktuelle handlingen.

Komplett kildekode

Med det er vi gode å gå! Ganske enkelt, eh? Last ned vedlagte ZIP-filen og åpne index.html for å vise hele kildekoden.


Andre funksjoner

I denne opplæringen så vi primært på Parse fra et webutviklingspunktspunkt. Tjenesten ble imidlertid opprinnelig startet med mobile utviklere i tankene. Parse har en veldig grundig SDK for Android og iOS, og den støtter funksjoner som push notifications til alle brukere av mobilappen din.

Noen andre store funksjoner som vi ikke dekker i denne opplæringen, involverer brukere, roller og lagrer relasjonsinformasjon.

Parse gjør det relativt enkelt å opprette brukere, og tilordne forskjellige roller til dem. For eksempel, i et læringsstyringssystem, kan du ha "lærere", "studenter" og "administratorer". Ved å tilordne roller kan du spesifisere hvilken type bruker som har tilgang til visse Parse-objekter.


Hva med sikkerhet?

Mange nye teknologier utnytter skyen ...

Som utvikler liker jeg at Parse tar vare på mange sikkerhetsproblemer jeg har. Som det står på nettstedet, er Parse SDKene designet "slik at du vanligvis ikke trenger å bekymre deg for hvordan data blir lagret." Det er fortsatt spørsmålet om at brukere har tilgang til informasjon som de ikke bør kunne. For å løse dette problemet tilbyr Parse Objektnivå- og Klassenivå-tillatelser.

Objektnivårettigheter tillater en utvikler å spesifisere en rekke objekt-IDer som har tilgang til å lese og / eller skrive objektet. Tillatelser på klassenivå lar en utvikler angi hvilke aspekter av en Parse-klasse som kan manipuleres fra API-en. Følgende operasjoner kan tillates eller nektes på grunnlag av klassen: Få, Finn, Oppdater, Opprett, Slett og legg til felt.


Fordeler og ulemper

Jeg vil understreke at Parse ikke passer for alle typer prosjekter. Selv om den frie planen er veldig generøs, er Parse en betalt tjeneste. Det kan bli dyrt hvis du går over bestemte grenser. Heldigvis er prismodellen veldig gjennomsiktig, og du bør kunne finne ut hvor mye appen din kan koste. Generelt bruker jeg det til mindre prosjekter der jeg kan forutse en viss cap når det gjelder antall API-forespørsler jeg lager. Jeg har ennå ikke prøvd Parse for et stort prosjekt.

Et vanlig problem med en tjeneste som Parse er innlåsingseffekten.

Hvis du bruker Parse for et lite prosjekt som plutselig tar av, kan det være vanskelig å flytte til en forskjellstjeneste eller -plattform. Som du kan forestille deg, vil erstatning av Parse med din egen back-end medføre en betydelig mengde refactoring. Dette betyr ikke at du ikke bør bruke Parse, men det er noe å huske på.


Avsluttende kommentarer

I denne opplæringen så vi på hvordan vi kan bruke Parse til å lage et relativt enkelt webprogram. Jeg har brukt denne tjenesten til en rekke prosjekter for ulike klienter, og jeg finner Parse-teamet til å være svært nyttig når det oppstår problemer. Jeg oppfordrer deg til å gi tjenesten en prøve, og ta din egen beslutning!

Opplysning: Jeg har ingen sammenheng med Parse eller noen av sine ansatte. Jeg er bare en utvikler som bruker sin tjeneste, og jeg synes det er et nyttig tillegg til utviklingsarbeidet.