7 ključeva za strukturiranje vaše aplikacije Node.js

Rahul Mhatre je tehnički arhitekt u tvrtki Built.io.

Node.js brzo sustiže Java, Ruby, Python i .Net kao preferirani jezik za razvoj novih web aplikacija. Tim Node.js čini JavaScript radno vrijeme boljim, bržim i stabilnijim svakim danom. I zajednica korisnika ubrzano raste.

Kako će usvajanje i dalje rasti, sve će se više programera penjati po krivulji učenja Node.js, suočavajući se sa sličnim problemima i kodirajući slične funkcionalnosti. Srećom, zajednica Node.js priskočila je u pomoć s okvirima i uzorcima dizajna koji ne samo da rješavaju uobičajene probleme, već pomažu i u strukturiranju aplikacija.

Okviri obično implementiraju MV obrasce poput MVC (model-view-control), MVVM (model-view-viewmodel), MVP (model-view-prezenter) ili samo MV. Također vam govore gdje bi trebao biti kôd za modele, poglede i kontrolere, gdje bi trebale biti vaše rute i gdje biste trebali dodati svoje konfiguracije. Mnogi mladi programeri i entuzijasti Node.js-a zapravo ne razumiju kako se uzorci dizajna ili OOP (objektno orijentirano programiranje) dijagrami preslikavaju na linije ili strukturu koda u njihovoj aplikaciji.

Tu dolaze Node.js okviri poput Express.js i Sails.js. Ovi i mnogi drugi dostupni su kako bi pomogli pokrenuti razvoj web aplikacija. Bez obzira na okvir koji koristite, morat ćete imati na umu određena razmatranja prilikom strukturiranja svoje aplikacije.

Evo sedam ključnih točaka o kojima razmišljam prije mapiranja aplikacije Node.js.

1. Ispravna struktura direktorija za aplikaciju

Dok odlučujete o strukturi direktorija za svoju aplikaciju, trebali biste razmotriti obrazac dizajna koji ste odabrali. To će vam pomoći brže u vezi s pronalaženjem koda i izoliranjem problema. Osobno preferiram upotrebu MVC uzorka tijekom dizajniranja aplikacije Node.js. Pomaže mi u bržem razvoju, pruža fleksibilnost za stvaranje više pogleda za iste podatke i omogućava asinkronu komunikaciju i izolaciju između MVC komponenata, da nabrojimo samo neke.

Volim slijediti gornju strukturu direktorija koja se temelji na kombinaciji Ruby on Rails i Express.js.

Povezani videozapis: Savjeti i trikovi za Node.js

U ovom videu s objašnjenjima naučite nekoliko tehnika koje mogu poboljšati vaše iskustvo razvoja Nodea.

2. Mapiranje ER dijagrama na modele

Kako je definirano u Techopediji, "Dijagram odnosa entiteta (ERD) je tehnika modeliranja podataka koja grafički ilustrira entitete informacijskog sustava i odnose između tih entiteta." ER dijagram opisuje različite entitete koji će sudjelovati u našem sustavu i definira sve interakcije između njih tako da:

  • Sve što je apstraktna ili fizička "stvar" postaje entitet u modelu
  • Model se preslikava na tablicu unutar naše baze podataka
  • Atribut ili svojstvo entiteta prevodi se u atribut modela, koji je pak stupac unutar tablice

Na primjer, ako je vaš entitet korisnik, tada bi odgovarajući model bio "Korisnik" s atributima kao što su ime, prezime i adresa unutar baze podataka, kao i odgovarajuća tablica i stupci.

Korištenjem jednostavne podatkovne arhitekture prilično je jednostavno pratiti vašu bazu podataka i rast datoteka svaki put kad se stvori nova shema.

3. Korištenje MVP uzorka

Implementacija MVC-a ne znači samo stvaranje mapa za kontrolere, poglede i modele. Također morate podijeliti svoj kod i logiku prema MVC-u. Kôd unutar vaših modela trebao bi biti strogo ograničen na definicije sheme baze podataka. Programeri uglavnom zaboravljaju da će modeli također imati kod koji će izvoditi CRUD operacije. Također, svaka funkcija ili operacija koja je specifična za taj model trebala bi biti prisutna unutar ove datoteke. Većina poslovne logike povezane s modelom trebala bi biti u ovoj datoteci.

Česta pogreška je bacanje sve poslovne logike u kontrolere. Kontrolori bi trebali pozivati ​​funkcije samo s modela ili drugih komponenata, prenositi podatke između komponenata i kontrolirati tijek zahtjeva, dok mapa pogleda treba imati samo kôd za pretvaranje objekata u oblik čitljiv za ljude. U prikazu se ne smije raditi logika poput formatiranja podataka ili sortiranja ili filtriranja. Održavanje pogleda čistim ne samo da će pružiti bolje korisničko iskustvo, već će vam pomoći i da promijenite poglede bez mijenjanja bilo koje druge komponente.

4. Razbijanje logike na module

Kao programerima, uvijek nam se govori da bismo trebali organizirati kôd u datoteke i module. To ne znači da bismo trebali pokušati uklopiti cijelu aplikaciju u jednu datoteku. Dijeljenje koda na temelju logike i funkcionalnosti je najbolji pristup. Grupiranje funkcija povezanih s jednim entitetom ili objektom u jednu datoteku i organiziranje strukture direktorija na temelju logike ima brojne prednosti. Prvo, uštedjet će puno vremena pri određivanju funkcije koju treba dodirnuti kad se mora ispraviti greška. Drugo, pomaže razdvojiti sve komponente u arhitekturi, olakšavajući zamjenu diskretnih funkcionalnosti bez potrebe za izmjenom bilo kojih drugih redaka koda. Treće, pomoći će i u pisanju testnih slučajeva.

5. Važnost test slučajeva

Vrlo je važno nikada ne rezati kutove prilikom izrade test slučajeva - testovi su čuvari vaše baze koda. Kako vaša aplikacija raste, sve je teže zapamtiti sve scenarije koje morate pokriti dok kodirate. Test slučajevi pomažu vam u održavanju stabilnosti baze koda. Testiranje sprečava regresiju, štedeći dragocjeno vrijeme i trud. Pomaže vam da osigurate da se nove značajke guraju bez pogrešaka. Također pomaže poboljšati kvalitetu koda hvatanjem programskih pogrešaka prije nego što krenu u proizvodnju. I što je najvažnije, testiranje pomaže uliti povjerenje da se kod neće srušiti.

6. Važnost trupaca

Dnevnici su korisni za otklanjanje pogrešaka i razumijevanje stanja vaše aplikacije. Pružaju dragocjene uvide u ponašanje aplikacije. Evo kratkog popisa stvari koje morate imati na umu prilikom iskorištavanja dnevnika:

  • Pronađite pravi balans što se tiče bilježenja. Imati "previše informacija" nikad nije loše, ali pretjerano prijavljivanje samo će vam otežati posao. Igle je lakše pronaći u manjim plastovima sijena. S druge strane, nedovoljno prijavljivanje rezultirat će premalo informacija dostupnih za otklanjanje pogrešaka ili dijagnosticiranje.
  • Podijelite svoje izvanmrežne i mrežne zapisnike, pri čemu se najnoviji zapisnici čuvaju za brzo pronalaženje i obradu, dok se stariji zapisnici arhiviraju ili izbacuju u datoteke.
  • Uzmite u obzir učestalost i trajanje vaših dnevnika jer će to utjecati na količinu pohrane koja će vam trebati. Većina puta koja vam je potrebna za pohranu i broj zapisnika koji imate imate izravno su proporcionalni.

I ne zaboravite, nemojte bilježiti osjetljive podatke kao što su ID-ovi e-pošte, lozinke, podaci o kreditnoj kartici i telefonski brojevi. To nije samo veliki sigurnosni rizik, već je često i nezakonit.

7. Hoće li se skala primjene?

Najgori pristup razvoju aplikacija je razmišljati o tome kako skalirati nakon što dobijete promet. Umjesto toga, trebali biste izgraditi arhitekturu koja od početka može rasti kako bi uštedjela vrijeme i povećala produktivnost.

Okretanje poslužitelja nije skaliranje; raspodjela tereta po resursima je. To ne znači da ne biste trebali stvarati nove poslužitelje kad se opterećenje poveća. Prvo biste trebali postaviti balansiranje opterećenja unutar svojih trenutnih resursa kako biste podnijeli povećano opterećenje. Kada uravnoteženje opterećenja ne može učinkovito upravljati radnim opterećenjem, vrijeme je da započnemo s horizontalnim skaliranjem i stvorimo nove poslužitelje. To možete postići neovisnim postupkom bez državljanstva ili putem modula. Svaki će postupak ili modul raditi na izoliran, neovisan način. To ne samo da će učinkovito pomoći vašem skaliranju aplikacija, već će vaš sistem učiniti otpornim na kvarove i lako ga oporaviti.

Način strukturiranja web aplikacije jednako je važan kao i odabir prave tehnologije. Ako su temelji neispravni, aplikacija će se na kraju srušiti ili će odbiti skaliranje, ili u nekim slučajevima uopće neće uspjeti. Nikada nemojte žuriti s razvojem novih značajki ili novih ideja bez odgovarajućeg planiranja i arhitekture. Loša struktura ili arhitektura je poput vremenske bombe koja otkucava čeka da eksplodira.

New Tech Forum pruža mjesto za istraživanje i raspravu o novonastaloj tehnologiji poduzeća u neviđenoj dubini i širini. Izbor je subjektivan, zasnovan na našem odabiru tehnologija za koje vjerujemo da su važne i da najviše zanimaju čitatelje. ne prihvaća marketinške kolaterale za objavljivanje i zadržava pravo uređivanja cjelokupnog sadržaja. Pošaljite sve upite na [email protected]