Firebase gebruiken met AngularJS

Firebase is een geweldige technologie waarmee we web-apps kunnen maken zonder server-side programmering, zodat de ontwikkeling sneller en eenvoudiger wordt. In dit artikel laat ik je zien hoe je het samen met AngularJS kunt gebruiken om de best mogelijke ontwikkelaar en gebruikerservaring te bereiken.

Wat is er zo geweldig aan het gebruik van Firebase met AngularJS? Nou, als je kijkt naar hoe beide technologieën zijn gemaakt, is er jouw antwoord. Bidirectionele databinding van AngularJS werkt uitzonderlijk goed met Firebase's "Sla niet alleen gegevens op." Synchroniseer het ook. filosofie.

De ontwikkeling gaat snel en de gebruikerservaring is geweldig: ze typen gewoon iets en het is al opgeslagen en beschikbaar voor de andere verbonden gebruikers.


Stap 1: De database instellen

Laten we beginnen met het maken van een database. Als je nog geen account hebt, maak er dan een aan (je kunt inloggen met GitHub!). Log dan in en maak een app door het formulier in te vullen en op de knop te klikken.

Aangezien we verderop een Facebook-login gebruiken, moet u de gegevens van uw Facebook-app (dat wil zeggen de app-ID en het app-geheim) opgeven in de opties van uw database. Klik op de knop 'Beheren' onder uw Firebase-appnaam en ga naar het tabblad 'Eenvoudige aanmelding'. Voer vervolgens de gevraagde informatie in en vink 'Ingeschakeld' aan.

Je zult ook je Facebook-app moeten configureren om het te laten werken. Het hele proces verloopt snel en wordt beschreven op de Firebase-website.


Stap 2: Een Angular-app instellen

Laten we beginnen met het maken van een basis-HTML en JavaScript voor onze app. We zullen een eenvoudige chattoepassing maken waarmee gebruikers kunnen inloggen met Facebook.

Maak een HTML-bestand en plaats deze op:

        
message.author: bericht tekst

Zoals je ziet, bevat het een paar scripts die we nodig hebben. Natuurlijk omvat het firebase.js en angularjs, en we hebben ook nodig firebase-simple-login.js voor de Facebook-authenticatie. angularfire.min.js bevat de AngularFire-module, die het werken met Firebase aanzienlijk vereenvoudigt.

Maak nu het angular.app.js bestand, waarin we onze toepassingslogica zullen plaatsen. Laten we beginnen met het declareren van de hoofdmodule, simpleChat:

var app = angular.module ('simpleChat', ['firebase']);

Zoals u kunt zien, is de enige afhankelijkheid de firebase module van AngularFire.


Stap 3: Eenvoudig inloggen

Laten we nu de code maken waarmee gebruikers kunnen inloggen met Facebook. Omdat onze app zo klein is, hebben we er maar één controller in: MessagesCtrl.

app.controller ('MessagesCtrl', ["$ scope", "$ firebase", function ($ scope, $ firebase) 

De $ firebase functie stelt ons in staat om verbinding te maken met de Firebase-database, en $ firebaseSimpleLogin zal de login dingen beheren.

We zullen een Firebase bijvoorbeeld, dus laten we het maken:

var ref = new Firebase ("https://tutssampleapp.firebaseio.com/);

Natuurlijk vervangen 'Your-unieke-url' met de URL van uw database. Bereid nu het login-object voor met behulp van $ firebaseSimpleLogin en de ref we hebben zojuist gemaakt:

$ scope.login = function () ref.authWithOAuthPopup ("facebook", functie (error, authData) ); 

En dat is zo ongeveer het verkrijgen van de login-status. Als de gebruiker is aangemeld, de $ scope.loginObj.user variabele bevat een object met de gegevens van de gebruiker; anders zal het zijn nul.

Voeg nu een toe

met onze controller en een knop om de gebruiker te laten inloggen op de hoofdtekst van uw pagina:

message.author: bericht tekst

We gebruikten de ngHide richtlijn om de knop te verbergen wanneer de gebruiker is aangemeld. Nu de $ Scope.login () methode zal gewoon een methode met dezelfde naam op de $ scope.loginObj:

$ scope.login = function () ref.authWithOAuthPopup ("facebook", functie (error, authData) ); 

De enige parameter die we hebben gebruikt, is de naam van de provider waarmee de gebruiker is aangemeld. U kunt uw app nu testen en de aanmeldknop moet verdwijnen wanneer u zich aanmeldt.


Stap 4: de berichten weergeven

Zoals je mag verwachten, zal dit ook vrij eenvoudig zijn. Laten we eerst de HTML voorbereiden. We zullen gebruiken ngRepeat om alle berichten door te lussen en ze weer te geven:

message.author: bericht tekst

Nu moeten we de controller updaten. Maak het obj variabele die het object dat wordt geretourneerd van Firebase houdt:

var obj = $ firebase (ref). $ asObject ();

De $ AsObject () methode converteert de hele verwijzing naar een Javascript-object met een paar bruikbare methoden. Degene die we zullen gebruiken, wordt genoemd .$ BindTo () en stelt ons in staat om een ​​driewegbinding te maken (Firebase-AngularJS-DOM):

obj. $ bindTo ($ scope, "data");

We zetten $ scope als de eerste parameter en de naam van een eigenschap als de tweede. Het object dat we binden, verschijnt in $ scope onder deze naam (als $ scope.data in dit voorbeeld).

En dat is alles wat u nodig hebt om de berichten weer te geven! Natuurlijk, tenzij je iets hebt geplaatst in de berichten array in uw database, u zult niets zien als u uw app nu uitvoert.


Stap 5: Berichten verzenden

Deze zal nog sneller zijn. Laten we een input toevoegen aan onze controller's div, zodat onze gebruikers berichten kunnen typen:

De waarde van de invoer zal worden gebonden aan de $ scope.newMessage.text variabele en zijn keyup evenement zal de $ Scope.handleKeyup () Bel terug. Merk op dat we geslaagd zijn $ event als de parameter, omdat we moeten controleren of de gebruiker op Enter heeft gedrukt.

Laten we het definiëren $ Scope.handleKeyup () functie:

$ scope.handleKeyup = function handleKeyup (e) 

Eerst controleren we of de Enter-toets is ingedrukt:

if (e.keyCode == 13) 

Als dit het geval is, voegen we de weergavenaam van de gebruiker toe aan de $ scope.newMessage object, werk het $ scope.data.messages array en reset de $ scope.newMessage voorwerp:

$ scope.newMessage.author = ref.getAuth (). facebook.displayName; ref.child ( "berichten") push ($ scope.newMessage).; $ scope.newMessage = ;

U moet ook het $ scope.newMessage voorwerp:

$ scope.newMessage = ;

Dat is het - ppen uw app in twee browsers (zodat u twee Facebook-accounts kunt gebruiken) en probeer het uit! Zoals gebruikelijk, laat eventuele vragen, opmerkingen en algemene feedback achter op het onderstaande formulier.