Sunday, November 12, 2023

Od haosa do jasnoće, objašnjenje strukture Laravel projekta

Laravel je popularni PHP radni okvir za razvoj veb aplikacija koji se ističe svojom elegantnom sintaksom, obiljem alatki i moćnim funkcijama. Pre nego što pređete na studiranje ovog posta; obavezno prvo pogledajte uvod i instalaciju Laravel radnog okvira; pogledajte ovde; zatim se upoznajte na čemu se temelji Laravel radni okvir; pogledajte ovde; pa tek onda se vratite na ovaj post da se upoznate i sa strukturom foldera i datoteka. Tako da i pre neko što praktično počnete da koristite Laravel radni okvir; otklonite zbunjenost, neznanje i nejasnoće. Sve što vam nije jasno i pre kodiranja neophodno je da razjasnite sami sebi. Svaki profesionalan programer, svaki svoj projekat započinje pravim pitanjima. Tako ponašanje će vam u svakom slučaju uštedeti mnogo izazova i vremena. Kada kreirate novi Laravel projekat, radni okvir automatski generiše osnovnu strukturu direktorijuma i datoteka koja vam pomaže da organizujete i razvijate svoju veb aplikaciju na efikasan način. U ovom tekstu ćemo istražiti osnovnu strukturu Laravel projekta, razmatrajući glavne direktorijume i datoteke sa kojima ćete se sresti kad god započinjete novi projekat u ovom efikasno organizovanom Laravel  radnom okviru. U zavisnosti od verzije Laravel  radnog okvira; Laravel vam pruža jasnu i dobro organizovanu strukturu projekta koja olakšava razvoj i održavanje veb aplikacija. Razumevanje svih ovih direktorijuma i datoteka je ključno za efikasan razvoj u Laravel radnom okviru. Kroz ovu osnovnu strukturu, možete lako organizovati svoj kôd i razvijati visokokvalitetne veb aplikacije. Zato ćemo prvo pogledati foldere koje su se kreirali kada smo započeli novi Laravel projekat.


( Razumevanje strukture Laravel projekta je od ključnog značaja za razvoj projekta )

Pokrenite vaš terminal, izvršite update i upgrade vašeg Linux operativnog sistema, zatim sa vašeg home direktorijuma skočite na /opt/lampp/ i pokrenite XAMPP menadžer; sledećom Linux  komandom.
 
sudo ./manager-linux-x64.run

Otvoriće vam se XAMPP menadžer; i kroz njega pokrenute Apache Web Server i MySQL Database. Ovo ćete da uvek radite kada kreirate ili otvarate već gotov Laravel projekat. Zatim pokrenite Visual Studio Code i u njemu otvorite folder laravel_tutorial koji ćete pronaći u direktorijumu /opt/lampp/htdocs/ i otkucajte sledeću Linux komandu u Terminal panelu Visual Studio Code-a :

php artisan serve

Na Terminal panelu će vam se prikazati:

 INFO  Server running on [http://127.0.0.1:8000]   

Press Ctrl+C to stop the server

Sad proverite u pretraživaču da li je vaš projekat pokrenut na lokalnom serveru i portu 8000. Ukoliko je sve u redu, vratite se sa pretraživača na Visual Studio Code; i sa vaše leve strane koncentrišite se na Explorer panel. Dobro pogledajte da li vaš Laravel projekat sadrži sledeće osnovne foldere: 

app

bootstrap

config

database

public

resources

routes

storage

tests

vendor

Starije verzije Laravel radnog okvira, uglavnom sadrže iste foldere, osim folder database. Ukoliko pogledate neki Laravel  projekat na GIT hubu; onda verovatno nećete videti ni folder vendor jer ga GIT sa razlogom ignoriše; jer očekuje da se na udaljenim serverima izvršava Composer radni okvir kao deo procesa implementacije. Sve u svemu pogledajte čemu služe osnovni folderi koji čine Laravel projekat.

Osnovni folderi u Laravel projektu

app

Ovaj direktorijum sadrži srž vaše Laravel aplikacije i većinu stvari koju budete kreirali u vašoj aplikaciji će se upravo nalaziti u ovom direktorijumu. Kad otvorite ovaj direktorijum u njemu ćete pronaći i druge foldere kao što su Console, Exceptions, Http, Models i Providers. U navedene foldere ćete smeštati vaše kontrolere, rute, i razne komponente koje koristite za izgradnju vaše aplikacije. U njima će se nalaziti i PHP kôd domena koje će vaša aplikacija koristiti.

bootstrap

Ovaj direktorijum sadrži fajlove koje Laravel radni okvir pokreće kad god se pokreće, posebno datoteke koji pomažu u inicijalizaciji Laravel aplikacije. Na primer, datoteka app.php se koristi za učitavanje osnovnih komponenti aplikacije.

config

Ovo je direktorijum za sve konfiguracione datoteke koje vaš Laravel projekat sadrži. U ovom direktorijumu ćete pronaći konfiguracione datoteke koje omogućavaju podešavanje različitih aspekata vaše aplikacije. Ovde možete konfigurisati bazu podataka, sesije, i mnoge druge opcije.

database

Kao što smo već naveli, ovaj direktorijum ne postoji u starijim verzijama Laravel radnog okvira. Ovaj direktorijum je posvećen bazi podataka. Folder factories se koristi za definisanje factories - fabrika koje generišu test podatke za bazu podataka. Laravel pruža moćan alat za testiranje aplikacija, a fabrike su deo ovog alata. Folder migrations sadrži skripte za migraciju baze podataka, dok  folder seeds sadrži podatke za punjenje baze podacima testa.

public

Sve datoteke koje su javno dostupne putem veba smeštene su u public direktorijumu. Ovo je folder na koji server ukazuje kad opslužuje veb sajt. Ovo uključuje slike, CSS datoteke, JavaScript fajlove i druge resurse. Uz to, u ovom direktorijumu se nalazi i datoteka index.php, što je prednji kontroler odgovoran za pokretanje procesa i usmeravanje svih zahteva na odgovarajući način.

resources

U ovom direktorijumu se nalaze datoteke koje su potrebne za druge skripte, datoteke koje se koriste za izradu korisničkog interfejsa vaše aplikacije. Na primer; folder views sadrži Blade predloške za HTML prikaz, dok js i css folderi mogu sadržavati CSS i JavaScript datoteke. U starijoj verziji Laravel radnog okvira ove datoteke su se smeštale u assets folder.

routes

Sve rute koje definišete za vašu aplikaciju smeštene su u routes direktorijumu. Ovde se nalaze datoteke za definisanje veb i API ruta. U njemu se smeštaju sve definicije HTTP rute, rute konzole i Artisan komande.

storage

Ovaj direktorijum se koristi za smeštanje privremenih datoteka i zapisa, kao i za čuvanje logova i drugi aplikacijski datoteka koje ne bi trebalo biti dostupne javno preko veba; poput evidencije i kompajlirani sistemskih datoteka.

tests

Možda vama ovo izgleda kao običan direktorijum za testove, međutim Laravel se ponosi svojim ugrađenim alatima za testiranje. Ovaj direktorijum sadrži datoteke za testove i čitave biblioteke koje vam pomažu u osiguravanju kvaliteta vaše aplikacije.

vendor

Ovde u ovom direktorijumu se nalaze zavisnosti i biblioteke koje se instaliraju putem Composer alata. Kao što smo već naveli, ovaj direktorijum se ignoriše kad ga stavljate na GIT hub.

Datoteke u glavnom direktorijumu

Ako pogledate glavni ili osnovni direktorijum vašeg Laravel projekta, u njemu ćete videti nekoliko datoteka koje pored navedenih foldera takođe imaju svoju bitnu svrhu.

.editorconfig – daje uputstva Laravel-ovom IDE - integranisanom razvojnom okruženju-u, uređivaču teksta o standardima za kodiranje

.env – sadrži informacije o bazi podataka, ključevi za enkripciju, i druge konfiguracije. Ova datoteka se obično ne sme čuvati u sistemu upravljanja verzijama i mora se pravilno zaštiti. GIT ovu datoteku ignoriše.

.envexample - ovo je primer datoteke .env, šablon; datoteka koja se koristi za pružanje uputstava o tome koje promenljive treba postaviti u .env datoteci. Ova datoteka obično sadrži samo ključeve bez vrednosti. Nju GIT takođe ignoriše.

.gitattributes – datoteka se koristi za definisanje pravila i postavki za rad sa GIT repozitorijumom, kao što su podešavanje eol - end-of-line konverzije i slično.

.gitignore - služi za definisanje liste datoteka i direktorijuma koji se ne smeju pratiti i uključivati u GIT. To je korisno za izbegavanje dodavanja privremenih datoteka, direktorijuma sa zavisnostima i drugih generisanih sadržaja u repozitorijum.

artisan – ova datoteka vam omogućava da pokrenete Artisan komande iz komandne linije. Ova datoteka se takođe koristi za izvođenje različitih zadataka, kao što su izvođenje migracija, generisanje kôda i upravljanje aplikacijom.

composer.json i composer.lock - ove datoteke se koriste za upravljanje zavisnostima i paketima u vašem Laravel projektu pomoću Composer alata. composer.json sadrži definicije zavisnosti, dok composer.lock čuva informacije o konkretnim verzijama paketa koje su instalirane u projektu.

package.json – ova datoteka nije deo osnovne Laravel strukture, već se obično koristi u kombinaciji sa front-end tehnologijama kao što su JavaScript i CSS za upravljanje zavisnostima i konfiguracijom za tehnologije kao što su NPM - Node Package Manager i Yarn. U ovoj datoteci možete definisati sve JavaScript biblioteke i alate koje vaša aplikacija koristi, kao i skripte za izvršavanje različitih zadataka tokom razvoja, kao što su kompilacija i minimizacija JavaScript i CSS datoteka, optimizacija slika i mnoge druge operacije.

phpunit.xml - prilikom izvođenja testova u Laravel projektu, PHPUnit koristi konfiguracije definisane u ovoj datoteci kako bi pravilno izvršio testove i generisao izveštaje o rezultatima. Ova datoteka igra ključnu ulogu u procesu testiranja Laravel aplikacija i omogućava programerima da lako konfigurišu i izvrše testove za svoj kôd.

README.md - je datoteka od suštinskog značaja za dokumentovanje vašeg projekta i olakšava saradnju sa drugim programerima i timskim članovima. Takođe pomaže drugim osobama da brže razumeju i koriste vaš projekat. Markdown format je popularan za pisanje README datoteka jer omogućava da se tekst formatira na jednostavan način, uključujući dodavanje naslova, liste, slika i druge formatiranje elemenata. Ako ste koristili Laravel-ovu instalacionu datoteku za instaliranje projekta, verovatno ovu datoteku nećete ni videti u projektu.

vite.config.js - nije standardna datoteka u Laravel strukturi projekta. Umesto toga, ova datoteka se obično koristi u kombinaciji s Vite, koji je brz alat za razvoj front-end-a i koji se često koristi za kompilaciju JavaScript i CSS datoteka u Laravel projektima. Vite je posebno popularan u Laravel ekosistemu zbog svoje brzine i jednostavnosti korišćenja.

Ukoliko ste prostudirali sva tri zadnja posta ili lekcije ovog tutorijala, onda ste spremni da zakoračite u praktični deo razvoja projekata u Laravel radnom okviru od sledeće lekcije.

 

 

 

No comments:

Post a Comment