Har du noen gang blitt begeistret av ideen din for et nettsted, men fant deg selv å bli elendig når du prøver å gjøre den dynamisk og faktisk kjøre den på en server?
Med Parse.js kan alle som forstår grunnleggende om HTML, CSS og JavaScript, lage dynamiske nettsteder og arbeide med webapps. Denne opplæringen skal ta deg gjennom prosessen med å lage et bloggsystem trinnvis med Parse.js. Og i slutten av denne serien, bør du være i stand til å lage ditt eget CMS-nettsted med letthet.
I de siste tre øktene har du bygget grunnlaget for bloggsystemet. Du har opprettet en Blog-klasse og en brukerklasse på Parse.com, du gjør blogger i frontenden, og du aktiverte brukerinnlogging. Fra denne sesongen på, skal vi bygge ut forskjellige funksjoner i administrasjonspanelet, og begynne med "Legg til en ny blogg."
Første ting først, la oss lage en HTML-mal for den siden, slik at vi har noe å leke med. Igjen kan du bruke eksisterende elementer av Bootstrap for å øke hastigheten på prosessen:
Legg til det til admin.html
.
Legg merke til at vi gjør det til en mal, selv om det ikke er noen dynamisk verdi på dette punktet. Jeg gjør det fordi:
EditBlogView
.Fortsett, gå til admin.js
og opprett en ny visning: AddBlogView
. Vi kan holde det veldig minimalt for nå, siden vi bare gjengir malen:
var AddBlogView = Parse.View.extend (mal: Handlebars.compile ($ ('# add-tpl'). html ()), gjengi: funksjon () this. $ el.html (this.template ;);
Nå som vi har AddBlogView
, Vi vil koble til den fra administrasjonspanelet. Gå videre og legg til en knapp til WelcomeView
:
Og så må du binde en hendelse på den knappen klikker. Vanligvis kan du gjøre noe slikt i din admin.js
:
$ ('. add-blog'). på ('klikk', funksjon () // funksjon);
Det er imidlertid ikke nødvendig når du bruker Parse.js. Du kan bare legge til en hendelse i et visningsobjekt og binde en funksjon som denne:
WelcomeView = Parse.View.extend (mal: Handlebars.compile ($ ('# welcome-tpl'). Html ()), hendelser: 'klikk .add-blog': 'add', legg til: funksjon ) alert ('Clicked!');, ...),
Du kan prøve det før vi går videre:
Og nå kan vi endre funksjonen for å gjengi en ny forekomst av AddBlogView
.
legg til: funksjon () var addBlogView = new AddBlogView (); addBlogView.render (); $ ( 'Hoved-beholder.') Html (addBlogView.el.);
Føles fantastisk.
Nå er alt du trenger, å binde en funksjon til sende-knappen på denne siden og skrive bloggen til databasen din på Parse.com.
Legg til en sendehendelse til din AddBlogView
-Det er ikke veldig forskjellig fra klikkhendelsen vi nettopp har lagt til.
AddBlogView = Parse.View.extend (mal: Handlebars.compile ($ ('# add-tpl'). Html ()), hendelser: 'send .form-add': 'send', send: funksjon e) // sende funksjonen går her., ...);
Da, fordi vi prøver å skrive til Blog-tabellen på Parse.com, må vi inkludere Blog-klassen:
var Blog = Parse.Object.extend ('Blog');
Deretter la vi legge til en skape()
Fungerer til Blog-klassen, så vi kan ringe det fra et hvilket som helst visningsobjekt. Det bør ta to parametere, tittel
og innhold
, og lagre den i databasen.
Parse.js gjorde det veldig enkelt. Når en ny forekomst av Blog-klassen er opprettet, kan vi bare angi verdiene vi vil ha og ringe til lagre()
funksjon for å lagre den i databasen.
var Blog = Parse.Object.extend ('Blogg', opprett: funksjon (tittel, innhold) this.set ('title': title, 'content': innhold, 'author': Parse.User.current )). Lagre (null, suksess: funksjon (blogg) alert ('Du la til en ny blogg:' + blog.get ('title'));, feil: funksjon (blogg, feil) konsoll. logg (blogg); console.log (feil);););
Eller du kan også bare skrive dataene i lagre()
funksjon:
var Blog = Parse.Object.extend ('Blogg', opprett: funksjon (tittel, innhold) this.save ('title': title, 'content': innhold, 'author': Parse.User.current ), suksess: funksjon (blogg) alert ('Du la til en ny blogg:' + blog.get ('title'));, feil: funksjon (blogg, feil) console.log (blogg); console.log (feil);););
Begge ville fungere.
Legg merke til at jeg også inkluderer forfatter
i databasen med Parse.User.current ()
. Det er metoden du bør bruke for å få den nåværende brukeren logget inn.
Nå, som det siste skrittet for å få det til å fungere, må du ringe blog.create ()
fra AddBlogView
vi nettopp opprettet.
La oss legge den til i sende inn()
funksjon:
send inn: funksjon (e) // Forhindre Standard Send Event e.preventDefault (); // Ta skjemaet og sett det inn i et dataobjekt var data = $ (e.target) .serializeArray (), // Opprett en ny forekomst av Blog blog = ny blogg (); // Call .create () blog.create (data [0] .value, data [1] .value);
Gi det en prøvekjøring. Ser ut som det virker!
Og hvis du sjekker det på Parse.com, vil du se det er lagret i Blog-tabellen.
Gratulerer! Du skriver til databasen.
La oss nå se på blogglisten igjen:
Du vil merke at i stedet for brukernavnet viser vi bruker-IDen. Og vi viser ikke tiden da bloggen ble opprettet. Vi har createdAt
og updatedAt
verdier i bakenden, men de er ikke veldig lesbare for brukeren.
Hvis vi vil fikse det, er det to generelle tilnærminger:
Hvis vi tar den første tilnærmingen, gjør vi det samme igjen og igjen, og det bruker brukerens tid og ressurser. Derfor ønsker vi å gjøre det mens du skriver til databasen. Ikke bekymre deg om ting som "hva om brukeren endret navnet hans?" ennå - vi kan alltid gjøre en gruppeoppdatering når det skjer.
Du burde være veldig kjent med denne prosessen nå. La oss angi navnet og typen av de to feltene som følger:
author
(String)tid
(String)Da må du endre skape()
fungere for å registrere disse verdiene:
this.save (title]: title, 'content': innhold, 'author': Parse.User.current (), 'authorName': Parse.User.current (). get ('brukernavn'), 'tid ': ny dato (). toDateString (), ...);
Legg merke til at jeg bare bruker .toDateString ()
fungere her; Du kan bruke andre datoperasjoner for å få det tidsformatet du vil ha.
Til slutt, la oss oppdatere # blogger-tpl
i index.html
å trekke de nye verdiene:
Nå kan du slette de eksisterende innleggene, og legge til noe mer fra den nye siden "Legge til en ny blogg".
Nå skal alle feltene jobbe.
Fordi vi bruker innhold
I malen finner du at du allerede kan legge inn HTML-koder i innholdet ditt og det vil gjengis riktig i frontenden. Men de fleste, inkludert meg selv, føler ikke at det er den mest naturlige måten å skrive en blogg på.
Jeg vil vise deg hvordan du legger til en enkel WYSIWYG-editor veldig raskt, så du vet at det er lett å gjøre.
Først last ned pluginet.
Den har blitt oppdatert allerede, men for demo og opplæringsformål, la oss bare bruke den gamle.
Unzip filene, kopier /dist/bootstrap-wysihtml5-0.0.2.css
og legg den i CSS-mappen din. Tilsvarende, kopiere /dist/bootstrap-wysihtml5-0.0.2.min.js
og /lib/js/wysihtml5-0.3.0.min.js
inn i JS-mappen din.
Deretter kobler du disse filene inn admin.html
:
...
For å aktivere wysihtml5 er alt du trenger å ringe wysihtml5 ()
på element. La oss bare legge til det til
render ()
fungere i AddBlogView
:
gjengi: funksjon () this. $ el.html (this.template ()). finn ('textarea'). wysihtml5 ();
Deretter, i stedet for å få ren tekst fra serializeArray ()
funksjon, kan vi få HTML fra val ()
. La oss endre skape()
ring for å bruke det:
blog.create (data [0] .value, $ ('textarea') .val ());
Koden her er veldig enkel; gjerne endre det for å være mer effektivt hvis du vil. (Bruk et klassenavn som velg, lagre $ ( 'Textarea')
som en variabel, etc.)
Nå, hvis du oppdaterer og tester, bør det allerede fungere!
Som det ikke er fokuset på denne opplæringen, stopper jeg her. wysihtml5
tilbyr mange alternativer utover dette, så ta en titt på disse to reposene hvis du er interessert:
I denne sesjonen gjorde du det mulig for brukere å legge til en ny blogg. Du har utarbeidet et brukergrensesnitt, og koblet det til back-end-databasen. Du har også lagt til flere felt i Blog-klassen, så det er mer lesbart i listen. Til slutt implementerte du også et enkelt WYSIWYG-plugin. Jeg tror det er mye, og forhåpentligvis føler du det på denne måten også!
I neste sesjon legger vi grunnlaget for et mer funksjonelt administrasjonspanel. Du vil lære begrepet en ruteren, og du vil slå sammen index.html
og admin.html
inn i en. Videre vil vi sende ut blogglisten i administrasjonspanelet, slik at brukeren kan redigere og slette dem. Følg med.