Middle
Ի՞նչ են վեբ աշխատողները և ինչու են դրանք անհրաժեշտ:
sobes.tech AI
Պատասխան AI-ից
Վեբ-վերդերը՝ դա JavaScript-կոդը ֆոնային հոսքում գործարկելու միջոց է, որը առանձին է բրաուզերի հիմնական UI-հոսքից:
Նպատակը:
- Կատարման ռեսուրսային ծանր հաշվարկներ առանց հիմնական հոսքի բլոկավորման, ինչը կանխում է ինտերֆեյսի կախվելը:
- Մեծ տվյալների մշակումը կամ երկարատև գործողությունների (օրինակ՝ պարսկում, սեղմում, ցանցային հարցումներ որոշ դեպքերում) ֆոնային ռեժիմում:
- Վեբ-հավելումների արտադրողականության և արձագանքման բարելավում:
Վեբ-վերդերի տեսակները:
- Նվիրված Վերդեր: կապված է իր ծնող սցենարի հետ:
- Կիսասեր Վերդեր: կարող է լինել միաժամանակ մի քանի սցենարների միջև, որոնք աշխատում են տարբեր պատուհաններում կամ ներդիրներում նույն դոմենում:
- Ծառայության Վերդեր: խափանում է ցանցային հարցումները, կառավարում է կեշավորումը, ապահովում է օֆլայն հասանելիություն, աջակցում է push ծանուցումներին:
Նմուշ՝ Նվիրված Վերդերի ստեղծում և օգտագործում:
// main.js (հիմնական հոսք)
const worker = new Worker('worker.js');
// ուղարկում հաղորդագրություն վերդերին
worker.postMessage('Սկսել ծանր հաշվարկներ');
// ստանում հաղորդագրություն վերդերից
worker.onmessage = function(event) {
console.log('Ստացվել է վերդերից:', event.data);
};
// worker.js (վերդերի կոդ)
self.onmessage = function(event) {
console.log('Ստացվել է վերդերում:', event.data);
// ծանր հաշվարկների իմիտացիա
let result = 0;
for (let i = 0; i < 1000000000; i++) {
result += i;
}
// հաղորդագրություն վերադառնալ հիմնական հոսք
self.postMessage('Հաշվարկները ավարտվեցին, արդյունքը՝ ' + result);
};
Հաշվարկային սահմանափակումներ:
- Ոչ մի ուղղակի մուտք դեպի DOM:
- Չի կարելի օգտագործել որոշ գլոբալ փոփոխականներ հիմնական հոսքից (օրինակ՝
window,document): - Կապը տեղի է ունենում ասինխրոն հաղորդագրությունների փոխանակման միջոցով (
postMessageևonmessage/addEventListener('message')): - Տվյալները հոսքերի միջև փոխանցվում են պատճենավորման միջոցով (ստրուկչուրացված կլոնավորման ալգորիթմ), բայց մեծ տվյալների համար կարելի է օգտագործել
Transferable Objects՝ փոխանցելու հղումով (որից ելք է ունենում սկզբնական հոսքը):