Kako da kreiram i izvršim svoj vlastiti Node.js modul?
UPGRADE vašeg sistema u terminalu. S obzirom da je prošlo poprilično dugo vremena od kada smo
započeli prvu lekciju Node.js tutorijala; proverite koju verziju Node.js imate instaliranu na vašem operativnom sistemu. U principu bi ste trebali uvek vršiti najnoviji Node.js update uglavnom zbog bag-ova. Zatim pređite u folder node_js_tutorial i pokrenite Visual Studio Code komandom:
manuel@manuel-virtual-machine:~/nodejs_tutorial$ code .
Kad vam se Visual Studio Code zajedno sa projektom u potpunosti otvori, u njegovom panel terminalu otkucajte sledeću komandu.
manuel@manuel-virtual-machine:~/nodejs_tutorial$ node lesson1
Server running at
http://127.0.0.1:3000/
Držite taster Ctrl pritisnut i kliknite na link. Otvoriće se vaš pretraživač i na stranici će biti ispisano Hello World. Naravno, ovaj mali modul smo odradili još u prvoj lekciji. Danas ćemo prvo da dovedemo u red malo strukturu našeg projekta. Kreirajte novi folder u projektu i nazovite ga lesson1. Zatim u njega prebacite fajl lesson1.js. Zatim ponovo proverite da li sve radi.
manuel@manuel-virtual-machine:~/nodejs_tutorial$ node lesson1/lesson1
Server running at http://127.0.0.1:3000/
Ukoliko je sve u redu, kreirajte novi folder u glavnom direktorijumu i nazovite ga lesson2. Zatim u njemu kreirajte dva nova fajla app.js i lesson2.js. Pre nego što počnemo sa kreiranjem modula, pogledajte prvo kako da kreirate package.json fajl koji će sadržavati neke osnovne stvari o našem projektu ali i spisak svih paketa i njihovih verzija koje instalirate u vaš projekat, koje zovemo depedencies - zavisnosti. Zahvaljujući ovom *.json fajlu u mogućnosti ste da povratite sve instalirane pakete u vašem projektu u slučaju da budu oštećeni ili obrisani. Najbolje da to testiramo, odmah! Ukucajte sledeću komandu u panel terminalu.
manuel@manuel-virtual-machine:~/nodejs_tutorial$ npm init
Zatim odgovorite na par pitanja.
package name: (nodejs_tutorial) nodejs_tutorial
… Enter
description: node.js tutorial
… Enter
author: Manuel Radovanovic
… Enter
Pogledajte package.json fajl koji je kreiran i njegov sadržaj:
"name": "node_js_tutorial",
"version": "1.0.0",
"description": "Node.js
Tutorial",
"main": "index.js",
"scripts": {
"test": "echo \"Error:
no test specified\" && exit 1"
},
"author": "Manuel
Radovanovic",
"license": "ISC"
}
I sad obratite pažnju. Pogledajte kako se instaliraju paketi u vaš projekat. Na primer prvo ćemo da instaliramo paket uuid. Uuid paket pruža funkcionalnost za generiranje kriptografski sigurnih standardnih UUID-ova sa podrškom za verzije 1, 3, 4 i 5 UUID-a, kao i podršku za više platformi za Node.js, CommonJS, Webpack, React Native Expo i još mnogo toga.
manuel@manuel-virtual-machine:~/nodejs_tutorial$ npm install uuid
Instalirajmo još jedan paket, na primer nodemon.
manuel@manuel-virtual-machine:~/nodejs_tutorial$ npm install -D nodemon
Nodemon je alat koji pomaže u razvoju aplikacija zasnovanih na Node.js automatskim ponovnim pokretanjem aplikacije čvora kada se otkriju promene datoteke u direktorijumu. U našem današnjem primeru nije toliko ni bitno koje pakete modula instaliramo, ovo radimo samo da bi ste imali uvid kako se paketi instaliraju. Pogledajte sad vašu strukturu projekta. Dobili ste novi folder node_modules i novi fajl package-lock.json. Međutim, pogledajte sadržaj package.json fajla. Njemu su dodate zavisnosti koje smo instalirali.
{
"name": "node_js_tutorial",
"version": "1.0.0",
"description": "Node.js
Tutorial",
"main": "index.js",
"scripts": {
"test": "echo \"Error:
no test specified\" && exit 1"
},
"author": "Manuel
Radovanovic",
"license": "ISC",
"dependencies": {
"uuid": "^9.0.1"
},
"devDependencies": {
"nodemon": "^3.0.3"
}
}
Zamislite sada da ste imali neku štetu na projektu. Izbrišite folder node_modules i fajl package-lock.json iz vašeg projekta. Pogledajte sadržaj package.json fajla i videćete da se sadržaj ovog fajla nije promenio. Zahvaljujući tom sadržaju oporavak našeg projekta je jednostavan. Samo pokrenite sledeću komandu u panel terminalu.
manuel@manuel-virtual-machine:~/nodejs_tutorial$ npm install
I naš projekat je povratio izgubljene pakete i fajl package-lock.json. Nadam se da vam je sada itekako jasno zašto je korisno kreirati i package.json fajl tokom kreiranja projekta. Obratite sada pažnju na naša dva nova prazna fajla app.js i lesson2.js. Otkucajte sledeći sadržaj u fajl lesson2.js.
// a variable for the internal use
var count = 0;
// a function which use the
variable for the internal use
const next = function() { return ++count; };
// a constant for the
external use
const PI = 3.14;
// a function for the
external use
const sum = (num1, num2) => num1 + num2;
// a class for the external
use
class Student {
// constructor
constructor(fname, lname, subject) {
this.fname = fname;
this.lname = lname;
this.subject = subject;
}
// method
introduction() {
console.log(`Hello! My name's ${this.fname} ${this.lname}, and I study ${this.subject}.`);
}
}
module.exports.next = next;
module.exports.PI = PI;
module.exports.sum = sum;
module.exports.Student =
Student;
U ovom modulu smo prvo ispisali kako se kreira neka promenjiva count koja ima samo opseg u navedenom fajlu ali i ne van njega. Ukoliko pažljivije pogledate na dnu fajla videćete da i ne postoji module.exports za promenjivu count. Module.exports je deo CommonJS formata modula specifikacije koji definiše objekt koji se kreira da bi neka druga datoteka mogla da uveze i koristi korišćenjem funkcije require(). Zatim smo kreirali jednu običnu funkciju koja koristi promenjivu count, ali funkcija next() ima svoj module.exports i zbog toga može da se pozove i koristi u drugom fajlu. Takođe smo kreirali jednu konstantnu, funkciju i klasu sa konstruktorom i metodom i svima njima omogućili da mogu da se koriste pozivanjem novo kreiranog modula. Da bi ste videli kako to sve funkcioniše otkucajte sledeći sadržaj u app.js fajl.
const lesson2 = require('./lesson2');
console.log(lesson2);
person1 = new
lesson2.Student('Manuel', 'Radovanovic', 'Computer
Science');
console.log(person1);
console.log(person1.introduction());
console.log(lesson2.PI);
console.log(lesson2.sum(5,10));
console.log(lesson2.next());
console.log(lesson2.next());
console.log(lesson2.next());
Prva konstanta lesson2 koristi funkciju require() kako bi bukvalno uvezla modul lesson2.js. Nije potrebno da navodite egzistenciju fajla, ali je poželjno da moduli budu u istom direktorijumu. Kreiranje i korišćenje konstanti u Node.js je često zbog toga što se na taj način smanjuje ispis kôda i zaobilaze greške prilikom kucanja. Sve što je definisano u modulu koji se poziva sa module.exports se može koristiti u fajlu koji poziva modul. Otkucajte sledeću komandu u terminal panelu.
manuel@manuel-virtual-machine:~/nodejs_tutorial$ node lesson2/app
Dobićete sledeći rezultat.
{
sum: [Function: sum],
PI: 3.14,
Student: [class Student],
next: [Function: next]
}
Student {
fname: 'Manuel',
lname: 'Radovanovic',
subject: 'Computer Science'
}
Hello! My name's Manuel Radovanovic, and
I study Computer Science.
undefined
3.14
15
1
2
3
Što se tiče optimizacije koda; u fajlu lesson2.js; zakomentarišite sledeći deo kôda:
/*
module.exports.next = next;
module.exports.PI = PI;
module.exports.sum = sum;
module.exports.Student =
Student;
*/
Ovo isto možete pisati i na ovaj skraćeni način.
module.exports = { sum:sum, PI:PI, Student:Student, next:next }
Kako smo sve ovo kreirali i kako sve ovo izgleda, možete pogledati i u video-u:
No comments:
Post a Comment