Differences

This shows you the differences between two versions of the page.

Link to this comparison view

moby:backend:02 [2020/07/20 17:23]
alexandru.hogea [Familiarizare NodeJS]
moby:backend:02 [2020/07/21 11:25] (current)
alexandru.hogea [Exercitii]
Line 15: Line 15:
 ===== Activitate Practica ===== ===== Activitate Practica =====
  
 +==== Comenzi utile de Git ====
 +<code git>
 +git clone https://​gitlab.com/<​your_project>​ - descarca proiectul cu tot istoricul modificarilor
 +git init - se initializeaza repo-ul local (se creaza folderul .git)
 +git remote add origin https://​gitlab.com/<​your_project>​ - daca aveti proiectul initializat local cu aceasta comanda il legati la repo-ul din cloud
 +git status - va arata cateva detalii despre modificarile curente, pe ce branch sunteti etc
 +git diff - va arata exact care sunt liniile de cod modificate
 +git add <​path_to_changes>​ - face ca fisierele modificate din locatia specificata sa fie incluse in urmatorul commit, puteti avea si expresii regulate pentru fiererele voastre (ex. * - include toate modicarile din proiect)
 +git reset <​path_to_changes>​ - face operatia inversa la add, va scoate modificarile de la fisire specificate
 +git commit -m "​SOMETHING"​ - adaugati un commit local cu modificarile puse la "git add" dinainte cu mesajul specificat (daca nu e folosit "​-m"​ va deschide un editor de fisier sa creati mesajul)
 +git branch <​branch>​ - creati un nou branch pornind de la commitul pe care va aflati local
 +git branch -d <​branch>​ - stergeti branch-ul specificat
 +git push -u origin <​branch>​ - trimiteti toate commiturile locale de pe un branch catre repo-ul din cloud
 +git pull origin <​branch>​ - va actualizeaza branch-ul local cu modificarile noi din cloud
 +git checkout -b origin/<​branch>​ - va mutati pe branch-ul specificat cu modificarile din cloud
 +git checkout -b <​branch>​ - va mutati pe branch-ul specificat cu modificarile locale
 +git merge <​branch>​ - se incearca aducerea modificarilor de pe branch-ul specificat pe branch-ul curent
 +git rebase <​branch>​ - mutati toate commit-urile in oridine cronologica de pe branch-ul curent pe cel specificat in comanda
 +git rebase <​destination_branch>​ <​source_branch>​ - mutati toate commit-urile in oridine cronologica de pe branch-ul surse pe cel destinatie
 +git stash - va salveaza modificarile curente si revine la starea ultimului commit, util daca vreti sa lucrati la alte lucruri dar nu ati teminat
 +git stash pop - va aplica modificarile la stash inapoi si le sterge din stocare temporara
 +git cherry-pick <​commit_hash>​ - va ia toate modificarile de la un anumit commit specificat prin hash-ul sau si le pune pe branch-ul curent
 +git rebase -i Head~<​N>​ - cu aceasta comanda puteti transforma ultimele N commituri intr-unul singur, in editorul care se deschite trebuie sa inlocuiti "​pick"​ cu "​squash"​ in afara de prima linie
 +</​code>​
 ==== HTTP Rest API ==== ==== HTTP Rest API ====
  
Line 142: Line 166:
  
 ==== Familiarizare NodeJS ==== ==== Familiarizare NodeJS ====
-==== Prezentare pe scurt ====+=== Prezentare pe scurt ===
 [[https://​nodejs.org/​en/​|NodeJS]] este un ecosistem de Javascript care permite folosirea limbajului Javascript pe partea de server. Este bazat pe motorul V8 de la Chrome, ruleaza pe un singur fir de executie si este **asincron**,​ utilizand o bucla de evenimente pentru a executa operatiile cat mai rapid. [[https://​nodejs.org/​en/​|NodeJS]] este un ecosistem de Javascript care permite folosirea limbajului Javascript pe partea de server. Este bazat pe motorul V8 de la Chrome, ruleaza pe un singur fir de executie si este **asincron**,​ utilizand o bucla de evenimente pentru a executa operatiile cat mai rapid.
-==== Structura unui proiect in NodeJS ​====+=== Structura unui proiect in NodeJS ===
  
-=== Module ​===+== Module ==
 Un proiect de Node este structurat in **module**. Fiecare fisier Javascript din componenta unui proiect este considerat un modul. Puteti sa faceti analogia cu fisierele **.c** din C sau cu **clasele** din Java. Un proiect de Node este structurat in **module**. Fiecare fisier Javascript din componenta unui proiect este considerat un modul. Puteti sa faceti analogia cu fisierele **.c** din C sau cu **clasele** din Java.
  
Line 190: Line 214:
 </​file>​ </​file>​
  
-=== Pachete ​===+== Pachete ==
  
 Asa cum in alte limbaje se pot folosi biblioteci externe pentru diverse functionalitati ce sunt deja implementate (exemplu, stdio.h in C pentru I/O) si in Node se pot folosi **pachete**. Asa cum in alte limbaje se pot folosi biblioteci externe pentru diverse functionalitati ce sunt deja implementate (exemplu, stdio.h in C pentru I/O) si in Node se pot folosi **pachete**.
Line 235: Line 259:
 </​note>​ </​note>​
  
-==== Rularea unui API ====+=== Rularea unui API ===
  
 Pentru a rula un API de Node, este nevoie sa definiti un fisier de start. Acest fisier trebuie sa includa apoi referinte catre celelalte fisiere ce fac parte din proiect, atat direct, cat si indirect (e.g. start face referire catre modulul 1 iar modulul 1 face referire catre modulul 2). Pentru a rula un API de Node, este nevoie sa definiti un fisier de start. Acest fisier trebuie sa includa apoi referinte catre celelalte fisiere ce fac parte din proiect, atat direct, cat si indirect (e.g. start face referire catre modulul 1 iar modulul 1 face referire catre modulul 2).
Line 259: Line 283:
   "​private":​ true,   "​private":​ true,
   "​scripts":​ {   "​scripts":​ {
-    "​start":​ "node start.js"​+    "​start":​ "​node ​start.js",​ 
 +    "​my-other-start":​ "​nodemon ​start.js"​
   },   },
   "​dependencies":​ {   "​dependencies":​ {
Line 273: Line 298:
 npm run start npm run start
 </​code>​ </​code>​
 +
 +<note tip>​Puteti sa adaugati oricate scripturi doriti in package.json,​ in sectiunea **scripts**. Pentru a rula un script definit, va trebui sa rulati comanda npm run, urmat de numele scriptului.</​note>​
  
 <​note>​ <​note>​
Line 278: Line 305:
 </​note>​ </​note>​
  
 +<​code>​
 +npm run my-other-start --> va rezulta in rularea folosind nodemon
 +</​code>​
 +=== Testarea unui API ===
  
 +Pentru a testa un API scris in Node, puteti sa folositi **cURL**, **wget** sau [[https://​www.postman.com/​|Postman]]. Noi va recomandam Postman, pentru ca ofera multe functionalitati utile, precum variabile de mediu, colectii, scripturi automate, etc...
 +
 +===== Exercitii =====
 +  * Creati-va un **grup** pe [[GitLab|https://​gitlab.com/​]]. Numiti-l cum vreti. Puteti sa il faceti public sau privat
 +  * Creati-va **5 repository-uri** in grup. 4 repository-uri vor contine cele 4 microservicii si un repository va avea rol de **monorepo**.
 +<note tip>Un **monorepo** tine referinta catre alte repository-uri. In el se pot stoca si configurari si fisiere de deployment.</​note>​
 +  * Pe repo-urile destinate microserviciilor protejati-va branchul **master**, incat sa fie accesibil doar prin **merge request**.
 +<note tip>//​Settings//​ -> //​Repository//​ -> //Protected Branches//</​note> ​
 +  * Creati-va inca un branch, de **test**. Puteti opta sa il protejati, sau nu, depinde de voi.
 +  * Clonati cele 4 repo-uri care vor tine microserviciile,​ pe calculator
 +  * Creati-va cate un proiect de NodeJS in fiecare repo si instalati urmatoarele pachete:
 +<​code>​
 +express
 +helmet
 +morgan
 +log-timestamp
 +express-async-errors
 +http-errors
 +axios
 +dotenv
 +</​code>​
 +  * Creati, in fiecare repo, fisierul **.gitignore** si puneti **node_modules** in **.gitignore**
 +  * Experimentati,​ cat mai mult, cu NodeJS si Express. Va recomandam sa creati rute folosind obiectul **[[https://​expressjs.com/​en/​guide/​routing.html|Router]]** din cadrul express.
moby/backend/02.1595254993.txt.gz · Last modified: 2020/07/20 17:23 by alexandru.hogea
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0