Node JS & Express pamati (III). Node JS & Express pamati (III) HTML veidlapu izveide un datu izguve

Šis raksts ir paredzēts iesācējiem izstrādātājiem un ikvienam, kas interesējas par darbu ar Node js Express. Lai to apgūtu, jums jāzina JavaScript pamati:

Kas ir Node.js?

Node.js ir asinhrons JavaScript izpildlaiks, kura pamatā ir Chrome V8 JavaScript dzinējs. Tas ir paredzēts mērogojamu tīkla lietojumprogrammu izveidei.

Node.js ļauj rakstīt servera puses JavaScript kodu. Tagad jūs varētu domāt, kā? JavaScript ir valoda, kas darbojas pārlūkprogrammā. Pārlūkprogramma pieņem JavaScript kodu un kompilē to komandās. Node.js veidotājs izmantoja Chrome dzinēju un izveidoja izpildlaiku ( izpildlaiks), lai tas darbotos serverī. Tas ir līdzeklis, kurā valodu var interpretēt. Kas tad mums tagad ir? Veids, kā aizmugursistēmā rakstīt JavaScript.

Runājot par definīciju, jums varētu rasties jautājums, ko šajā kontekstā nozīmē termins "asinhrons". JavaScript ir viena pavediena valoda. Tāpēc jūs nevēlaties, lai notikumi pārtrauktu galveno izpildes pavedienu. Tas nozīmē notikumu apstrādi, nepārtraucot galveno pavedienu.

Node.js ir balstīts uz šo nebloķējošo dizainu, padarot to par vienu no ātrākajiem rīkiem tīmekļa lietojumprogrammu veidošanai. Nākamajā piemērā "Sveika pasaule" daudzus savienojumus var apstrādāt vienlaikus. Katrs savienojums aktivizē atzvanīšanu.

Šajā Node js Express piemērā ir sešas vienkāršas darbības.

  1. Instalējiet Node.js savai platformai (MacOS, Windows vai Linux)

Node.js

Node.js® ir JavaScript izpildlaiks, kas iebūvēts pārlūka Chrome V8 JavaScript dzinējā. Node.js izmanto notikumu vadītu, nebloķējošu I/O...

Pirmais solis ir iegūt JavaScript instanci savā vietējā datorā. Pārlūkprogrammas adreses joslā ierakstiet nodejs.org vai noklikšķiniet uz saites, un esat pabeidzis. Palaišanas logam nekavējoties jāsniedz tas, ko vēlaties. Kad es palaižu Ubuntu savā datorā, tiek parādīta atbilstošā Node.js versija manai operētājsistēmai. Lejupielādējiet un instalējiet to. Tas nodrošinās jums nepieciešamos rīkus, lai darbinātu serveri lokālajā datorā:

  1. Atveriet komandu uzvedni un ierakstiet

mkdir myapp cd myapp

Šīs Node js Express Post komandas ir universālas jebkurai operētājsistēmai. Pirmais izveidos jaunu direktoriju tajā direktorijā, kurā pašlaik atrodaties, mkdir = "make directory" . Pēdējais tiks mainīts uz šo jaunizveidoto direktoriju, cd = "mainīt direktoriju" .

  1. Palaidiet savu projektu un saistiet to ar npm

Kad esat izveidojis direktoriju ar nosaukumu myapp, jums būs jāpalaiž projekts un jāsaista tas ar npm.

Npm ir saīsinājums node pakotņu pārvaldniekam ( Mezglu pakotņu pārvaldnieks). Šeit atrodas visas Node pakotnes. Tos var uzskatīt par koda pakotnēm, moduļiem, kas veic noteiktu funkciju. Mēs izmantojam lietojumprogrammu saskarni API, ko nodrošina šie moduļi.

Savukārt moduļi darbojas kā melnās kastes ar pogām un svirām, kuras var stumt un vilkt, lai sasniegtu vēlamo rezultātu. Palaižot tālāk norādīto komandu, jūsu projekts tiek sākts:

Tas izveido failu package.json mapē myapp. Failā ir saites uz visām projektā ielādētajām npm pakotnēm.

Komanda liks ievadīt vairākas darbības iespējas. Jūs varat ievadīt savu ceļu caur tiem visiem, izņemot šo:

ieejas punkts: (index.js)

Jūs vēlaties to mainīt uz:

  1. Instalējiet Express myapp direktorijā

Express ir minimāls un elastīgs Node.js tīmekļa lietojumprogrammu ietvars, kas nodrošina spēcīgu tīmekļa funkciju kopumu.

Atrodoties myapp direktorijā, palaidiet:

npm install express --save

Instalēšanas komanda turpinās instalējamās Node js Express failu pakotnes meklēšanu. Instalējiet to savā projektā.

Tagad jūsu projekta saknē ir izveidota mape node_modules. Pievienojot -save, pakotni var saglabāt atkarību sarakstā, kas atrodas failā package.json myapp direktorijā.

Express nodrošina rīku komplektu tīmekļa lietojumprogrammu izveidei un palaišanai. Express ir kļuvis tik populārs, ka tagad tas ir standarts lielākajā daļā Node.js lietojumprogrammu. Es ļoti iesaku izmantot Express.

  1. Skrien teksta redaktors un izveidojiet failu app.js

Pēc Express Node instalēšanas izveidotajam failam pievienojiet šādu kodu:

var izteikt = prasīt ("izteikt"); var app = express(); app.get("/", funkcija (req, res) ( res.send("Sveika pasaule!"); )); app.listen(3000, function () ( console.log("Lietotnes klausīšanās piemērs portā 3000!"); ));

Šeit jums būs jāizmanto nesen instalēta pakotne. Pirmajā rindā tiek deklarēts mainīgais, kurā būs ekspresmodulis, kas atrodas mapē node_modules.

Modulis ir funkcija. Funkcijas izsaukuma piešķiršana citam mainīgajam nodrošina piekļuvi iepriekš noteiktai rīku kopai, kas atvieglo turpmāko darbu. Pagaidu lietojumprogrammu var uzskatīt par objektu, kura metodes izmantojat, lai izveidotu faktisko programmu.

Klausīšanās metode palaiž serveri un klausās savienojumus 3000. portā. Viņš atbild: "Sveika pasaule! " GET pieprasījumiem uz saknes URL (/). Jebkuram citam ceļam tas atbildēs ar paziņojumu 404 Nav atrasts.

  1. Palaidiet lietojumprogrammu

Ievadiet komandu:

Pēc komandas palaišanas pārlūkprogrammā ievadiet http://localhost:3000/, lai redzētu rezultātu. Jums vajadzētu redzēt arī " Lietojumprogrammu klausīšanās piemērs portā 3000».

  • Tulkošana

Jaunam programmētājam izstrāde Node.js var šķist murgs. Pie vainas ir platformas elastība un skaidru vadlīniju trūkums. Bet patiesībā viss nav tik biedējoši.


Piemēram, šeit ir tipisks uzdevums: REST API, lietojumprogrammas servera daļas, izstrāde. Paša Node iespēju pārpilnība un daudzie papildu moduļi, kas var palīdzēt atrisināt šo problēmu, var novest iesācēju strupceļā, jo ir daudz izvēles iespēju. Galvenās problēmas šeit ir komponentu atlase un to kopīgā darbība.

Viens veids, kā izveidot servera puses lietojumprogrammu, ir izmantot Node.js, Express ietvara un MongoDB DBVS kombināciju. Patiesībā šodien es runāšu par to, kā izveidot funkcionējošu API maketu, kas var kalpot par pamatu gandrīz jebkurai lietojumprogrammai. Šeit mēs ieviesīsim pamata REST maršrutus, mijiedarbosimies ar API, izmantojot HTTP, un izmantosim vienkāršas iespējas darbs ar datu bāzi.

Lai veiksmīgi apgūtu šo materiālu, jums ir jāsaprot, kas ir REST API, ir jāsaprot CRUD darbības un jābūt pamatzināšanas par JavaScript. Es šeit izmantoju ES6, nekas pārāk sarežģīts, pārsvarā bultiņu funkcijas.

Mēs izstrādāsim aizmugursistēmas skeletu piezīmju veikšanai, kas ir līdzīga Google Keep. Šajā gadījumā ar piezīmēm būs iespējams veikt visas četras CRUD darbības, proti, izveidot, lasīt, atjaunināt un dzēst.

Iepriekšēja sagatavošana

Ja jums vēl nav Node, tagad ir pienācis laiks to instalēt. Pēc instalēšanas izveidojiet mapi un palaidiet komandu, lai tajā inicializētu jaunu projektu:

Npm init
Inicializācijas laikā atbildiet uz jautājumiem, jo ​​īpaši piešķiriet lietojumprogrammai nosaukumu “ievērojams” (vai, ja vēlaties, jebkuru citu nosaukumu).

Tagad failam vajadzētu parādīties mapē pack.json. Tas nozīmē, ka varat sākt instalēt papildu pakotnes, no kurām ir atkarīgs projekts.

Mēs plānojam izmantot Express kā ietvaru. Datu bāzes pārvaldības sistēma būs MongoDB. Turklāt kā palīgrīku darbam ar JSON mēs izmantojam body-parser pakotni. Instalēsim visu:

Npm instalēšana --save express mongodb body-parser
Tāpat es ļoti iesaku instalēt Nodemon kā izstrādātāja atkarību. Tā ir vienkārša maza pakotne, kas, mainoties failiem, automātiski restartē serveri.

Lai instalētu šo pakotni, palaidiet komandu:

Npm install --save-dev mezgls
Pēc tam failam varat pievienot šādu skriptu pack.json:

// package.json "skripti": ("dev": "nodemon server.js"),
Gatavs pack.json izskatīsies apmēram šādi:

// package.json ( "nosaukums": "ievērojams", "versija": "1.0.0", "apraksts": "", "galvenais": "serveris.js", "skripti": ( "dev": "nodemon server.js", "author": "", "licence": "ISC", "dependencies": ( "body-parser": "^1.15.2", "express": "^4.14.0" , "mongodb": "^2.2.16" ), "devDependencies": ( "nodemon": "^1.11.0" ))
Tagad izveidosim failu serveris.js un sāksim strādāt pie API.

Serveris

Sāksim, savienojot failā esošās atkarības serveris.js.

// serveris.js const express = prasīt("express"); const MongoClient = prasīt("mongodb").MongoClient; const bodyParser = prasīt("body-parser"); const app = express();
Mēs izmantosim MongoClient, lai mijiedarbotos ar datu bāzi. Turklāt šeit mēs inicializējam lietotnes konstanti, kas simbolizē mūsu lietojumprogrammu, ar Express ietvara gadījumu. Lai serveris darbotos, atliek tikai norādīt lietojumprogrammai, lai tā sāktu klausīties HTTP pieprasījumus.

Šeit mēs norādām portu un sākam klausīties šādi:

// server.js const ports = 8000; app.listen(port, () =>
Tagad, ja palaižat komandu npm run dev (vai - node server.js, ja neesat instalējis Nodemon), terminālī jāparādās ziņojumam: "Mēs esam tiešraidē portā 8000".

Tātad serveris darbojas. Bet tagad viņš nedara absolūti neko lietderīgu. Noskaidrosim šo.

Maršruti, kas vērsti uz CRUD operācijām

Plānojam izveidot 4 maršrutus. Proti:
  • CREATE – piezīmju veidošana.
  • LASĪT – lasīt piezīmes.
  • UPDATE – piezīmju atjaunināšana.
  • DELETE — dzēst piezīmes.
Kad būsiet apguvis šo shēmu, varēsiet saprast, kā, izmantojot Node, organizēt gandrīz jebkuru nepieciešamo REST maršrutu.

Lai pārbaudītu API, jums būs nepieciešams kaut kas, kas var simulēt pieprasījumus no lietojumprogrammas klienta puses. Lieliska programma ar nosaukumu Postman palīdzēs mums atrisināt šo problēmu. Tas ļauj veikt vienkāršus HTTP pieprasījumus ar noteiktu pamattekstu un parametriem.

Instalējiet Postman. Tagad viss ir gatavs maršrutu konfigurēšanai.

Par projekta struktūru

Lielākā daļa Node.js pamācību (un daudzas reālās dzīves lietojumprogrammas) visus maršrutus ievieto vienā lielā failā maršruts.js. Man šī pieeja īsti nepatīk. Ja kārtojat failus dažādās mapēs, tas uzlabos koda lasāmību un atvieglos lietojumprogrammas pārvaldību.

Mūsu pieteikumu nevar saukt par lielu, bet es ierosinu darīt visu, kā vajadzētu, tomēr ņemot vērā tā pieticīgo mērogu. Izveidojiet šādas mapes: mape lietotne, un tajā iekšā - maršrutos. Mapē maršrutos izveidot failus index.js Un note_routes.js. Citiem vārdiem sakot, projekta struktūra izskatīsies šādi: sakne > lietotne > maršruti > index.js Un note_routes.js.

Mkdir lietotne CD lietotne mkdir maršruti CD maršruti touch index.js touch note_routes.js
Šī struktūra var šķist lieka nelielai lietojumprogrammai, taču tā būs ļoti noderīga lielākā sistēmā, kas izveidota, pamatojoties uz mūsu piemēru. Turklāt vislabāk ir sākt jebkuru projektu, izmantojot labāko esošo praksi.

Piezīmju izveide: IZVEIDOT maršrutu

Sāksim ar maršrutu IZVEIDOT. Lai to izdarītu, mēs atbildēsim uz jautājumu: "Kā izveidot piezīmi?"
Pirms sākam veidot piezīmes, mums būs jāpaplašina lietojumprogrammas infrastruktūra. Programmā Express maršruti tiek iesaiņoti funkcijā, kas kā argumentus izmanto Express gadījumu un datu bāzi.

Tas varētu izskatīties šādi:

// routes/note_routes.js module.exports = function(app, db) ( );
Tagad varat eksportēt šo funkciju, izmantojot index.js:

// routes/index.js const noteRoutes = prasīt("./note_routes"); module.exports = function(app, db) ( noteRoutes(app, db); // Šeit vēlāk būs arī citi maršruta apstrādātāji );
Mēs importējam to, ko esam ieguvuši serveris.js:

// serveris.js const express = prasīt("express"); const MongoClient = prasīt("mongodb").MongoClient; const bodyParser = prasīt("body-parser"); const app = express(); const ports = 8000; prasīt("./app/routes")(lietotne, ()); app.listen(port, () => ( console.log("Mēs esam tiešraidē " + portā); ));
Lūdzu, ņemiet vērā, ka, tā kā datubāze vēl nav konfigurēta, kā otrais arguments tiek nodots tukšs objekts.

Tagad mēs izveidojam maršrutu CREATE. Sintakse šeit ir pavisam vienkārša:

Module.exports = function(app, db) ( app.post("/notes", (req, res) => ( // Šeit izveidosim piezīmi. res.send("Sveiki") )); );
Kad lietojumprogramma saņem POST pieprasījumu, izmantojot ceļu '/notes', tā izpildīs kodu atzvanīšanas funkcijā, nosūtot tai pieprasījuma objektu (kurā ir pieprasījuma parametri vai JSON dati) un atbildes objektu (kas, protams, tiek izmantots atbildei).

To, ko esam sasnieguši, jau var pārbaudīt. Nosūtīsim, izmantojot Pastnieku, POST pieprasījumu uz adresi localhost: 8000/notes.


Atbildei uz pieprasījumu jābūt “Sveiki”

Lieliski. Pirmais maršruts ir izveidots. Nākamais solis ir pievienot pieprasījumam parametrus, apstrādāt tos API un visbeidzot saglabāt piezīmi datu bāzē.

Pieprasīt parametrus

Programmā Pastnieks atveriet cilni Ķermenis un pievienojiet vairākus atslēgu-vērtību pārus, atlasot radio pogu x-www-form-urlencoded. Proti, pirmā atslēga būs virsraksts, tā vērtība ir Manas piezīmes nosaukums. Otrā atslēga - ķermeni, tā vērtība ir Cik lieliska piezīme.

Tādējādi pieprasījumam tiks pievienoti kodēti dati, kurus var apstrādāt API.


Manas piezīmes nosaukums un pats ieraksts ir ļoti vienkārši, taču šeit jūs varat parādīt savu iztēli

Failā note_route.js, vienkārši izdrukājiet piezīmes pamattekstu konsolē.

// note_routes.js module.exports = function(app, db) ( app.post("/notes", (req, res) => ( console.log(req.body) res.send("Sveiki") ) ); );
Mēģiniet nosūtīt pieprasījumu, izmantojot Pastnieku, un jūs redzēsit... undefined.

Diemžēl Express nevar apstrādāt URL kodētas veidlapas atsevišķi. Šeit mums palīdzēs iepriekš instalētā ķermeņa parsētāja pakotne.

// serveris.js const express = prasīt("express"); const MongoClient = prasīt("mongodb").MongoClient; const bodyParser = prasīt("body-parser"); const app = express(); const ports = 8000; app.use(bodyParser.urlencoded(( paplašināts: true))); prasīt("./app/routes")(lietotne, ()); app.listen(port, () => ( console.log("Mēs esam tiešraidē " + portā); ));
Tagad, pēc POST pieprasījuma izpildes, tā pamattekstu var redzēt terminālī kā objektu.

(nosaukums: "Manas piezīmes nosaukums", pamatteksts: "Cik lieliska piezīme.")
Lai pirmais maršruts darbotos pilnībā, atliek tikai konfigurēt datu bāzi un pievienot tai piezīmi.

Lai ātri izveidotu un konfigurētu datu bāzi, mēs izmantosim mLab pakalpojumu. Ar to ir viegli strādāt, un nelielam informācijas apjomam tas ir bez maksas.

Izveidojiet kontu mLab vietnē un izvietojiet jaunu MongoDB datu bāzi. Lai to izdarītu, noklikšķiniet uz pogas Izveidot Jauns Nodaļā MongoDB izvietošana, parādītajā logā, sadaļā Plānot, atlasiet Viens mezgls. Sarakstā Standarta līnija, atlasiet Smilšu kaste un piešķiriet datubāzei nosaukumu. Pēc tam datu bāzes pārvaldības logā pārejiet uz cilni Lietotāji un pievienojiet datu bāzes lietotāju, norādot lietotājvārdu un paroli.


Jauns datu bāzes lietotājs

Kopējiet otro URL no tās pašas lapas - datu bāzes savienojuma virkni.


URL, lai izveidotu savienojumu ar datu bāzi

Pievienojiet direktoriju projekta saknei konfigurācija, izveidojiet tajā failu db.js.

Mkdir config cd config touch db.js
Uz failu db.js pievienojiet sekojošo:

Module.exports = (url: jūsu URL tiks parādīts šeit);
Neaizmirstiet vietrādim URL pievienot savu lietotājvārdu un paroli (nevis tos, kas paredzēti jūsu mLab kontam, bet gan tos, kurus izveidojāt datubāzei). Ja mitināt projektu vietnē Github, noteikti iekļaujiet failu .gitignore(kā šis). Tādā veidā jūs nepadarīsit publisku vārdu un paroli darbam ar datu bāzi.

Tagad iekšā serveris.js, varat izmantot MongoClient, lai izveidotu savienojumu ar datu bāzi un aplauztu lietojumprogrammas iestatījumus funkcijā, kas tai tiek nodota, veidojot:

// serveris.js const express = prasīt("express"); const MongoClient = prasīt("mongodb").MongoClient; const bodyParser = prasīt("body-parser"); const db = prasīt("./config/db"); const app = express(); const ports = 8000; app.use(bodyParser.urlencoded(( paplašināts: true))); MongoClient.connect(db.url, (err, datubāze) => ( ja (err) return console.log(err) request("./app/routes")(lietotne, datu bāze); app.listen(port, () ) => ( console.log("Mēs esam tiešraidē " + portā); )); ))
Tādējādi tiek pabeigta infrastruktūras sagatavošana. Turpmāk mēs nodarbosimies tikai ar takām.

Ierakstu pievienošana datu bāzei

MongoDB glabā datus kolekcijās, kas atbilst to nosaukumam. Mūsu gadījumā piezīmes tiks glabātas kolekcijā, kas, kā jūs varētu nojaust, tiks saukta par piezīmēm .

Klienta iestatīšanas laikā tam tika piešķirta datu bāzes savienojuma virkne — arguments db. Maršruta kodā varat piekļūt datu bāzei šādi:

Db.collection("piezīmes")
Piezīmes izveide datu bāzē ir līdzvērtīga piezīmju kolekcijas ievietošanas komandas izsaukšanai:

Const note = ( teksts: req.body.body, title: req.body.title) db.collection("notes").insert(note, (err, results) => ( )
Kad komanda ir veiksmīgi pabeigta (vai kāda iemesla dēļ tā neizdodas), jums ir jāatbild ar jaunizveidoto piezīmes objektu vai kļūdas ziņojumu. Šeit ir kods note_routes.js, kas papildināts, ņemot vērā šādus apsvērumus:

// note_routes.js module.exports = function(app, db) ( app.post("/notes", (req, res) => ( const note = ( teksts: req.body.body, virsraksts: req.body) .title ); db.collection("piezīmes").insert(piezīme, (kļūda, rezultāts) =>
Izmēģiniet to, ko iegūstat. Nosūtiet POST pieprasījumu no pastnieka (ar karogu x-www-form-urlencoded), iestatot cilnē Ķermenis lauka vērtības virsraksts Un ķermeni.

Atbildei vajadzētu izskatīties apmēram šādi:


Ieraksta pievienošana datu bāzei ir veiksmīga

Lasīšanas piezīmes: LASĪT maršrutu

Iepriekš sagatavotā infrastruktūra ir piemērota visiem maršrutiem, tāpēc tagad viss ritēs ātrāk.

Tāpēc mēs vaicāsim piezīmi, kuru tikko izveidojām, sekojot šim ceļam localhost:8000/notes/(piezīmju ID). Mūsu gadījumā ceļš izskatīsies šādi: localhost:8000/notes/585182bd42ac5b07a9755ea3.

Ja jums nav nevienas jau izveidotās piezīmes ID, varat ieskatīties mLab datubāzē un atrast to tur vai izveidot jaunu piezīmi un nokopēt tās ID.

Lūk, kā tas izskatās iekšā note_route.js:

// note_routes.js modulis.exports = function(app, db) ( app.get("/notes/:id", (req, res) => ( )); app.post("/notes", (req , res) => ( const note = ( teksts: req.body.body, virsraksts: req.body.title ); db.collection("notes").insert(note, (err, result) => ( if () err) ( res.send(( "kļūda": "Ir radusies kļūda" )); ) else ( res.send(result.ops); ) )); )); );
Tāpat kā iepriekš, mēs izsauksim kādu komandu piezīmju datu bāzes kolekcijā. Šim nolūkam izmantosim metodi findOne.

// note_routes.js module.exports = function(app, db) ( app.get("/notes/:id", (req, res) => ( const details = ( "_id"):<ТУТ БУДЕТ ID>); db.collection("piezīmes").findOne(details, (err, item) => ( if (err) ( res.send(("kļūda":"Ir radusies kļūda")); ) else ( res.send (lieta); ) )); )); app.post("/notes", (req, res) => ( const note = ( teksts: req.body.body, nosaukums: req.body.title ); db.collection("notes").insert(note , (err, result) => ( if (err) ( res.send(( "kļūda": "Ir radusies kļūda" )); ) else ( res.send(result.ops); ) )); )) ; );
Identifikatoru var iegūt no URL parametriem, izmantojot konstrukciju req.params.id. Tomēr, ja tā vietā vienkārši ievietojat līniju<<>> no iepriekš minētā koda, tas nedarbosies.

MongoDB pieprasa ID nevis kā virkni, bet gan kā īpašu objektu. Tas tiek saukts Objekta ID.

Pēc nelielām izmaiņām mēs saņēmām šādu informāciju:

// note_routes.js var ObjectID = prasīt("mongodb").ObjectID; module.exports = funkcija(lietotne, db) ( app.get("/notes/:id", (req, res) => ( const id = req.params.id; const details = ( "_id": new ObjectID) (id) ); db.collection("piezīmes").findOne(details, (err, item) => ( if (err) ( res.send(("kļūda":"Ir radusies kļūda")); ) else ( res.send(item); ) )); )); app.post("/notes", (req, res) => ( const note = ( teksts: req.body.body, virsraksts: req.body .title); db.collection("piezīmes").insert(note, (err, result) => ( if (err) ( res.send(( "kļūda": "Ir radusies kļūda" )); ) else ( res.send(result.ops); ) )); )); );
Izmēģiniet to ar kādu no datu bāzē pieejamajiem piezīmju ID. Pastnieka atbildei vajadzētu izskatīties šādi:


Veiksmīgs piezīmes pieprasījums no datu bāzes

Dzēšot piezīmes: DZĒST maršrutu

Objektu dzēšana ir praktiski tas pats, kas to meklēšana datubāzē. Tikai funkcijas findOne vietā tiek izmantota noņemšanas funkcija. Šeit ir pilns atbilstošā ceļa kods. Tas izceļ to, kas atšķiras no koda esošajā metodē, kas apstrādā GET pieprasījumu.

// note_routes.js // ... app.delete("/notes/:id", (req, res) => ( const id = req.params.id; const details = ( "_id": new ObjectID( id) ); db.collection("piezīmes").remove(details, (err, item) => ( if (err) ( res.send(("kļūda":"Ir radusies kļūda")); ) else ( res.send("Piezīme " + id + " izdzēsts!"); ) ); )); //...

Piezīmju atjauninājums: UPDATE maršruts

Un šeit ir pēdējais maršruts. PUT pieprasījuma apstrāde būtībā ir darbību READ un CREATE hibrīds. Vispirms jāatrod objekts, pēc tam tas jāatjaunina atbilstoši pieprasījumā saņemtajiem datiem. Ja, pārbaudot iepriekšējo koda fragmentu, izdzēsāt savu vienīgo piezīmi, izveidojiet citu.

Šeit ir piezīmju atjaunināšanas maršruta kods:

// note_routes.js // ... app.put ("/notes/:id", (req, res) => ( const id = req.params.id; const details = ( "_id": new ObjectID( id) ); const note = ( teksts: req.body.body, title: req.body.title ); db.collection("notes").update(details, note, (err, result) => ( if () err) ( res.send(("kļūda":"Ir radusies kļūda")); ) else ( res.send(note); ) )); )); //...
Tagad jebkuru piezīmi var rediģēt. Lūk, kā tas izskatās:


Veiksmīga piezīmes atjaunināšana

Ievērojiet mūsu piemēra trūkumu. Ja PUT pieprasījumā nav ietverts piezīmes pamatteksts vai nosaukums, attiecīgie datu bāzes lauki tiks vienkārši notīrīti.

Es neielādēju piemēru ar papildu pārbaudēm. Ja vēlaties, varat pats modificēt piezīmju atjaunināšanas darbību, pievienojot jaunus datus datu bāzei tikai tad, ja pieprasījums ir pareizi noformēts.

Rezultāti

Tagad jums ir funkcionējoša Node API, kas atbalsta četras pamata CRUD darbības. Lietojumprogrammas servera daļa, atbildot uz klienta HTTP pieprasījumiem, var izveidot piezīmes datu bāzē, tās atrast, dzēst un rediģēt.

Mana stāsta galvenais mērķis ir iepazīstināt visus ar kombināciju Node + Express + MongoDB un servera aplikāciju izstrādes metodiku. Protams, ja šodien ir jūsu pirmā iepazīšanās ar šiem rīkiem, lai labāk visu saprastu, jums būs jāiepazīstas ar dokumentāciju. Taču notiekošā izpratne ļaus ātri aizpildīt robus zināšanās un sākt strādāt pašu projekti, kā sākumpunktu izmantojot lietojumprogrammu, pie kuras mēs šeit strādājām.

Ja jums ir pieredze darbā ar Node.js, Express un MongoDB reālos projektos, vai jums ir kādi padomi iesācējiem? Un, ja jūs tikko to visu izmēģinājāt pirmo reizi, mēs gaidām jūsu iespaidus.

Aplūkojot sintakses modeli, ja mēs vēlamies lietojumprogrammai pievienot jaunu maršrutu, mēs varētu vienkārši rīkoties šādi:

Router.get("/app", function(req, res) ( res.render("app", ( virsraksts: "Express" )); ));

Vai šis ir maršruts? Vai tas ir kontrolieris?

Interesantākais ir tas, ka maršruts ir funkcija, kas satur loģiku. Maršruta iekšpusē ir res.render funkcija:

Res.render("foo", ( virsraksts: "Express" ));

Skata veidnē mēs redzam šo:

H1= virsraksts p Laipni lūdzam #(title)

Šie ir divi piemēri, kā mēs varam iegūt datus no kontrollera/maršruta un parādīt tos skatā. Šajā piemērā mēs izvadām HTML:

Express

Laipni lūdzam Express

Šķiet, ka tas viss izriet no problēmas — vai maršruts var saturēt arī kontroliera informāciju? Tā ir taisnība, tāpēc kopienā notiek kustība, lai mainītu mapes nosaukumu no maršrutiem uz kontrolieriem.

Lielisku piemēru tam var redzēt Express MVC piemērā.

Taču konsekvences labad šajā rokasgrāmatā mēs pieturēsimies pie pašreizējām konvencijām.

404 kļūdas

Kļūdas jau sūta jūs uz Express. Failam app.js ir šāda informācija:

/// noķert 404 un novirzīt uz kļūdu apstrādātāju app.use(function(req, res, next) ( var err = new Error("Nav atrasts"); err.status = 404; next(err; ));

Mapē views/ ir errors.jade.

Paplašina izkārtojuma bloka saturu h1= ziņojums h2= error.status pirms #(error.stack)

Tas ir vienkārši. Ja vēlaties pielāgot savu 404. lapu, vienkārši rediģējiet šo skatu.

Kā redzat no virsraksta, mūsu raksts koncentrēsies uz vienu no trim Node.js ietvariem: Express, Koa Un Buras.

Raksta beigās mēs dalīsimies ar jums uzņēmuma izvēlēun mēs paskaidrosim, kāpēc mūsu izvēlētajai sistēmai būtu jāpievērš īpaša uzmanība.

Uzreiz uzsvērsim, ka uzdevums ir diezgan sarežģīts, un kādu no variantiem būs grūti pasludināt par optimālu un piemērotu visiem gadījumiem.

Mūsu rakstā mēs vispirms aprakstīsim katra ietvara galvenās īpašības. Kad jums ir vispārējs iespaids par tiem, salīdzināsim trīs ietvarus, pamatojoties uz dažiem galvenajiem kritērijiem.

Tagad pāriesim uz2009. gads, kad divu gadu eksperimentiRaiens Dālsservera puses tīmekļa komponentu izveide bija veiksmīga, un parādījās principiāli jauna tehnoloģija.

Node.js uz notikumiem balstīta platforma, ko izmanto tīmekļa lietojumprogrammu izveidei, kas nodrošina iespēju izmantot JavaScript servera pusē.

Tā kā pirms Node.js parādīšanās JavaScript tika izmantots tikai klienta pusē, šādas platformas parādīšanos izstrādātāji uzņēma ar entuziasmu. Būtībā tas pavēra jaunas iespējas lietojumprogrammu izveidei ar augstu veiktspēju un mērogojamību.

Jāatzīst, ka izstrādātāju cerības attaisnojās, un šobrīd Node.js joprojām ir populārs un turpina virzīties uz priekšu.

Lai to pārbaudītu, pietiek izsekot izlaišanas biežumam atjauninājumi un veikto izmaiņu apjoms .

Node.js kopiena aug un attīstās. Regulāri tiek ģenerētas jaunas idejas, kā rezultātā tiek radīti jauni rīki un bibliotēkas.

Pateicoties šim attīstības tempam, izstrādātāju rīcībā ir plašs ietvaru klāsts, un šāda daudzveidība parasti ietver sarežģītas izvēles.

Viņa Pēc tam mēs izvēlēsimies vienu no trim MVC ietvariem,kuras tiek izmantotas lietojumprogrammu servera daļai (aizmugursistēmai) vietnē Node.js.

MVC (modeļa skata kontrolieris) dizaina modelis, kurā ietilpst trīs komponenti: modelis, skats un kontrolieris. Visas trīs sastāvdaļas var mainīt neatkarīgi vienu no otras. Šajā gadījumā modelis nodrošina datu un vadības loģikas noteikumus, skats ir atbildīgs par datu attēlošanu lietotāja interfeisā, un kontrolleris nodrošina mijiedarbību starp modeli un skatu.

Salīdzinājumam šī raksta ietvaros m tu izvēlējies:

  • Express, kā elastīgāko, vienkāršāko un ātrāko sistēmu
  • Koa kā versija Expressjaunā paaudze, ko izveidojusi tā pati izstrādes komanda
  • Buras , kā paredzēts ātrai lietojumprogrammu izstrādei, pamatojoties uz principiemRuby on Rails Un Express.

Katram no šiem ietvariem ir savi sekotāji un pretinieki, kuri var bezgalīgi strīdēties savā starpā, argumentējot par un pret.

Bet tajā pašā laikā visām trim iespējām ir noteiktas īpašības un īpašības, kas nodrošina priekšrocības konkrētā situācijā. darbības.

EXPRESS.JS

Sāksim aprakstu ar visvienkāršāko ietvaru, kas tiek izmantots platformā Node.js.

Express ir izmantots aplikāciju izstrādei diezgan ilgu laiku un, pateicoties savai stabilitātei, stingri ieņem vienu no labākajām vietām.

Tam ir ietvars liels skaits detalizētas instrukcijas un apraksti, ko apkopojuši izstrādātāji, kuri ir pārbaudījuši tā efektivitāti praksē. Tāpēc tas ir arExpressIeteicams sākt, ja plānojat uzzināt, kā izveidot lietojumprogrammas platformā Node.js.

Piekrītu, daudz prātīgāk ir izmantot uzkrāto un pārbaudīto pieredzi, nevis izgudrot riteni no jauna.

Šīs sistēmas galvenā iezīme ir tā, kaExpress raksturīga neliels daudzums pamata funkcionalitātes. Visas pārējās nepieciešamās funkcijas būs jāiegūst, izmantojot ārējos moduļus. Patiesībā,ExpressV tīrā formā– tas ir serveris, un tam var nebūt viena moduļa.

Pateicoties šim minimālismam, izstrādātāja rīcībā sākotnēji irviegli un ātrs rīksko viņš var paplašināt un attīstīt.

Ir svarīgi, lai moduļu izvēleExpressnav saistīta ar nekādiem ierobežojumiem: ne kvantitatīviem, ne funkcionāliem.

Rezultātā šis ietvars sniedz izstrādātājam iespēju atrisināt jebkuru problēmu, neierobežojot viņu rīku izvēlē.

No vienas puses, nevar vien priecāties par to, ka gatavu universālu risinājumu trūkums patiesībā nozīmē, ka katrsjūsu izveidotā lietojumprogramma būs unikāla.

No otras puses, izstrādātājam ir patstāvīgi jāizvēlas un jāorganizē moduļi, un tas ir saistīts ar lielu darba apjomu un attiecīgi no izstrādātāja vairāk laika un pūļu.

PROS:

✓ vienkāršība

✓ elastība

✓ laba mērogojamība

✓ attīstīta kopiena

✓ detalizēta dokumentācija

✓ plaša spraudņu izvēle

Mīnusi:

✗ liels roku darba apjoms

✗ tiek izmantota novecojusi pieeja atzvani funkcijas

KOA.JS

Koaizveidoja tādu izstrādātāju komanda kāietvara variantsExpress jaunajā paaudzē. Šī uzlabotā versija ir izstrādāta, lai palīdzētu jums izveidot tīmekļa lietojumprogrammas un API ar uzlabotu veiktspēju. Attiecīgi veidotāji centās ņemt vērā visus tā priekšgājēja trūkumus un padarīt to modernāku un ērtāk lietojamu.

Paskatīsimies, cik tas izdevās.

Koair gandrīz tāda pati funkcionalitāte un ir pārākaExpress ar vieglumu.

Koa atšķirīga iezīme ir ES6 ģeneratoru izmantošana.

Ģeneratori – funkcijas veids, kuru var palaist, apturēt un atsākt neatkarīgi no tā, kurā izpildes stadijā tā atrodas, un joprojām saglabā savu saturu.

ES6 ģeneratoru pielietojumsKoaļauj novērst atzvanīšanu atzvani ), samazina koda darba apjomu izstrādātājiem un samazina kļūdu iespējamību.

Pateicoties tam, ka veidotājiKoadarba procesā konstatētie trūkumiExpress, šis ietvars lepojas ar savu pielietojumuievērojami vienkāršo pielāgošanos specifiskiem klientu pieprasījumiem (pielāgošana). Un šādai īpašībai galu galā var būt izšķiroša loma atlases procesā: mūsdienās, ļoti konkurences apstākļos, jebkurai lietojumprogrammai ir tendence izmantot savu stilu.

Ja runājam par trūkumiem, tie galvenokārt saistās ar relatīvu jaunībuKoa(parādījās 2013. gads). Ietvars nebauda tik lielas kopienas atbalstu kāExpress, un vēl nav bijis laika demonstrēt visas savas iespējas.

PROS:

✓ viegls

✓ elastīgs

✓ ātri

✓ ES6 ģeneratori

✓ labāka pielāgošana

Mīnusi:

✗ nepietiekams sabiedrības atbalsts

BURAS.JS

Šis ietvars ir izveidots kāpilnīgs gatavais produkts, kas jau ietver pietiekami daudz funkcionalitātes, lai jūs varētu sākt darbu, un tajā pašā laikā tiek izmantots minimālais ārējo moduļu skaits.

Attiecīgi šāds ietvars sākotnēji būssmagāks par iepriekšējām divām.

No vienas puses, izstrādātājam ir jāpieliek minimālas pūles, jo lietojumprogrammas izveidei tiek izmantota paša ietvara funkcionalitāte. Nav nepieciešams iedziļināties procesa sarežģītībā - jūs varat vienkārši izvēlēties gatavu, pārbaudītu risinājumu.

No otras puses, lietojumprogrammu izstrādi ierobežos pieejamie ietvara rīki, jo ārējie moduļi ir paredzētiBurasdaudz mazāk nekā parExpress vai Koa.

Atšķirīga ietvara iezīme ir iebūvētā programmēšanas tehnoloģijaŪdenslīnija ORM (Angļu Objektu relāciju kartēšana), ko izmanto, lai nodrošinātu saziņu ar dažādām datu bāzēm.

Šādas sastāvdaļas esamību varētu uzskatīt par priekšrocību, taču darba procesā var saskarties ar zināmiem ierobežojumiem. Piemēram,Ūdenslīnijaneatbalsta darījumus, jaunas funkcijas un kļūdu labojumi tiek ieviesti nelaikā.

Kopumā lēnāka attīstība vēl nesen bija raksturīga visai kopienaiBuras, it īpaši salīdzinājumā ar citiem, kas atbalsta iepriekš aprakstītosExpress Un Koa. Taču jāatzīmē, ka šobrīd Sails kopiena ir sākusi uzņemt apgriezienus un aktīvāk attīstīties.

PROS:

✓ bagātīga funkcionalitāte

✓ Socket.io atbalsts

✓ dokumentācija vienuviet

✓ Vieglāk ir atrast speciālistu ar pieredzi burās

Mīnusi:

✗ smags

✗ lēns

✗ Ūdenslīnijas ierobežojumi

✗ nepietiekami detalizēta dokumentācija

Mēs esam aprakstījuši galvenās trim ietvariem raksturīgās īpašības, kas ir pilnīgi pietiekamas, lai par tiem veidotu objektīvu iespaidu.

Ja jums ir kādi jautājumi, sazinieties ar mums tūlīt!

Lai palīdzētu jums skaidrāk salīdzināt trīs ietvarus, pamatojoties uz iepriekš minētajām funkcijām, uzņēmumspiedāvā nelielusalīdzināšanas tabula.

Mēģināsim darītvispārējs secinājumsno tā, ko mēs jau zinām par trim izskatāmajām sistēmām. Noteiksim, kuriem projektiem kopumā katrs no tiem ir piemērotāks:

Express.js piemērots:

  • iesācēju programmētāji, kuri ir vērsti uz profesionālo izaugsmi Node JS;
  • lieli projekti, kas saistīti ar pielāgošanu;
  • gadījumos, kad nepieciešams ilgtermiņa pieteikuma atbalsts.

Sails.js piemērots:

  • ātra projekta uzsākšana;
  • ātri jaundibināti uzņēmumi, kas neplāno paplašināties nākotnē;
  • reāllaika lietojumprogrammas, kur nepieciešama tūlītēja atbilde;
  • iesācēji Node.js programmētāji;
  • lietojumprogrammas, kurām nav nepieciešams ilgtermiņa atbalsts.

Taisnības labad jāatzīmē, ka reāllaika lietojumprogrammas var izveidot arī, izmantojot Express. Tomēr, izstrādājot šādu lietojumprogrammu, izmantojot Sails, tā izveide un konfigurēšana prasīs daudz mazāk laika un pūļu.

Koa.js piemērots:

  • gan maziem, gan lieliem projektiem, kas ietver turpmāko attīstību;
  • projektiem ar augstu pielāgošanas pakāpi;
  • lai atvieglotu ilgtermiņa pieteikumu atbalstu.

Tagad, kad esam sīki apskatījuši katra no trim ietvariem plusus un mīnusus, parunāsim par to, kuru ietvaru mēs izvēlamies. un kāpēc.

Mēs izvēlamies Koa, jo:

  • Tāpat kā Express, arī Koa neierobežo izstrādātāju iespēju izmantot iebūvētos moduļus, bet dod iespēju izvēlēties kādu no tiem komplektitieši tāds, kas ir vislabāk piemērots konkrētam projektam;
  • Koa ietver pārbaudītās un plaši izmantotās Express sistēmas stiprās puses;
  • Koa radītājiem bija iespēja analizēt grūtības, ar kurām saskaras izstrādātāji, izmantojot Express;
  • veidojot Koa, tika ņemti vērā tā priekšgājēja trūkumi;
  • Koa ir balstīta uz jauniem standartiem un seko mūsdienu tendencēm;
  • Koa ir piemērots, lai izstrādātu plašu jebkura izmēra lietojumu klāstu ar jebkādu pielāgošanas pakāpi un ar jebkādām atbalsta prasībām;

... un vissvarīgākais arguments – tā ir pašu speciālistu pozitīvā pieredze, kas iegūta, strādājot ar šo ietvaru.

Jebkurā gadījumā pieejiet lēmumam no racionāla viedokļa un dodiet priekšroku karkasam, kas ir aprīkots atbilstoši jūsu īpašajām prasībām.

Mēs vienmēr esam gatavi atbalstīt jūsu izvēli un palīdzēt īstenot jebkuru projektu. Neatliec uz rītdienu un tieši tagad!

Darba sākšana ar Express

Pēdējā atjaunināšana: 18.11.2018

Šajā nodaļā mēs apskatīsim servera izveidi, izmantojot Express ietvaru. Šķiet, kāpēc mums ir vajadzīgs papildu ietvars, ja mēs varam izmantot gatavo http moduli, kas atrodas Node.js API. Tomēr pats Express izmanto http moduli, bet tajā pašā laikā tas nodrošina vairākas gatavas abstrakcijas, kas vienkāršo servera un servera puses loģikas izveidi, jo īpaši iesniegto veidlapu apstrādi, darbu ar sīkfailiem, CORS utt. .

Izveidosim projektam jaunu direktoriju, kuru sauksim, piemēram, expressapp. Lai saglabātu informāciju par visām projekta atkarībām, mēs definēsim jaunu failu package.json šajā direktorijā:

("name": "expressapp", "version": "1.0.0", "dependencies": ("express": "^4.16.4"))

Izveidosim jaunu failu app.js projekta direktorijā:

// pieslēgt express const express = prasīt("ekspress"); // izveidot lietojumprogrammas objektu const app = express(); // definēt apdarinātāju maršrutam "/" app.get("/", function(request, response)( // nosūtīt atbildes atbildi.send("

Sveiki Express!

"); )); // sākt klausīties savienojumus portā 3000 app.listen(3000);

Lai izmantotu Express, vispirms ir jāizveido objekts, kas pārstāvēs lietojumprogrammu:

Const app = express();

Programmā Express ir vairākas iebūvētas funkcijas pieprasījumu apstrādei, un viena no tām ir funkcija app.get(). Tas apstrādā HTTP GET pieprasījumus un ļauj saistīt maršrutus ar konkrētiem apstrādātājiem. Lai to izdarītu, pirmais parametrs ir maršruts, bet otrais ir apstrādātājs, kas tiks izsaukts, ja pieprasījums serverim atbilst šim maršrutam:

App.get("/", function(pieprasījums, atbilde)( // nosūtīt atbildi atbildi.send("

Sveiki Express!

"); });

"/" maršruts apzīmē saknes maršrutu.

Lai palaistu serveri, tiek izsaukta metode app.listen(), kurai tiek nodots porta numurs.

Uzsāksim projektu un pārlūkprogrammā piekļūstam adresei http://localhost:3000/:

Un vēl svarīgāk ir tas, ka Express paļaujas uz maršruta sistēmu, tāpēc visi citi pieprasījumi, kas neatbilst saknes maršrutam "/", netiks apstrādāti:

Tagad mainīsim failu app.js:

Const izteikt = prasīt ("izteikt"); const app = express(); app.get("/", function(pieprasījums, atbilde)( response.send("

Mājas lapa

"); )); app.get("/about", function(pieprasījums, atbilde)( response.send("

Par vietni

"); )); app.get("/kontaktpersona", funkcija(pieprasījums, atbilde)( response.send("

Kontakti

"); )); app.listen(3000);

Lietojumprogrammai tagad ir definēti trīs maršruti, kurus apstrādās serveris.

Vai jums patika raksts? Dalies ar draugiem!