Maktaba kupitia Kufunga kwa Kazi katika JavaScript
Mara nyingi katika JavaScript huundwa maktaba, zinazowakilisha seti za kazi kwa matumizi ya programu wengine.
Maktaba kama hizi kwa kawaida hufungwa ndani ya moduli kupitia kufunga kwa kazi. Hii inafanywa ili wakati wa kuunganisha maktaba ulimwenguni wa nje kutoke kazi chache iwezekanavyo.
Kwa kawaida kila maktaba hujitahidi kuunda ulimwenguni wa nje kutofautisha moja tu - kitu chenye kazi za maktaba. Wakati huo huo ndani ya msimbo wa maktaba sehemu ya kazi ni kuu, na sehemu - saidizi. Ni wazi, kwamba tunataka kusafirisha kwenda nje kazi tu muhimu, bila kuchafua kitu kilichosafirishwa kwa kazi saidizi.
Wacha tuangalie kwa mfano. Wacha tuseme tuna seti ifuatayo ya kazi, ambazo sisi tungependa kuzibadilisha kuwa maktaba:
function square(num) {
return num ** 2;
}
function cube(num) {
return num ** 3;
}
function avg(arr) {
return sum(arr, 1) / arr.length;
}
function digitsSum(num) {
return sum(String(num).split(''));
}
// kazi saidizi
function sum(arr) {
let res = 0;
for (let elem of arr) {
res += +elem;
}
return res;
}
Wacha tuwasilishe kazi zetu kwa namna ya moduli:
;(function() {
function square(num) {
return num ** 2;
}
function cube(num) {
return num ** 3;
}
function avg(arr) {
return sum(arr, 1) / arr.length;
}
function digitsSum(num) {
return sum(String(num).split(''));
}
// kazi saidizi
function sum(arr) {
let res = 0;
for (let elem of arr) {
res += +elem;
}
return res;
}
})();
Na sasa tusafirishe kazi zote, isipokuwa saidizi:
;(function() {
function square(num) {
return num ** 2;
}
function cube(num) {
return num ** 3;
}
function avg(arr) {
return sum(arr, 1) / arr.length;
}
function digitsSum(num) {
return sum(String(num).split(''));
}
// kazi saidizi
function sum(arr) {
let res = 0;
for (let elem of arr) {
res += +elem;
}
return res;
}
window.math = {square, cube, avg, digitsSum};
})();
Wacha tuseme tuna ukurasa wa HTML index.html:
<html>
<head>
<script>
</script>
</head>
</html>
Wacha tuunganishe maktaba yetu nayo:
<html>
<head>
<script src="math.js"></script>
<script>
</script>
</head>
</html>
Wacha tutumie kazi kutoka kwa maktaba yetu:
<html>
<head>
<script src="math.js"></script>
<script>
alert(math.avg([1, 2, 3]) + math.square());
</script>
</head>
</html>
Kuna msimbo ufuatao:
function avg1(arr) {
return sum(arr, 1) / arr.length;
}
function avg2(arr) {
return sum(arr, 2) / arr.length;
}
function avg3(arr) {
return sum(arr, 3) / arr.length;
}
// kazi saidizi
function sum(arr, pow) {
let res = 0;
for (let elem of arr) {
res += elem ** pow;
}
return res;
}
Wasilisha msimbo huu kwa namna ya moduli. Safirisha nje kazi zote, isipokuwa saidizi.
Jifunze maktaba ya underscore.
Fanya maktaba yako sawa, ukirudia
ndani yake 5-10 kazi za asili
maktaba.