Informacije o kursu

Nivo:

Srednji

Početak:

17. April 2019

Trajanje:

3 mjeseca

Broj polaznika:

12

Prijave do:

9. April 2019.

Predavač:

Marko Roganović

Cijena:

Završen

Fullstack Development

Preuzmite plan kursa

Plan – Full-Stack Web Development

Ovaj kurs je za osobe koje imaju osnovno znanje fundamentalnog seta web tehnologija – HTML, CSS i JavaScript – koje zele da steknu znanje potrebno za razvoj web aplikacija end to end. U okviru ovog kursa bicete uvedeni u svijet server-side developmenta kroz Node.js i nadogradicete svoje znanje u izradi, front-end JavaScript aplikacija, kroz jednu od najpopularnijih biblioteka za izradu korisnickih interfejsa – React.js.

Kurs ce poceti od osnovnih stavki koje su potrebne za kasniju izradu naprednih back-end sistema. Od toga kako protokli na kojima internet bitise rade, pa do internih detalja skoro svih biblioteka i modula koje cemo koristiti tokom kursa.

Polaznici ce takodje dobiti priliku da nauce i prakticno primjene napredne stvari koje su dio samog JavaScript jezika, kao sto su:

  • Event loop
  • Closures
  • Prototypal inheritance
  • Async programming
  • Design patterns
  • Functional programming

Sto se tice samog back-end dijela, pocecemo sa istrazivanjem HTTP protokola, koristenjem native modula u Node.js-u koji sluze za TCP/IP networking, manipulaciju fajlovima, izvrsavanje komandi na OS-u, izradu malih command-line aplikacija. Nakon toga, pocecemo sa uvodom u Express, mikro framework na kojem je vecina Node.js aplikacija u produkciji bazirana, prvo cemo napraviti mini verziju slicnog frameworka da bi se lakse shvatilo sta se desava u pozadini i da bi se lakse preslo na detaljnije izucavanje rutiranja, middleware-a, logging-a, autorizacije i autentikacije, u kratko, svih komponentni koje bilo koji napredni back-end sistem mora da posjeduje.

Nezaobilazni dio back-end aplikacija su baze podataka, provescemo odredjeni vremenski period na izucavanje NoSQL baza podataka, konkretno MongoDB-a, kao i prednostima, ali i manama, koje NoSQL baze imaju u odnosu na SQL baze podataka.

Dobar dio kursa ce biti posvecen pravljenju login/registration funkcionalnosti, koristeci JSON Web Tokene (JWT). Takodje, vidjecemo kako se oni koriste za autentikaciju ne samo korisnikovog naloga, vec i za komunikaciju izmedju servera. Recimo komuniciranje sa 3rd party API-jem, kao sto je GitHub REST API.

Nakog gore navedenog sadrzaja, upoznacemo se sa izradom real-time aplikacija kroz WebSocket protokol. Ovaj protokol je ono sto pokrece vecinu chat aplikacija na internetu, azuriranje rezultata na online betting sajtovima, trgovinu akcijama (stock trading) preko interneta, kao i jos mnogim drugim aplikacijama koje iziskuju real-time komunikaciju.

Kao sto mozete da vidite, do sada nismo mnogo pominjali front-end dio, on sada stupa na scenu. Samim razvojem front-end tehnologija, to jeste, razvojem internet pretrazivaca kao sto su Chrome i Firefox, omoguceno je programerima da uklone ili migriraju logiku koja je potrebna za renderovanje (prikaz) aplikacije sa servera, na klijent.

To je omoguceno kroz razna poboljsanja engine-a koji su iza gore navedenih pretrazivaca, medjutim, ovaj pristup je donio i veliki broj novih izazova sa kojima su front-end developeri morali da se susretnu. Na nasu srecu, mi ne moramo da se bavimo tim stvarima, vec mozemo da se fokusiramo na izradu biznis logike nase aplikacije, jer su ljudi koji rade recimo u Facebooku proveli dosta vremena, analiziranja i testiranja pri izradi sopstvenih aplikacija da su bili u stanju da pronadju neke zajednicke cinioce vecine front-end aplikacija i razviju univerzalno resenje koje se moze iskoristiti u bilo kojoj aplikaciju koja ima korisnciki interfejs. Ovdje, se konkretno prica o React.js-u.

Ova biblioteka se sastoji od relativno malog seta funkcionalnosti, ali je njena moc u samoj implementaciji algoritama za jako performatno azuriranje interfejsa, to jeste, Document Object Modela (DOM-a).Dizajn pattern koji React ekstenzivno koristi su komponente, svaki dio interfejsa moze da se posmatra kao mala jedinica koja je zaduzena za prikaz i azuriranje samo jednog dijela interfejsa. I izradom ovakvih komponenti, koje su uglavnom nezavisne jedna od druge mozemo, da kazem, sklopiti aplikacije raznih velicina, oblika i kompleksnosti.

Vidjecemo kako mozemo iskoristi sve mogucnosti koje nam nudi pretrazivac za potpuno renderovanje aplikacije na klijentu, za upravljanjem podacima na klijentu i koristenjem servera kao izvorom podataka sa kojim cemo komunicirati koristeci AJAX i razmjenjivati podatke u JSON formatu.

Vidjecemo kako se rad sa formama razlikuje u React-u, od standardnog pristupa kroz JavaScript, kako da sinhronizujemo razne djelove aplikacije sa podacima koji se nalaze na jednom mjestu koristeci Context API, sa kojim React dolazi out of the box.Pokricemo funkcionalnost pretrazivaca koja se koristi za izradu rutiranja izmedju stranica bez potrebe za refresh stranice, sto korisniku daje look and feel native aplikacije.

Vidjecemo kako da optimizujemo performanse aplikacije koristeci lifecycle hook-ove sa kojima React dolazi po defaultu. Kako da koristimo neke napredne koncepte koji nisu dio React-a, ali su prihvaceni od React zajednice za redukciju potrebe za duplikaciju koda, kao i za izradu autentikacije i jos mnogih drugih funkcionalnosti koji se ocekuju od web aplikacije.

Kroz kurs ce biti pomenute i razne biblioteke koje sluze za state managment, jednostavnim jezikom – biblioteke koje nam omogucavaju da manipulisemo podacima, a sama biblioteka ce da se pobrine da svi podaci budu sinhronizovani sa interfejsom bez potrebe za pisanjem logike koja je potrebna da se to desi.

Konkretno, pomenucemo Redux I MobX, dvije biblioteke koje su u sustini apsolutno razlicite u nacinu na koji funkcionisu, ali se koriste za isti cilj, upravljanjem podacima na klijentu. One se ne moraju konkretno koristiti za izradu React aplikacija, vec se mogu koristiti za izradu aplikacija u bilo kom od front-end frameworka.

Nakon sto predjemo kroz gore navedeni sadrzaj, pokusacemo da primjenimo svo stektnuto znanje za izradu full-blown aplikacije koja ce omoguciti svim polaznicima da iskuse svaki dio development kruga od praznih foldera i fajlova do izbacanja koda na server i pokretanja aplikacije koja ce biti dostupna 24/7 i koju cete moci da podijelite sa svima. Jako je bitno napomenuti da je kurs prakticnog karaktera i da ima za cilj simulaciju real-world development workflow-a, kroz koristenje GitHub-a, pull requestova, automatizovanog deploymenta, kao i upoznavanje sa nekim od dijelova project managmenta.

Ostali kursevi