CommonJS
CommonJS Modules․ require և module.exports
CommonJS-ը մոդուլային համակարգ է, որը ստեղծվել է հիմնականում Node.js միջավայրի համար։ Այն թույլ է տալիս բաժանել կոդը փոքր ֆայլերի և օգտագործել դրանք միմյանց մեջ։ CommonJS-ը դարձավ de-facto ստանդարտ Node.js հավելվածներում և լայն տարածում գտավ մինչ ES Modules-ի (ESM) հայտնվելը։
CommonJS-ում յուրաքանչյուր ֆայլ հանդիսանում է առանձին մոդուլ, որն ունի իր սեփական scope։ Մոդուլը կարող է արտահանել տվյալներ, ֆունկցիաներ կամ օբյեկտներ, և դրանք կարող են ներմուծվել այլ ֆայլերում։
CommonJS-ում մոդուլներ ներմուծելու համար օգտագործվում է require()
ֆունկցիան, իսկ արտահանելու համար՝ module.exports
օբյեկտը։
// greet.js ֆայլ
function greet(name) {
return `Բարև, ${name}!`;
}
module.exports = greet;
// main.js ֆայլ
const greet = require('./greet');
console.log(greet('Անի')); // Բարև, Անի!
Ինչպես տեսնում ենք, greet.js
ֆայլը արտահանում է greet
ֆունկցիան module.exports
-ի միջոցով, իսկ main.js
-ում այն ներմուծում ենք require()
ֆունկցիայով։
CommonJS-ում կա երկու տարբերակ արտահանում անելու՝ module.exports
և exports
։ Ի սկզբանե exports
-ը պարզապես հղում է անում module.exports
-ին։ Սակայն պետք է զգույշ լինել․
// ՕՐԻՆԱԿ՝ ճիշտ օգտագործում
exports.greet = function(name) {
return `Բարև, ${name}!`;
};
// ՕՐԻՆԱԿ՝ սխալ օգտագործում
exports = function(name) {
return `Բարև, ${name}!`;
};
Երկրորդ տարբերակում exports
հղումը կփոխվի այլ օբյեկտի վրա, և Node.js-ը չի իմանա, թե ինչ արտահանել։ Ուստի եթե ուզում ես ամբողջ մոդուլը արտահանել, օգտագործիր միայն module.exports
։
require()
ֆունկցիան կատարում է ներմուծումը սինխրոն կերպով։CommonJS-ը առաջին լայնորեն ընդունված մոդուլային համակարգն էր JavaScript աշխարհում։ Այն հիանալի է աշխատում Node.js-ում և շարունակում է մնալ կարևոր մասը server-side հավելվածների։ Հաջորդ հոդվածում կծանոթանանք ES Modules-ին՝ modern JavaScript-ի պաշտոնական մոդուլային համակարգին։