Sobes.tech
Middle

Ի՞նչ են վեբ աշխատողները և ինչու են դրանք անհրաժեշտ:

sobes.tech AI

Պատասխան AI-ից

Վեբ-վերդերը՝ դա JavaScript-կոդը ֆոնային հոսքում գործարկելու միջոց է, որը առանձին է բրաուզերի հիմնական UI-հոսքից:

Նպատակը:

  • Կատարման ռեսուրսային ծանր հաշվարկներ առանց հիմնական հոսքի բլոկավորման, ինչը կանխում է ինտերֆեյսի կախվելը:
  • Մեծ տվյալների մշակումը կամ երկարատև գործողությունների (օրինակ՝ պարսկում, սեղմում, ցանցային հարցումներ որոշ դեպքերում) ֆոնային ռեժիմում:
  • Վեբ-հավելումների արտադրողականության և արձագանքման բարելավում:

Վեբ-վերդերի տեսակները:

  1. Նվիրված Վերդեր: կապված է իր ծնող սցենարի հետ:
  2. Կիսասեր Վերդեր: կարող է լինել միաժամանակ մի քանի սցենարների միջև, որոնք աշխատում են տարբեր պատուհաններում կամ ներդիրներում նույն դոմենում:
  3. Ծառայության Վերդեր: խափանում է ցանցային հարցումները, կառավարում է կեշավորումը, ապահովում է օֆլայն հասանելիություն, աջակցում է 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՝ փոխանցելու հղումով (որից ելք է ունենում սկզբնական հոսքը):