Gvidilo por komencantoj en Node.js kaj NPM

Kiel komenci per Node.js kaj la Noda Paka Administranto

Hodiaŭ mi gvidos vin tra la bazoj de Node.js kaj NPM, inkluzive de klarigoj pri kiel disvolvi por la reto ĝenerale. Nur notu antaŭe: se vi konas bazan TTT-disvolviĝon kaj NPM, vi povas preterlasi ĉi tiun artikolon kaj lerni pli pri la tre utila NPX ĉi tie.

Bone, bonege! Ni komencu!

Node.js

Se vi legas ĉi tion, vi verŝajne jam elŝutis Node.js + NPM kaj komencis renversi vian piedfingron en la akvojn de Javascript. Tamen la unuaj paŝoj povus jam ŝajni timigaj: "Mi volas nur skribi programeton en Javascript, kial mi bezonas ĉiujn aliajn aĵojn?". Tio estas komprenebla, sed vere tute ne gravas.

Ni komencu de la komenco: Vi povas simple krei Javascript-dosieron ĉie en via komputilo, indikita per la '.js'-sufikso. Ĉi tiu dosiero povas esti plenigita per kodo kiel vi volas, sed tiam mankas unu afero: kiel vi efektive rulas vian programon? Jen kie Node.js eniras.

Node.js estas rultempa medio, eksplicite por Javascript. Kiel la priskribo implicas, Node povas ruli vian Javascript-kodon en specifa medio, kiun Nodo mem provizas. La procezo estas ĉiam la sama: vi unue lanĉas Node.js, kaj kiam Node estas ŝpinita (kio signifas, ke ĝi finiĝis) vi povas provizi al ĝi vian Javascript-kodon.

Estas du manieroj kiel via Javascript povas esti provizita al Nodo kiel enigo:

  1. Rekte al la kuranta Nodo-procezo, linio post linio, neniuj dosieroj inkluzivitaj
  2. Dirante al Node kiun Javascript-dosieron ŝargi, sen ajna linio-post-linia enigo
node

Linio post linio

Post kiam vi sukcese instalis Node.js (kiu nur elŝutas + funkcias la instalilon, priskriboj estas en la retejo de Node), vi povas ekfunkciigi Node.js de ĉie en via Terminalo (macOS/Linukso) aŭ PowerShell (Vindozo) . La komando aspektas tiel.

Jes, jen ĉio! Vi ĵus sukcese lanĉis Node! Ĉu vi rimarkis kiom rapide ĉi tio okazis? Unu el la kialoj, kial Node.js estas tiel populara, estas ĝuste pro ĝia ege rapida ekfunkciigo (interalie).

Nun kiam Nodo funkcias, ni povas difini nian Javascript-ap linion post linio. Ĉiu enigo estas prilaborita kaj stokita en memoro. Jen malgranda ekzemplo.

(Hit enter after every line end) 
const greet = (name) => console.log("Hello, " + name);
greet("Tom"); let x = 10; x = x + 5; 

(enter the following line to terminate node)
.exit

Nun ĉio estas bona kaj bonkora, sed verki pli grandajn apojn postulas, ke ni unue redakti ilin en dosieroj antaŭ ol manĝi al Nodo. Sekva ĉapitro, mi petas!

Enigo per dosieroj

Por ĉi tiu ekzemplo vi bezonas tekstredaktilon. Esence vi povas uzi ĉiun programon, kiu povas manipuli tekston (kiel TextEdit ĉe macOS aŭ Redaktilo ĉe Vindozo). Mi rekomendas la malfermfontan VS Kodon de Microsoft, sed vi povas elekti kion ajn taŭgas por via ergonomio.

Por provizi dosieron kiel enigaĵon, ni nur devos krei unu. Nur kreu simplan tekstdosieron kun la sufikso 'js' en ĝia nomo. Ni nomos nian dosieron app.js. Nun malfermu vian elekton de komando (tiu uzata en nia unua ekzemplo). Certigu, ke vi malfermas ĝin el la dosierujo, kie la dosiero estas konservita, tio estas grava.

Se vi uzas VS Code, vi povas uzi ĝian enkonstruitan komandan promptilon, simple alklaku dekstre en via Esploristo-vido kaj voku "Malfermu en Kodo" (en Vindozo) aŭ trenu kaj faligi la dosierujon enhavanta la dosieron sur la VS-Kodo-Ikono en via Doko (macOS). Tiam vi povas malfermi ĝian terminalon kiel priskribite ĉi tie.

Kiam la terminalo estas preta, simple tajpu la sekvan komandon.

node app.js

Kiel vi vidas, kelkaj aferoj okazis:

  1. Nodo komenciĝis rekte, sen uzanta enigo disponebla
  2. Nodo prizorgis vian tutan dosieron de supre ĝis malsupre ĝis ĝi atingis sian finon
  3. Nodo mem finiĝis, ĉar la fino de la dosiero ankaŭ markis la finon de sia procezo

Kaj por baza enkonduko al Node.js, jen ĝi! Post kiam vi elŝutis Node kaj unue spertis la uzadon de la komanda prompto por lanĉi vian propran Javascript-aplikaĵon, ĉu linio post linio aŭ de dosiero, vi estas oficiale Javascript dev! Bonvenon al la klubo!

Mi nun gvidos vin tra la kerna koncepto de NPM. Post la sekva ĉapitro, ni rapide rigardos la rilaton inter Node.js, NPM kaj la reto-disvolviĝo. Se vi volas lerni pli pri Node.js, vi povas kontroli niajn rakontojn pri Javascript, ilĉenoj kaj ĉio rilata al kodigo ĉi tie. Mi ankaŭ ligis kelkajn utilajn rimedojn ĉe la fino de ĉi tiu artikolo por eĉ pli da aĵoj por lerni.

Bone, ni movu unu!

NPM, la Noda Pakaĵa Administranto

Kiel vi vidis, ne estas tiel malfacile administri vian propran kodon. La aplikaĵo povas esti konservita en dosiero, la ŝanĝoj kiujn vi aplikas nur restas. Sed kio se vi volus uzi la kodon de iu alia, diru kriptografian aŭ bild-manipuladan bibliotekon? Vi iel devas meti tiun kodon apud via, igi ĝin uzebla por via aplikaĵo kaj konservi ĉion regebla.

Naiva aliro estus nur elŝuti eksteran kodon rekte de la fonto, ekz. Github, kaj kopiu la bibliotekon, dosieron post dosiero, en vian propran projekton. Sed tio kondukas al kelkaj problemoj:

  • Kiel vi plej bone ĝisdatigas ĉi tiun eksteran kodon? Kopii mane ne estas la plej bona solvo.
  • Kiel vi kontrolas ĉiujn eksterajn kodojn?
  • Kio se ĉi tiu ekstera kodo mem dependas de bibliotekoj, kiuj ne estas instalitaj en via projekto?

Ĉiuj ĉi tiuj defioj estas traktataj de NPM, pakaĵmanaĝero por Node.js. La tasko de pakaĵadministranto esence estas doni al vi fortikan solvon pri kiel aldoni, konservi trakon kaj forigi eksteran kodon, ankaŭ konatan kiel dependecoj. Jen kelkaj ekzemploj de NPM en ago.

npm install serve-static npm remove serve-static

Kompreneble, ĉi tiu administranto bezonas kelkajn specialajn dosierojn mem por konservi trakon de ĉiuj dependecoj en via projekto. Tial aplikaĵoj uzantaj NPM havas almenaŭ du dosierojn: package.json same kiel package-lock.json. Vi povas voki la sekvan komandon por rapide krei novan NPM-pakaĵon.

npm init -y

Noto: kiel ni vidis en la unua parto de ĉi tiu artikolo, NPM ne bezonas uzi Node.js aŭ Javascript. Ĝia fokuso estas administri viajn dependecojn - nek pli, nek malpli. Per NPM vi povas elŝuti kodon publikigitan ĉe npmjs.com. Ĉiuj ĉi tiuj eksteraj moduloj estas konservitaj en via projekto en speciala dosierujo nomata node_modules. Vi praktike neniam devos ŝanĝi ĉi tiun dosierujon, ĉar ĝi estas plene administrita de NPM.

La package.json donas al vi sciojn pri viaj nuntempe uzataj dependecoj en la projekto. package-lock.json estas speciala dosiero, kiu konservas iujn metadatenojn pri mutacioj rilate vian package.json-file aŭ la node_modules-dosierujon kaj povas esti ignorita nuntempe.

Mi pensas, ke mi finos mian priskribon de la tre kerna koncepto de NPM, kion ĝi faras kaj kiajn dosierojn/dosierujojn ĝi aŭtomate generas. Pliaj informoj estas ligitaj ĉe la fino de la artikolo.

Arko al TTT-dev

Bone, vi nun konas la fundamentojn de Node.js kaj NPM. Sed kial diable ĉiuj ĉi aferoj estas eĉ necesaj por lerni, se vi nur volas komenci krei vian propran modernan retejon?

Kiel ni ĵus vidis, NPM permesas al ni elŝuti kodon el vasta kolekto de bibliotekoj (la plej granda ekzistanta, por esti preciza). Por TTT-evoluo, vi bezonos servilon kiu povas gastigi (tio estas, provizi) vian TTT-aplikaĵon. Estas multaj servoj disponeblaj, kie vi povas alŝuti vian retejon-projekton kaj uzi ekzistantan infrastrukturon, inkluzive de serviloj, por disponigi la retejon en la reto.

Kaj por loka evoluo, servilo ankaŭ estas postulata por ŝargi viajn lokajn dosierojn kaj disponigi ilin nur al vi, sur via aparato, dum disvolviĝo. Danke al Node.js, vi povas simple fari tion: disponigi vian retejon loke per tiel nomata localhost. Node.js havas la ilojn enkonstruitajn necesajn por lanĉi lokan servilon, sed per NPM, via aplikaĵo povas esti riĉigita per batal-testitaj komponantoj, kiuj povas helpi vin krei tre grandajn servojn en mallonga tempo.

Kompreneble tio estas nur la komenco: NPM gastigas tiom da kodo por konstrui modernajn retprogramojn (konatajn kiel PWA, "progreseman retejon") kaj ankaŭ kompleksajn servilojn. Sed por unua enkonduko, mi pensas, ke tiu klarigo estu bona.

Mi esperas, ke mi povus helpi vin ekkompreni Node.js kaj NPM. Unuaj paŝoj ĉiam estas la plej malfacilaj, sed tramordi la unuajn tagojn de disvolviĝo kaj (multa) lernado estos rekompencita per viaj kapabloj ekspansiiĝantaj al la disvolviĝo de modernaj TTT-aplikoj, ebligante vin konstrui kion ajn vi volas.