Ievads NodeJs

nodejs
javascript
serveris
Ievads NodeJs cover image

Ievads

Mēģinot uzzināt par tīmekli

izstrāde, mēs parasti atklājam, ka priekšgals ir ievērojami pieejamāks nekā aizmugure. Tam ir daudz iemeslu, jo īpaši tūlītējas atsauksmes sajūta, kas rodas, mainot noteiktu lapas elementu kodā un pamanot izmaiņas, kas tiek piemērotas vietnei. Šīs atsauksmes bieži vien ir noderīgas iesācējiem, jo ​​tās ļauj pielāgot savu kodu un mācīties no kļūdām. Diemžēl aizmugursistēmas gadījumā tas tā nav: bieži vien ievērojams darba apjoms tiek veltīts vides iepriekšējai iestatīšanai un nepieciešamo atkarību instalēšanai, lai terminālī tiktu parādīts vienkāršs ziņojums “Hello World”. Par laimi, atvērtā pirmkoda kopienā tiek panākts liels progress, lai atvieglotu ietvaru izstrādes procesu, un NodeJs ir labs piemērs tam. Šī sistēma ir ļoti spējīga tehnoloģija, kas ļauj rakstīt servera pusē Javascript kods ir ērts un piedāvā dažādus iebūvētus rīkus un funkcijas, kas to atšķir no konkurentiem. Šajā rakstā mēs izpētīsim NodeJ un tā ekosistēmu, izmantojot praktisku pieeju, veidojot pilnībā funkcionējošu projektu.

Ko mēs būvēsim?

ToDo lietojumprogrammas ir iesācējiem paredzēts projekts, kas mācās priekšgala izstrādi. Tāpēc mēs nolēmām izveidot uzdevumu saraksta API. Tas ļaus mums pievienot datu noturību mūsu saskarnei un sniegs mums iespēju manipulēt ar šiem datiem (pievienojot, atjauninot, dzēšot uzdevumus utt.).

Galīgo kodu var atrast šeit.

Mūsu rīki

Šim projektam mēs izmantosim vienkāršotu tehnoloģiju kopumu. To var uzskatīt par minimālu versiju daudziem rīkiem, kurus jūs atradīsit reālās dzīves projektos, jo augstāka līmeņa idejas ir vienādas. Sīkāka informācija par ieviešanu un konkrēta rīka izvēli salīdzinājumā ar citu nav svarīga, lai sāktu darbu.

  • NodeJs, kā jau minējām, ir viens no populārākajiem Javascript ietvariem servera puses lietojumprogrammu veidošanai.

  • ExpressJs ir minimāls Javascript ietvars, ko izmanto papildus NodeJS. Tas paātrina izstrādes procesu, izmantojot daudzas iebūvētās funkcijas. Tas tiek izmantots arī kā veids, kā standartizēt izstrādes praksi NodeJS projektos, lai atvieglotu tā izmantošanu inženieriem.

  • LowDB ir vienkārša datu bāze atmiņā. Tā vienkāršība ļauj mums parādīt, kā mijiedarboties ar datu bāzi NodeJs projektā, nerisinot sarežģītākus priekšmetus, piemēram, izvietošanu un konfigurāciju.

Tagad, kad esam identificējuši visus rīkus, kurus izmantosim, pāriesim pie mūsu tastatūrām un sāksim kodēt!

Uzstādīšana

Node ir pieejams visās platformās. Visas instalēšanas rokasgrāmatas ir atrodamas oficiālajā vietnē. Windows lietotājiem noteikti ir jāpievieno mezgls ceļš uz vides mainīgajiem, lai to varētu izmantot komandrindā.

Mums būs jāinstalē arī npm. Npm ir standarta pakotņu pārvaldnieks NodeJs. Tas ļaus mums pārvaldīt mūsu projektu atkarības. Instalēšanas rokasgrāmatu var atrast šeit.

Projekta inicializācija

Dodieties uz saiti un klonējiet sākuma projektu:

Šī ir vienkārša mūsu projekta sākuma repozitorija. Tajā ir visas atkarības, kuras mēs izmantosim kopā ar projekta faila struktūru. Mēs izskaidrosim katru elementu, kad tas būs sasniegts. Atveriet savu termināli, dodieties uz projekta ceļu un palaidiet komandu:

npm install

Tādējādi tiks instalētas visas failā package.json norādītās projekta atkarības. Package.json ir fails, kas atrodas jebkura Javascript/NodeJs projekta saknē, tajā ir metadati par pēdējo un tiek izmantots, lai pārvaldītu visas projekta atkarības, skriptus un versijas.

Kad visas atkarības ir instalētas, mēs varam palaist mūsu lietojumprogrammu:

npm run start

“sākt” ir skripts, ko mēs norādījām pakotnē. json failu. Tas norāda mūsu lietojumprogrammas ievades failu, kas mūsu gadījumā ir app.js.

Tagad jūsu terminālī jāparādās šādam ziņojumam:

nodejs_1

Tas nozīmē, ka mūsu serveris ir veiksmīgi startējis un uzklausa visus pieprasījumus, kas nosūtīti uz portu 3000. Apskatīsim app.js un paskaidrosim, kas šeit notiek:

nodejs_2

App.js ir mūsu projekta ievades fails (un šobrīd vienīgais). Mēs izveidojam ātro lietojumprogrammu ar nosaukumu app, norādām, ka visi pieprasījumi, kuriem ir http metode “GET” un apakšceļš “/”, tiks apstrādāti šajā maršrutā, tiek nodoti funkcijai, ko sauc par starpprogrammatūru, kas uztver pieprasījuma un atbildes objektu kā parametrus. Tas ir ļoti svarīgi, jo pieprasījums satur visu tā apstrādei nepieciešamo informāciju (parametri, pieprasījuma pamatteksts, pieprasījuma galvenes utt.), un atbildes objekts ir tas, kas tiks atgriezts klientam. Mēs sākam, vienkārši nosūtot ziņojumu “Sveika pasaule”. Pēc tam mēs liekam lietojumprogrammai noklausīties visus ienākošos pieprasījumus norādītajā portā (mūsu gadījumā 3000) un reģistrēt ziņojumu “Listening to port 3000”, lai norādītu, ka mūsu lietojumprogramma ir izveidota un darbojas un gatava saņemt pieprasījumus.

Atveriet savu termināli un saišu joslā ierakstiet “localhost:3000/” un nospiediet taustiņu Enter. Šis ir norādītais ceļš, ko varam izmantot, lai lokāli sasniegtu mūsu serveri. Jūs saņemsiet šādu ziņojumu:

nodejs_3

Datu bāzes konfigurācija

Lowdb ir atvērtā pirmkoda datu bāze, kuru ir viegli lietot, un tai nav nepieciešama īpaša iestatīšana. Vispārējā ideja ir saglabāt visus datus vietējā json failā. Pēc LowDB instalēšanas (kas tika darīts, instalējot visas atkarības), mēs varam pievienot šādu kodu db.js:

nodejs_4

Šis kods ir diezgan līdzīgs tam, kas atrodams LowDB oficiālajā dokumentācijā. Mēs to nedaudz pielāgojām mūsu pašu lietošanai. Paskaidrosim to rindiņu pa rindiņai:

Pirmās dažas rindiņas ir paredzētas nepieciešamo atkarību importēšanai. “join” ir utilīta funkcija, kas pieejama modulī “path”. Tas ir viens no galvenajiem NodeJ moduļiem, kas piedāvā daudzas metodes ceļu apstrādei un apstrādei. “Low” un “JSONFile” ir divas klases, kuras atklāj LowDB. Pirmajā tiek izveidots json faila gadījums, kurā būs mūsu dati. Otrais izveido faktisko datu bāzes gadījumu, kas uz to darbosies. Visbeidzot, “lodash” ir viena no visbiežāk izmantotajām JavaScript bibliotēkām, kas piedāvā plašu utilītu funkciju klāstu parastajiem programmēšanas uzdevumiem. Mēs to pievienojam mūsu datu bāzes eksemplāram, lai mēs varētu izmantot tās uzlabotās metodes savu datu apstrādei.

Pirmkārt, mēs norādām failu db.json ceļu. Tas ir fails, kurā būs mūsu dati, un tas tiks nodots LowDB. Ja fails nav atrasts norādītajā ceļā, LowDB to izveidos.

Pēc tam mēs nododam faila ceļu LowDB adapterim un nododam to mūsu jaunajai LowDB datu bāzes instancei. Pēc tam mainīgo “db” var izmantot, lai sazinātos ar mūsu datu bāzi. Kad datu bāzes gadījums ir izveidots, mēs nolasām no JSON faila, izmantojot db.read(). Tādējādi mūsu datu bāzes instancē tiks iestatīts lauks “dati”, lai mēs varētu piekļūt datu bāzes saturam. Ņemiet vērā, ka pirms šīs rindas mēs ievadījām “gaidi”. Tas ir paredzēts, lai norādītu, ka šīs instrukcijas atrisināšana var aizņemt nezināmu laiku un ka NodeJ procesam ir jāgaida tā izpilde, pirms turpināt darbu ar pārējo kodu. Mēs to darām, jo ​​lasīšanas darbībai ir nepieciešama atmiņas piekļuve norādītajam failam, un laiks, kas nepieciešams šāda veida darbības izpildei, ir atkarīgs no jūsu iekārtas specifikācijām.

Tagad, kad mums ir piekļuve datu laukam, mēs to iestatām kā objektu, kurā ir tukšs ziņu masīvs, vai drīzāk mēs pārbaudām, vai failā ir kādi iepriekšējie dati, un iestatām tukšu masīvu, ja tas tā nav.

Visbeidzot, mēs izpildām db.write(), lai lietotu datos veiktās modifikācijas, un eksportējam datu bāzes gadījumu, lai to varētu izmantot citos mūsu projekta failos.

Vispārējā pieprasījuma/atbildes darbplūsma

Apsveriet šādu diagrammu:

nodejs_5

Tas parāda vispārējo arhitektūru, kas tiek izmantota daudzās aizmugursistēmas lietojumprogrammās, kas izveidotas, izmantojot NodeJs/Express. Izpratne par pieprasījuma apstrādes vispārējo darbplūsmu ne tikai ļaus jums izveidot un strukturēt NodeJ lietojumprogrammas, bet arī pārsūtīt šīs koncepcijas praktiski jebkurā jūsu izvēlētā tehniskajā kaudzē. Mēs izpētīsim dažādus slāņus, kas traucē šo procesu, un izskaidrosim to lomas:

## HTTP pieprasījuma slānis

Šis ir pirmais slānis mūsu lietojumprogrammā. Iedomājieties to kā vārteju, kas saņem plašu dažādu pieprasījumu klāstu no dažādiem klientiem, katrs pieprasījums pēc tam tiek analizēts un pārsūtīts uz tam paredzēto lietojumprogrammas daļu, lai tas tiktu apstrādāts.

  • Maršrutētāji: šeit mēs runājam par Express maršrutētājiem, taču šo jēdzienu var atrast daudzos aizmugursistēmas ietvaros. Maršrutētāji ir veids, kā mūsu kodam piemērot mūsu biznesa loģikas loģisko sadalījumu, kas nozīmē, ka katra elementu kopa, kurai ir līdzīgas funkcijas, tiek apstrādāta ar vienu un to pašu ierakstu, un to var atdalīt no pārējām kopām. Tā priekšrocība ir tā, ka katrs koda komponents ir neatkarīgs no citiem, un to ir vieglāk uzturēt un paplašināt. Konkrētāk, piemēram, visus pieprasījumus, kas atbilst koplietotā URL ceļa “/posts” nosacījumiem, apstrādās tas pats maršrutētājs. Atkarībā no viņu http metodes (GET, POST utt.), tiks izmantots cits kontrolleris.

  • Kontrolieri: kontrolieris saņem filtrētus pieprasījumus no maršrutētājiem, piemēro papildu apstrādi un izsauc piemērotās servisa metodes.

Biznesa loģikas slānis

Šis slānis ir unikāls atkarībā no konkrētajiem lietojumprogrammas lietošanas gadījumiem un tā biznesa loģikas.

  • Pakalpojumi: pakalpojumi ir metožu kopa, kas satur lietojumprogrammas galveno loģiku. Tie arī mijiedarbojas ar datu bāzi, izmantojot ORMs/ODM.).

  • Trešās puses pakalpojumi: daudzas mūsdienu lietojumprogrammas izvēlas daļu lietojumprogrammas loģikas deleģēt īpašiem pakalpojumiem, kas pieejami, izmantojot API. Šāda veida pakalpojumi var būt maksājumu apstrādes pakalpojumi, statisko failu glabāšana, paziņojumi un citi.

  • ODM/ORM: ORM un ODM darbojas kā starpnieki starp pakalpojumiem un datu bāzi. Viņu uzdevums ir nodrošināt augsta līmeņa abstrakciju datu bāzē, kas ļauj izstrādātājam rakstīt kodu izvēlētajā programmēšanas valodā, nevis īpašās datu bāzes valodās, piemēram, SQL.

Datu noturības slānis

  • Datu bāzes: kā jau minējām iepriekš, gandrīz visām lietojumprogrammām ir nepieciešama kāda veida datu noturība. Šo daļu apstrādā datu bāzes, un atkarībā no datu veida, biznesa loģikas un daudziem citiem apsvērumiem noteiktas datu bāzes izvēle salīdzinājumā ar citu tiek uzskatīta par izšķirošu lietojumprogrammas efektivitātei un mērogojamībai.

Piemērs: ziņas pievienošana

Tagad, kad mēs saprotam vispārējo arhitektūras ideju, piemērosim to mūsu vienkāršajam piemēram. Mēs ieviesīsim funkciju pievienot todo ierakstu savai lietojumprogrammai. Pieņemsim, ka jebkurai ziņai ir unikāls ID, kas ļaus mums to vēlāk identificēt mūsu datubāzē, virsraksts, kas ir virkne, un secība, kas ir vesela skaitļa tipa. Sekojot mūsu diagrammai, mēs sāksim ar maršrutētāja ieviešanu. Pievienojiet failam index.js šādu kodu:

Starting a server in ExpressJS

Šis ir mūsu maršrutētāja fails. Mēs importējam ekspress un “addPost” metodi no mūsu kontroliera (to mēs drīz ieviesīsim), izveidojam ātrā maršrutētāja gadījumu un saistām metodi addPost ar mūsu maršrutētāju — tas nozīmē, ka katram pieprasījumam, kuram ir saknes ceļš un http. metode “POST”, lai to apstrādātu, tiks izsaukta metode “addPost”.

Pirms mūsu metodes ieviešanas kontrolierī, mēs atsaucamies uz jauno maršrutētāju galvenajā failā app.js un norādām tā ceļu kā “/posts”: visi maršruti ar norādītajiem ceļiem tiks pārsūtīti uz šo maršrutētāju, lai to varētu apstrādāt. ar dažādām kontroliera metodēm:

Starting a server in ExpressJS

Mēs importējam maršrutētāju un nosaucam to kā “ziņas”. app.use(“/posts”,...) nozīmē, ka visi pieprasījumi ar apakšceļu “/posts” neatkarīgi no to http metodes tiks novirzīti uz norādīto maršrutētāju.

Citas izmaiņas lietotnē app.js ietver datu bāzes konfigurācijas faila importēšanu, lai tas tiktu izpildīts, un express.json() izmantošanu kā starpprogrammatūru, lai mēs varētu piekļūt pieprasījuma pamatteksta objektam.

Tagad, kad mūsu maršruti ir iestatīti, mēs varam pievienot metodi “addPost” failā controller.js:

Starting a server in ExpressJS

“addPost” ir starpprogrammatūras funkcija, kas kā parametrus ņem pieprasījumu, atbildes objektus un nākamo funkciju. Kad tiek izsaukta nākamā funkcija, process pāriet uz nākamo starpprogrammatūru ķēdē vai beigs pieprasījumu. Metodes kodā mēs izņemam nosaukumu un secību no pieprasījuma pamatteksta un nododam tos kā parametrus pakalpojuma funkcijai “createPost”. Šī funkcija ņem ziņas atribūtus, izveido jaunu ziņu un atgriež to. Kad jaunais ziņojums ir izveidots, mēs to atdodam klientam kopā ar statusa kodu 200, kas nozīmē, ka pieprasījums ir bijis veiksmīgs. Iespējams, pamanīsit, ka mūsu kods tiek ievietots try/catch blokā, lai uztvertu neparedzētu kļūdu un nodotu to nākamajai starpprogrammatūrai. Tiek uzskatīts par labāko praksi visiem maršrutētājiem pievienot kļūdu apstrādes starpprogrammatūru, kas izņem kļūdu un atgriež klientam nozīmīgu kļūdas ziņojumu.

Tagad atliek tikai ieviest funkciju “createPost” pakalpojumā service.js:

nodejs_6

Kā jau minējām, skaidrojot dažādus arhitektūras slāņus, pakalpojumu slānis mijiedarbojas ar datu glabāšanas risinājumu, izmantojot ORM/ODM. Tomēr mūsu piemērā mums nebūs jāizmanto atsevišķs ORM, jo Lowdb ir iebūvēts Javascript atbalsts. Visa informācija par tās sintaksi ir atrodama dokumentācijā.

Metode “createPost” saņem nosaukumu un secību kā parametrus un izmanto tos, lai izveidotu pasta objektu. Unikālajam ID mēs izmantojam speciālu bibliotēku ar nosaukumu “nanoīds”, kas ģenerē unikālu rakstzīmju secību. Mēs pievienojam jauno ziņu datu bāzes ziņu masīvam un ierakstām šīs izmaiņas; pēc tam funkcija atgriež jauno ziņu.

Tagad, kad “createPost” ir gatavs, ziņu pievienošanas funkcija tagad ir pabeigta un darbojas. Mēs to pārbaudām, izmantojot Postman — populāru API testēšanas rīku:

nodejs_7

Mēs izvēlamies “POST” kā pieprasījuma http metodi kopā ar norādīto URL ceļu “localhost:3000/posts”. Mēs pievienojam virsrakstu un pasūtījumu kā json formātu pamatteksta sadaļā un nosūtām pieprasījumu. Kā parādīts iepriekš, mēs saņemam statusu 200 OK kopā ar jaunizveidoto ziņu.

Secinājums

Šajā projektā ir izpētītas daudzas koncepcijas un idejas: mēs apskatījām, kā instalēt un iestatīt mūsu projekta vidi, uzzinājām, kā konfigurēt LowDB vietējai datu noturībai, izpētījām vispārējo NodeJS/Express aizmugursistēmas lietojumprogrammu arhitektūru un redzējām, kā pielietojiet to vienkāršā piemērā. Visbeidzot, mēs pārbaudījām savu lietojumprogrammu, izmantojot Postman.

Mērķis bija parādīt vienkāršotu versiju visam, kas saistīts ar modernu aizmugurprogrammu veidošanu. Kā mēs redzējām iepriekš, NodeJs ir spēcīgs rīks, kas ļauj mums izveidot vienkāršas un sarežģītas API. Apvienojumā ar bagātīgo ietvaru ekosistēmu, piemēram, ekspress un rīku un bibliotēku pārpilnība gandrīz jebkuram lietošanas gadījumam, tas ir likumīgs risinājums mūsdienu aizmugursistēmas izstrādei — risinājums, kuru mēs iesakām apgūt un apgūt.


Career Services background pattern

Karjeras pakalpojumi

Contact Section background image

Sazināsimies

Code Labs Academy © 2024 Visas tiesības paturētas.