Ai fost vreodată încântat de ideea ta pentru un site web, dar te-ai găsit să devii mizerabil atunci când încerci să-l faci dinamic și de fapt să-l rulați pe un server?
Cu Parse.js, toți cei care înțeleg elementele de bază ale codului HTML, CSS și JavaScript pot crea site-uri dinamice și aplicații web de lucru. Acest tutorial vă va duce prin procesul de creare a unui sistem de blog pas cu pas cu Parse.js. Și până la sfârșitul acestei serii, ar trebui să puteți crea cu ușurință propriul site CMS.
În ultimele trei sesiuni, ați construit baza sistemului de bloguri. Ați creat o clasă Blog și o clasă de utilizatori pe Parse.com, faceți bloguri în partea frontală și ați activat conectarea utilizatorilor. Din această sesiune, vom construi diferite funcții ale panoului de administrare, începând cu "Adăugați un blog nou".
În primul rând, să pregătim un șablon HTML pentru acea pagină, astfel încât să avem ceva de jucat. Din nou, puteți utiliza elementele existente ale Bootstrap pentru a accelera procesul:
Adăugați asta la admin.html
.
Observați că facem un șablon, deși nu există valoare dinamică în acest moment. Fac asta pentru că:
EditBlogView
.Mergând, du-te la admin.js
și creați un nou Vizualizați: AddBlogView
. Putem să o păstrăm foarte puțin pentru moment, deoarece noi redăm șablonul:
var AddBlogView = Parse.View.extend (template: Handlebars.compile ($ ('add-tpl'). html ()), render: function () this. $ el.html (this.template ;);
Acum ce am făcut AddBlogView
, vrem să ne conectăm la acesta din panoul de administrare. Mergeți mai departe și adăugați un buton la WelcomeView
:
Apoi, trebuie să legați un eveniment la acel clic pe buton. De obicei, ai putea face ceva de genul ăsta în tine admin.js
:
$ ('. add-blog') la ('click', functie () // function);
Totuși, acest lucru nu este necesar atunci când utilizați Parse.js. Puteți adăuga un eveniment la un obiect Vizualizare și puteți lega o funcție ca aceasta:
WelcomeView = Parse.View.extend (template: Handlebars.compile ($ ('welcome-tpl'). Html ) alert ("Apăsat!");, ...),
Puteți încerca înainte de a merge mai departe:
Și acum putem schimba funcția pentru a face o nouă instanță de AddBlogView
.
adăugați: funcția () var addBlogView = new AddBlogView (); addBlogView.render (); $ ( 'Main-container.') Html (addBlogView.el).;
Se simte minunat.
Acum, tot ce aveți nevoie este să legați o funcție de butonul de trimitere de pe această pagină și să scrieți blogul în baza de date pe Parse.com.
Adăugați un eveniment de trimitere la dvs. AddBlogView
-nu este foarte diferit de evenimentul pe care tocmai l-am adăugat.
AdăugațiBlogView = Parse.View.extend (template: Handlebars.compile ($ ('add-tpl'). Html ()), evenimente: e) // trimite funcția merge aici., ...);
Apoi, pentru că încercăm să scriem în tabelul Blog pe Parse.com, trebuie să includem clasa Blog:
var Blog = Parse.Object.extend ("Blog");
După aceea, să adăugăm a crea()
funcția la clasa Blog, astfel încât să putem apela din orice obiect de vizualizare. Ar trebui să ia doi parametri, titlu
și conţinut
, și salvați-o în baza de date.
Parse.js a făcut-o foarte simplă. Odată ce a fost creată o nouă instanță a clasei Blog, putem să setăm valorile pe care le dorește să le aibă și să apeleze Salvați()
pentru ao salva în baza de date.
var Blog = Parse.Object.extend ('Blog', create: function (titlu, continut) this.set ('title': title, content: content, author: Parse.User.current ), salvați (null, succes: function (blog) alert ('Ați adăugat un nou blog:' + blog.get ('title')); log (blog); console.log (eroare);););
Sau puteți scrie și datele în Salvați()
funcţie:
var Blog = Parse.Object.extend ('Blog', create: function (titlu, continut) this.save ('title': title, content: content, author: Parse.User.current ), succes: function (blog) alert ('Ați adăugat un nou blog:' + blog.get ('title')); console.log (eroare);););
Ambele ar funcționa.
Observați că includ și eu autor
în baza de date cu Parse.User.current ()
. Aceasta este metoda pe care ar trebui să o utilizați pentru a vă conecta utilizatorul curent.
Acum, ca ultim pas pentru a face să funcționeze, trebuie să sunați blog.create ()
de la AddBlogView
tocmai am creat.
Să o adăugăm la a depune()
funcţie:
trimiteți: funcția (e) // Preveniți implicit Trimiteți evenimentul e.preventDefault (); // Luați formularul și puneți-l într-un obiect de date var data = $ (e.target) .serializeArray (), // Creați o nouă instanță a Blog blog = new Blog (); // apelați .create () blog.create (date [0] .value, date [1] .value);
Dați-i un test. Se pare că funcționează!
Și dacă o verificați pe Parse.com, veți vedea că este stocat în tabelul Blog.
Felicitări! Înscrieți în baza de date.
Acum, să aruncăm o privire la lista de bloguri din nou:
Veți observa că în locul numelui de utilizator afișăm ID-ul utilizatorului. Și nu arată momentul în care blogul este creat. Avem creat la
și updatedAt
valorile din spate, dar nu sunt foarte ușor de citit de către utilizator.
Dacă vrem să rezolvăm acest lucru, există două abordări generale:
Dacă luăm prima abordare, facem același lucru de mai multe ori, iar asta folosește timpul și resursele vizitatorului. Prin urmare, dorim să o facem în timp ce scriem în baza de date. Nu vă faceți griji despre lucruri precum "Ce se întâmplă dacă utilizatorul și-a schimbat numele?" totuși - putem întotdeauna să facem o actualizare de grup atunci când se întâmplă acest lucru.
Ar trebui să fiți foarte familiarizați cu acest proces acum. Să setăm numele și tipul celor două câmpuri după cum urmează:
numele autorului
(Şir)timp
(Şir)Apoi trebuie să modificați crea()
pentru a înregistra aceste valori:
acest nume ('title': title, 'content': content, 'autor': Parse.User.current (), 'authorName': Parse.User.current ': noua dată (). toDateString (), ...);
Observați că folosesc doar .toDateString ()
funcționează aici; puteți utiliza alte funcții de dată pentru a obține formatul de timp dorit.
În cele din urmă, să actualizăm # bloguri-TPL
în index.html
pentru a trage noile valori:
Acum puteți să ștergeți aceste postări existente și să adăugați ceva mai mult din noua pagină "Adăugarea unui blog nou".
Acum toate câmpurile ar trebui să funcționeze.
Pentru că noi folosim conţinut
în șablon, veți găsi că puteți pune deja etichete HTML în conținutul dvs. și se va face corect în partea din față. Cu toate acestea, majoritatea oamenilor, inclusiv mine, nu simt că este modul cel mai natural de a scrie un blog.
Vă voi arăta cum să adăugați un editor simplu WYSIWYG foarte repede, astfel încât să știți că este ușor de realizat.
Mai întâi, descărcați pluginul.
A fost actualizat deja, dar pentru scopul demo și tutorial, să folosim doar vechiul.
Dezarhivați fișierele, copiați-le /dist/bootstrap-wysihtml5-0.0.2.css
și puneți-o în dosarul CSS. În mod similar, copiați /dist/bootstrap-wysihtml5-0.0.2.min.js
și /lib/js/wysihtml5-0.3.0.min.js
în folderul JS.
Apoi, conectați aceste fișiere admin.html
:
...
Pentru a activa wysihtml5, tot ce trebuie să faceți este să apelați wysihtml5 ()
pe element. Să adăugăm doar la asta
face()
funcția în AddBlogView
:
render: funcția () this. $ el.html (this.template ()) find ('textarea') wysihtml5 ();
Apoi, în loc să obțineți textul simplu din serializeArray ()
funcția, putem obține codul HTML val ()
. Să schimbăm crea()
chemați să utilizați acest lucru:
blog.create (date [0] .value, $ ('textarea') val ());
Codul de aici este foarte simplu; nu ezitați să o modificați pentru a fi mai eficient dacă doriți. (Utilizați un nume de clasă ca selector, stoca $ ( 'Textarea')
ca variabilă etc.)
Acum, dacă actualizați și testați, ar trebui să lucrați deja!
Deoarece nu este în centrul acestui tutorial, mă voi opri aici. wysihtml5
oferă mai multe opțiuni dincolo de aceasta, deci aruncați o privire la aceste două repo-uri dacă sunteți interesat:
În această sesiune, ați permis utilizatorilor să adauge un nou blog. Ați pregătit o interfață de utilizator și l-ați conectat la baza de date back-end. De asemenea, ați adăugat mai multe câmpuri la clasa Blog, pentru a fi mai ușor de citit în listă. În sfârșit, ați implementat și un plugin WYSIWYG simplu. Cred că este o mulțime și, sperăm, că o simți și pe asta!
În următoarea sesiune, vom pune bazele unui panou administrativ mai funcțional. Veți învăța conceptul de router și veți fuziona index.html
și admin.html
într-una. Mai mult, vom scoate lista de bloguri în panoul de administrare, astfel încât utilizatorul le poate edita și șterge. Rămâneți aproape.