Komma igång med Parse

Jag är ett stort fan av Parse, en teknik som gör att web- och mobilappar utvecklas snabbare. Det låter dig lagra, synkronisera och trycka data i molnet utan att skriva en rad serverns kod. Läs vidare för att se hur du kan integrera Parse i ditt nästa projekt.


En bit av bakgrund

Att interagera med databasen är extremt smärtfri!

Låt oss ta ett steg tillbaka och utvärdera var webbutveckling var för fem år sedan. Vi använde språk som PHP / Ruby på back-end som interagerade med relationsdatabaser (till exempel MySQL), och vårt front-end var fylld med olika JavaScript-filer. Jag vet inte om dig, men de flesta av mina projekt var på en del server med en liten mängd diskutrymme, RAM och bandbredd.

Många nya tekniker utnyttjar molnet, och det är inte ovanligt att se utvecklare att utnyttja dessa kostnadseffektiva tjänster, såsom AWS, Amazon S3, Heroku och mycket mer. Introduktionen av dessa tjänster förändrade väsentligen webbutvecklingslandskapet; mer av vad vi bor finns i molnet.

Idag ska vi titta på Parse, en start som erbjuder ett molnbaserat datahanteringssystem. Genom att utnyttja sin tjänst kunde jag snabbt skapa nya mobil- och webapps. Vi kommer att använda Parse för att skapa den obligatoriska Tjänsteprogrammet, och jag hoppas att det ger dig en smak av vad tjänsten kan erbjuda.


Vad är Parse?

Enkelt uttryckt är Parse ett molnbaserat datahanteringssystem som gör att du snabbt kan utveckla webb- och mobilappar.

Det gör att utveckla appar verkligen lätt genom att ta back-end ur dina händer.

Så hur fungerar det här? Tja, låt oss anta att du är en webbutvecklare. Du kan lägga till Parse JavaScript-filen på din sida, få en API-nyckel och börja spara "objekt" i molnet med bara några rader av kod. Parse frigör dig från att konfigurera en server-sida stack.

Tänk på det här i en minut. Traditionellt skapar du en server-sidestack (LAMP, eller RoR, ASP.NET eller något annat), ställa in en databas och sedan interagera med den via Ajax på klienten. Parse bara reducerat allt som fungerar till några rader av kod.

I den här handledningen använder vi Parse's JavaScript SDK. Du är inte begränsad till att bara använda JavaScript, men; Det finns Parse-bibliotek på många olika språk, inklusive PHP, NodeJS, Java, C # och mer. Du hittar alla tillgängliga bibliotek här.


Använda Parse för dina webbaserade projekt

Innan vi börjar, låt oss ta en minut och tänka på hur en traditionell lista-app kan skapas med en LAMP-stack.

  • Du skulle skapa en MySQL-databas.
  • Du kan ha en PHP-klass som ansvarar för att utföra CRUD-operationer. Eventuellt kan du bara ha en massa PHP-funktioner.
  • Du kan använda JavaScript och Ajax på klientsidan för att ringa respektive PHP-skript och skicka in frågesträngar.
  • Du skulle behöva sanitera ingången för att skydda mot XSS-attacker, samt oroa dig för databas säkerhet i allmänhet.
  • Om en samarbetsapp skulle behöva spåra olika användare och hantera sina listor. Mer kod, fler bord och fler scheman.
  • Du måste se till att din databas blir effektiv.

Du får idén. Det finns mycket att tänka på och många områden att göra misstag. Parse hanterar dessa problem för oss.

Skapa ett Parse-konto

Innan du gör något, skapa ett gratis Parse-konto. Skapa sedan en ny app som heter EnvatoTodo.

Ladda ner det tomma projektet

Parse ger en bra QuickStart guide för att hjälpa dig att komma igång. Välj JavaScript och välj EnvatoTodo från rullgardinsmenyn i steg 2 (visas på bilden nedan). Parse genererar en zip-fil som innehåller Parse SDK och index.html.

Klientsidan

Innan vi börjar interagera med Parse, låt oss skapa en grundläggande klientsidestruktur för vår applikation. Eftersom användargränssnittet inte är fokus för denna applikation, visar jag bara koden som jag använde. Det är inget fint, men jag använder YUI3. Du kan eventuellt använda jQuery. Allt är i index.html.

   Todo App byggd på Parse          

Todo List byggd på Parse

Ofullständiga uppgifter

  • Det finns inga ofullständiga uppgifter! Överväg att lägga till en ovan.

Det viktiga att notera i ovanstående kod är införandet av Parse JavaScript-filen, . Den här filen innehåller det Parse-objekt som vi ska interagera med.

Lägg till klasser i databrowseren

Parse frigör dig från att konfigurera en server-sida stack.

Låt oss komma tillbaka till Parse. Visa databrowseren för EnvatoTodo (det är för tillfället tomt). Data Browser ligner en MySQL-databasserver, men Parse DB är schema-mindre. Medan du kan ange kolumner i Data Browser, kan du faktiskt spara ett objekt med enkel JSON (inte till skillnad från många NoSQL / Document databaser). Detta är en extremt viktig och användbar egenskap hos Parse.

Vi ska gå vidare och lägga till en "klass" i databasen. Tänk på en klass som ett bord. Anledningen till att det kallas en klass är att du generellt skapar objekt från en viss klass och sedan lagrar objektet i databasen.

Varning: JavaScript har inte officiellt klasser (ännu), men det har den logiska ekvivalenten. För enkelhets skull använder jag terminologin "klass" i denna handledning.

Parse har fem typer av klasser.

  • Användarkurser lagra användarspecifik information, och Parse ger sockermetoder som Bli Medlem(), logga in(), och mer för att hjälpa till med användaradministrationen.
  • Installationskurser används vanligtvis för att skicka push-meddelanden för mobilappar. Ja, Parse stöder push-meddelanden till alla klienter.
  • Rollklasser hjälpa segregera användarna till specifika roller, kontrollera tillgången till läsning / skrivning till andra klasser. Detta kallas ACL (Access Control List) inom Parse.
  • Produktklasser lagra produktdata i appen.
  • Anpassade klasser är för något annat.

Låt oss skapa en anpassad klass som heter Listobjekt. När det är skapat kommer du märka att det redan har fyra egenskaper. Parse uppdaterar automatiskt egenskaperna för varje klass du skapar. Vissa klasser, som användarklasser, kan ha sina egna specifika egenskaper.

Vår Listobjekt objekt kommer att innehålla en innehåll egenskap för att visa vad Todo innehåller, och en är komplett egenskap för att ange om Todo var färdig. Vi kunde lägga till kolumner för dessa egenskaper, men Parse kommer att räkna ut det från vår JSON.

Initialiserande Parse

Låt oss gå tillbaka till index.html att lägga till en kod Det första vi vill göra är att initiera Parse med vår App ID och JavaScript-nyckel. Dessa hittar du under fliken Översikt av din ansökan inuti Data Browser. Lägg till följande rad i din JavaScript, byta ut APP_ID och JS_KEY med lämpliga värden:

Parse.initialize (APP_ID, JS_KEY);

Sparar Todos

Låt oss börja lägga till funktionalitet till vår ansökan. Vi sparar först ett objekt för att göra-lista när användaren klickar på tilläggsknappen. Följande kod är allt vi behöver för denna funktion:

submitBtn.on ("click", function (e) // Utvid den inbyggda Parse.Object-klassen. var ListItem = Parse.Object.extend ("ListItem"); // Instantiate ett objekt i ListItem class var listItem = new ListItem (); // listItem är nu det objekt som vi vill spara, så vi tilldelar de egenskaper vi vill ha på den. ListItem.set ("content", text); listItem.set ("isComplete", false); // Vi ringer till spara-metoden och skickas framgångsrikt och misslyckas återuppringningsfunktioner. ListItem.save (null, framgång: funktion (objekt) // Succes Återuppringning, Fel: Funktion (SpelScore, Fel) ););

Att interagera med databasen är extremt smärtfri! Varje anpassad klass i Parse ärver från Parse.Object; därför, Listobjekt är en underklass. Strängargumentet "Listobjekt" berättar Parse att den här klassen hör ihop med ListItem-tabellen som vi skapade. Då skapar vi en ny Listobjekt objekt, ställa in dess egenskaper och ringa spara().

Visar objekt

För att visa en lista över Åtgärdsposter använder vi Parse JavaScript API för att fråga de tio senast sparade objekten och listar dem under appen. Detta ger dig en uppfattning om hur frågor fungerar i Parse.

// Återigen utvidgar vi klassen Parse.Object för att göra ListItem-klassen ListItem = Parse.Object.extend ("ListItem"); // Den här gången använder vi Parse.Query för att skapa en ny fråga, som specifikt frågar ListItem-tabellen. query = new Parse.Query (ListItem); // Vi ställer in begränsningar på frågan. query.equalTo ('isComplete', false) query.limit = 10; query.descending ( 'createdAt'); // Vi skickar frågan och skickar vidare till återuppringningsfunktionerna. query.find (framgång: funktion (resultat) // Succes återuppringning, fel: funktion (fel) // Fel återuppringning);

Återigen är det ganska enkelt och lätt att läsa. De Parse.Query () Metoden är ganska kraftfull. Här utför vi en ganska grundläggande fråga, men Parse-frågor kan också vara komplexa. Du kan fråga för specifika reguljära uttryck, utföra relationsfrågor och många fler. Var noga med att besöka frågedokumentationen för fler exempel och kodrapporter.

Få alltid att falla på plats

Nästa sak som vi behöver lägga till är möjligheten att markera en åtgärdsobjekt som komplett när du markerar kryssrutan för objektet. Varje kryssruta har en unik id associerad med Parse-objektet som det representerar. Därför, när en kryssruta är klickad måste vi:

  • Hämta id.
  • Fråga efter ett Parse-objekt med det id.
  • Få det returnerade Parse-objektet och uppdatera det är komplett egendom som Sann.
  • Spara det uppdaterade objektet.
  • Ta bort den från listan som visas.

Så här ser den här koden ut:

incompleteItemList.delegate ('klicka', funktion (e) // Håll en referens till detta var self = this; // skapa ett Parse query object var query = new Parse.Query (ListItem); // Query.get ) -metoden kräver objektId som sitt första argument. Det returnerar objektet med det id.query.get (self.one ('input'). få ('id'), framgång: funktion (item) // objektet returneras, vi uppdaterar egenskapen och sparar den. item.set ('isComplete', true); item.save (); // Eftersom objektet inte längre är ofullständigt tar vi bort det från listan. self.remove ); // Om det inte finns något i listan, visa ett meddelande om att listan är tom. Om (ofullständigItemLista.all ('li') .storlek ()> = 1) noTasksMessage.removeClass ('hidden'); , fel: funktion (objekt, fel) alert ("Fel vid uppdatering todo-objekt:" + error.code + "" + error.message););, 'li');

I det här formuläret frågar vi efter ett enskilt element med ett specifikt id, uppdatera det och spara det. Sedan tar vi bort det från listan med self.remove ().

I Parse är uppdateringsobjekt mycket lika att spara objekt - vi ringer spara() i båda fallen. Parse visar om det är ett befintligt (smutsigt) objekt, eller ett helt nytt objekt och utför lämplig åtgärd.

Komplett källkod

Med det är vi bra att gå! Ganska enkelt, va? Ladda ner den bifogade ZIP-filen och öppna index.html för att visa hela källkoden.


Andra funktioner

I denna handledning såg vi primärt på Parse från en webbutvecklingspunkt-of-view. Tjänsten startades dock ursprungligen med mobilutvecklare i åtanke. Parse har en mycket grundlig SDK för Android och iOS, och den stöder funktioner som push-meddelanden till alla användare av din mobilapp.

Några andra stora funktioner som vi inte täckte i denna handledning involverar användare, roller och lagrar relationsinformation.

Parse gör det relativt enkelt att skapa användare och tilldela olika roller till dem. I ett lärlingshanteringssystem kan du till exempel ha "lärare", "studenter" och "administratörer". Genom att tilldela roller kan du ange vilken typ av användare som har tillgång till vissa Parse-objekt.


Vad sägs om säkerhet?

Mycket ny teknik utnyttjar molnet ...

Som utvecklare tycker jag att Parse tar hand om en hel del säkerhetsproblem som jag har. Som det anges på webbplatsen är Parse-SDK: erna utformade "så att du vanligtvis inte behöver oroa dig för hur data sparas." Det är fortfarande problemet med användare som har tillgång till information som de inte borde kunna. För att hantera detta problem erbjuder Parse behörigheter på objektnivå och klassnivå.

Objektnivåbehörigheter tillåter en utvecklare att ange en rad objektobjekt som har åtkomst att läsa och / eller skriva objektet. Tillstånd på klassnivå tillåter en utvecklare att ange vilka aspekter av en Parse-klass som kan manipuleras från API: n. Följande operationer kan tillåtas eller nekas per klass: Få, Hitta, Uppdatera, Skapa, Radera och Lägg till Fält.


För-och nackdelar

Jag vill betona att Parse inte är lämplig för alla typer av projekt. Även om den fria planen är väldigt generös är Parse en betald tjänst. Det kan bli dyrt om du går över vissa gränser. Lyckligtvis är prissättningsmodellen mycket transparent, och du borde kunna räkna ut hur mycket din app kan kosta. Generellt sett använder jag det för mindre projekt där jag kan förutse en viss keps när det gäller antalet API-förfrågningar som jag gör. Jag har ännu inte försökt Parse för ett stort projekt.

Ett vanligt problem med en tjänst som Parse är låsningseffekten.

Om du använder Parse för ett litet projekt som plötsligt tar av, kan det vara svårt att flytta till en skillnadstjänst eller -plattform. Som du kan föreställa dig, ersätter Parse med ditt eget back-end en betydande mängd refactoring. Det betyder inte att du inte ska använda Parse, men det är något att tänka på.


Slutord

I denna handledning tittade vi på hur vi kan använda Parse för att skapa en relativt enkel webbapplikation. Jag har använt denna tjänst för ett antal projekt för olika kunder, och jag tycker att Parse-teamet är till stor hjälp när det uppstår problem. Jag uppmuntrar dig att ge tjänsten ett försök och fatta ditt eget beslut!

Upplysningar: Jag har inget förhållande till Parse eller någon av dess anställda. Jag är bara en utvecklare som använder sin tjänst, och jag tycker att det är ett användbart tillägg till min utvecklings arbetsflöde.