Да ли сте се икада запитали како изгледа да неке веб странице раде чак и када сте ван мреже? Тајна је једноставна: ове веб странице имају сервисне раднике.

Услужни радници су кључна технологија која стоји иза многих карактеристика модерних веб апликација сличних изворним апликацијама.

Шта су услужни радници?

Услужни радници су специјализована врста ЈаваСцрипт веб радници. Сервисни радник је ЈаваСцрипт датотека која функционише као прокси сервер. Хвата одлазне мрежне захтеве из ваше апликације, омогућавајући вам да креирате прилагођене одговоре. Можете, на пример, да сервирате кеширане датотеке кориснику када је ван мреже.

Сервисни радници вам такође омогућавају да додате функције као што је позадинска синхронизација вашим веб апликацијама.

Зашто услужни радници?

Веб програмери већ дуже време покушавају да прошире могућности својих апликација. Пре него што су се појавили сервисери, могли сте користити различита решења да бисте то учинили могућим. Посебно значајан био је АппЦацхе, који је учинио ресурсе за кеширање згодним. Нажалост, имао је проблема који су га учинили непрактичним решењем за већину апликација.

instagram viewer

Чинило се да је АппЦацхе добра идеја јер вам је омогућио да једноставно одредите средства за кеширање. Међутим, направио је многе претпоставке о томе шта покушавате да урадите, а затим се ужасно покварио када ваша апликација није тачно следила те претпоставке. Прочитајте Џејка Арчибалда (нажалост са насловом, али добро написано) Кеш апликације је глупан За више детаља. (Извор: МДН)

Сервисни радници су тренутни покушај да се смање ограничења веб апликација, без недостатака технологије као што је АппЦацхе.

Случајеви употребе за услужне раднике

Дакле, шта вам тачно дозвољавају услужни радници? Сервисни радници вам омогућавају да вашој веб апликацији додате функције које су карактеристичне за изворне апликације. Они такође могу да пруже нормално искуство на уређајима који не подржавају сервисне раднике. Овакве апликације се понекад називају Прогресивне веб апликације (ПВА).

Ево неких функција које сервисери омогућавају:

  • Омогућавање кориснику да настави да користи апликацију (или бар њене делове) када више није повезан на интернет. Услужни радници то постижу тако што услужују кеширана средства као одговор на захтеве.
  • У прегледачима заснованим на Цхромиум-у, сервисер је један од услова да би веб-апликација могла да се инсталира.
  • Сервисни радници су неопходни да би ваша веб апликација могла да имплементира пусх обавештења.

Животни циклус услужног радника

Услужни радници могу контролисати захтеве за цео сајт или само за део страница сајта. Одређена веб страница може имати само једног активног сервисера, а сви сервисери имају животни циклус заснован на догађајима. Животни циклус услужног радника генерално изгледа овако:

  1. Регистрација и преузимање радника. Живот сервисера почиње када га ЈаваСцрипт датотека региструје. Ако је регистрација успешна, сервисер преузима, а затим почиње да ради унутар посебне нити.
  2. Када се учита страница коју контролише сервисер, сервисер прима догађај 'инсталл'. Ово је увек први догађај који сервисер прима, а можете да подесите слушалац за овај догађај унутар радника. Догађај 'инсталл' се генерално користи за преузимање и/или кеширање свих ресурса који су потребни сервисеру.
  3. Након што сервисер заврши инсталацију, добија догађај 'активације'. Овај догађај омогућава раднику да очисти сувишне ресурсе које су користили претходни радници сервиса. Ако ажурирате сервисера, догађај активације ће се покренути само када је то безбедно. Ово је када нема учитаних страница које још увек користе стару верзију сервисера.
  4. Након тога, сервисер има пуну контролу над свим страницама које су учитане након што је успешно регистрован.
  5. Последња фаза животног циклуса је редундантност, која се јавља када се сервисер уклони или замени новијом верзијом.

Како користити Сервице Воркерс у ЈаваСцрипт-у

АПИ сервисера (МДН) пружа интерфејс који вам омогућава да креирате и комуницирате са сервисерима у ЈаваСцрипт-у.

Сервисни радници се првенствено баве мрежним захтевима и другим асинхроним догађајима. Као резултат тога, АПИ сервисера интензивно користи Обећања и асинхроно програмирање.

Да бисте креирали сервисера, прво што треба да урадите је да позовете навигатор.сервицеВоркер.регистер() методом. Ево како би то могло да изгледа:

ако ('сервицеВоркер' у навигатору) {
навигатор.сервицеВоркер.регистер('/св.јс').тхен(функција(Регистрација){
цонсоле.лог('Регистрација услужног радника је успела:', Регистрација);
}).цатцх((грешка) => { цонсоле.лог('Регистрација услужног радника није успела:', грешка); });
} друго {
цонсоле.лог('Услужни радници нису подржани.');
}

Најудаљенији иф блок врши детекцију карактеристика. Осигурава да ће се код везан за сервисерке покретати само на претраживачима који подржавају сервисне раднике.

Затим, код позива тхе регистровати методом. Проследи му путању до сервисера (у односу на порекло сајта) да га региструје и преузме. Тхе регистровати метода такође прихвата опциони параметар који се зове опсег, који се може користити за ограничавање страница које контролише радник. Сервисни радници подразумевано контролишу све странице апликације. Тхе регистровати метода враћа Промисе које показује да ли је регистрација била успешна.

Ако се обећање реши, услужни радник се успешно регистровао. Код затим штампа објекат који представља регистрованог сервисера на конзоли.

Ако процес регистрације не успе, код хвата грешку и евидентира је на конзоли.

Затим, ево поједностављеног примера како би сам сервисер могао да изгледа:

селф.аддЕвентЛистенер('инсталирај', (догађај) => {
евент.ваитУнтил(НоваОбећај((решити, одбацити) => {
цонсоле.лог("ради ствари за подешавање")
реши()
}))
цонсоле.лог("Сервисер је завршио инсталацију")
})

селф.аддЕвентЛистенер('активирати', (догађај) => {
евент.ваитУнтил(НоваОбећај((решити, одбацити) => {
цонсоле.лог("ради чишћење ствари!")
реши()
}))
цонсоле.лог('активација обављена!')
})

селф.аддЕвентЛистенер('донети', (догађај) => {
цонсоле.лог("Захтев је пресретнут", догађај)
});

Овај демо сервисер има три слушаоца догађаја, регистрована против себе. Има један за догађај 'инсталл', 'ацтивате' и догађај 'фетцх'.

Унутар прва два слушаоца, код користи чекати методом. Овај метод прихвата обећање. Његов посао је да осигура да ће сервисер сачекати да се обећање реши или одбије пре него што пређе на следећи догађај.

Слушалац преузимања покреће се сваки пут када се постави захтев за ресурс који сервисер контролише.

Ресурси које контролише сервисер обухватају све странице које контролише, као и сва средства наведена на тим страницама.

Побољшајте своје веб апликације уз помоћ сервисера

Услужни радници су посебна врста веб радника који служе јединственој сврси. Они седе испред мрежних захтева да би омогућили функције као што је приступ апликацијама ван мреже. Коришћење сервисних радника у веб апликацији може знатно побољшати њено корисничко искуство. Можете креирати сервисне раднике и комуницирати са њима користећи АПИ за сервисерке.