Za svakog početnika koji počinje sa učenjem i korišćenjem Node.js platforme, bez obzira na kom su nivou poznavanja JavaScript-a; može biti jako zbunjujuće da Node.js koristi i CommonJS i ES6 formate modula. Još kad vas pitaju, šta je sa ES7 specifikacijom skriptnog jezika, mislim da je to prva stvar koju treba objasniti. CommonJS je pre svega nastao kao projekat za standardizaciju ekosistema modula za JavaScript programski jezik izvan veb pretraživača. CommonJS-ova specifikacija o tome kako moduli treba da rade se danas široko koristi za JavaScript programski jezik na strani servera sa Node.js platformom, ali takođe se koristi za JavaScript programski jezik na strani veb pretraživača. Međutim, taj kôd mora biti upakovan sa transpilerom pošto pretraživači ne podržavaju CommonJS. Znači, CommonJS je stariji standard koji se koristi u Node.js platformi za format modula i sad se tretira kao default. Većina ugrađeni modula je kreirano u CommonJS format modula. Dolaskom, ECMAScript 2015 ili skraćeno ES6 format modula je postalo veliko poboljšanje za ceo svet JavaScript programskog jezika, tako i novijih verzija Node.js platforme. Danas, Node.js podržava i CommonJS i ES6 formate modula i bez obzira što su oba modul formata konceptualno slični, oni se praktično na različite načine itekako razlikuju. Što se tiče novijeg ES7 formata modula u Node.js platformi, tako nešto ne postoji jer ES7 nije doneo ništa novo po pitanju formata modula, već se ES7 uglavnom fokusira na druge programsko jezičke karakteristike. Šta će se menjati u budućnosti, za sada možemo samo da pretpostavljamo; ali do tada trenutna podrška za Node.js platformu se isključivo oslanja na CommonJS i ES6 formate modula. ES6 format modula postaje sve popularniji i bolji izbor za novije projekte, naročito u novijim Node.js verzijama, ali se CommonJS definitivno koristi.
Kako da promenimo modul koji je kodiran u CommonJS u ES6 format modula?
ekstenzije fajla i malo sintakse je moguće preći iz jednog modula formata u drugi. Definitivno, ovakvom praksom će te uočiti razliku. Vratite se u prethodnu lekciju 2 i pogledajte kako smo kreirali CommonJS format modula, pogledajte ovde. Da ne bi ste ponovo pisali isti kôd; kad pokrenete projekat u Visual Studio Code-u; jednostavno kopirajte direktorijum lesson2 u isti glavni direktorijum node_js_tutorial i preimenujte ga u lesson3. Zatim preimenujte sledeće fajlove i njihove ekstenzije; lesson2.js u lesson3.mjs i app.js u app.mjs. Sad vam ostaje samo da promenite malo JavaScript programski kôd. Otvorite fajl lesson3.mjs i promenite sledeće.
// a variable for the
internal use
// var count = 0;
let count = 0;
// a function which use the
variable for the internal use
// const next = function()
{ return ++count; };
const next = () => ++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;
*/
// module.exports = {
sum:sum, PI:PI, Student:Student, next:next }
export default { sum, PI, Student, next };
Kao što možete prvo videti iz navedenog JavaScript programskog kôda, ES6 format modula umesto var koristi ključnu reč let za deklarisanje promenjivih poput count u ovom slučaju. Arrow funkcije pružaju kraći i čitljiviji način za definisanje funkcija, tako da i funkciju next() u ovom slučaju možemo skratiti. I na kraju fajla umesto strukture module.exports koristimo export default; ali isto tako i template stringovi omogućavaju lako uključivanje promenljivih u string literal, čime se poboljšava čitljivost i izbegava potreba za konkatenacijom stringova. Otvorite fajl app.mjs, i promenite sledeće:
// const lesson2 = require('./lesson2');
// Importing the module
import lesson3 from './lesson3.mjs';
console.log(lesson3);
// Creating an instance of
thr Student class
const person1 = new lesson3.Student('Manuel', 'Radovanovic', 'Computer Science');
// Logging the instance
console.log(person1);
// Calling the introduction
method
console.log(person1.introduction());
// Logging the values from
the module
console.log(lesson3.PI);
console.log(lesson3.sum(5,10));
// Calling the next
function from the module
console.log(lesson3.next());
console.log(lesson3.next());
console.log(lesson3.next());
Kad pričamo o ES6 modul formatu onda definitivno mislimo na učitavanje modula pomoću funkcije import umesto require koje koristi CommonJS modul formata. Sve ostalo će isto funkcionisati, s time da smo ovom jednostavnom JavaScript programskom kôdu dodelili komentare da bi vam stvari bile jasnije. Sad jednostavno otkucajte sledeću komandu u terminal panelu.
manuel@manuel-virtual-machine:~/nodejs_tutorial$ node lesson3/app.mjs
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
Kako
smo sve ovo odradili i kako sve ovo izgleda, možete pogledati i u video-u:
No comments:
Post a Comment