ایک طویل وقت کے لئے، آف لائن کی فعالیت، پس منظر کی مطابقت پذیری اور دھکا نوٹیفکیشن نے ان کے ویب ہم منصبوں سے مقامی اطلاقات کو مختلف کر دیا ہے. The. سروس کارکن API. کھیل ہی کھیل میں تبدیل کرنے والی ٹیکنالوجی ہے جو کھیل کے میدان میں چلتا ہے. اس ٹیوٹوریل میں، ہم اس صفحہ کو تعمیر کرنے کے لئے استعمال کریں گے جو کوئی انٹرنیٹ کنکشن نہیں ہے جبکہ مواد کی خدمت کرسکتا ہے.
سروس کارکنوں کے بارے میں سوچنے کا سب سے آسان طریقہ کوڈ کے ایک ٹکڑے کے طور پر ہے جو ایک کلائنٹ مشین پر سائٹ کی طرف سے نصب کیا جاتا ہے، پس منظر میں چلتا ہے، اور اس کے بعد اس سائٹ پر بھیجے جانے والی درخواستوں کو مداخلت اور جوڑی کرنے کے قابل بناتا ہے. کیونکہ یہ ایسی طاقتور صلاحیت ہے، ایک زندہ ماحول میں سروس کارکنوں کے ساتھ کام کرنے کے لئے آپ کو HTTPS پر چلنے کی ضرورت ہے. اس بات کو یقینی بناتا ہے کہ وہ استحصال نہیں کی جاسکتی ہیں، اس بات کا یقین کرکے سروس کارکن براؤزر کو ایک صفحے سے حاصل کرتا ہے حقیقی ہے.
ترقی کے مقاصد کے لئے، تاہم، ہم بغیر HTTPS کے بغیر چل سکتے ہیں http: // localhost / اس اصول کے استثنا کے طور پر اجازت دی جاتی ہے. شروع کرنے کا سب سے آسان طریقہ NPM کے ساتھ ہے HTTP سرور پیکیج
این پی ایم HTTP سرور انسٹال کریں
http-server -p 8000 -C-1
ابھی سرور پر کچھ بھی نہیں ہے، لہذا ہم خدمت کرنے کے لئے ایک بنیادی صفحہ بناتے ہیں. ہم ایک نیا index.html فائل بنائیں گے، اور جب ہم سرور چلاتے ہیں تو اب یہ قابل رسائی ہو گا http: // localhost: 8000. .
اس مرحلے میں، آپ یہ محسوس کریں گے کہ اگر آپ HTTP سرور کو ختم کرتے ہیں اور براؤزر میں صفحہ کو تازہ کر دیتے ہیں، تو آپ سائٹ تک پہنچنے کے بعد سے ایک غلطی کا صفحہ ملیں گے. یہ مکمل طور پر متوقع ہے کیونکہ ہم ابھی تک کسی بھی آف لائن مواد کو نہیں بناتے ہیں.
اور ایل ٹی؛! ڈیکٹائپ ایچ ٹی ایم ایل اور جی ٹی؛
& lt؛ ایچ ٹی ایم ایل اور جی ٹی؛
& lt؛ سر اور جی ٹی؛
& lt؛ میٹا چارسیس = "UTF-8" / & GT؛
& lt؛ عنوان اور GT؛ سروس کارکن اور ایل ٹی؛ / عنوان اور جی ٹی؛
& lt؛ سکرپٹ SRC = "site.js" & gt؛ & lt؛ / script & gt؛
& lt؛ لنک REL = "Stylesheet" کی قسم = "ٹیکسٹ / سی ایس ایس" href = "custom.css" & gt؛
& lt؛ / سر اور جی ٹی؛
& lt؛ جسم اور جی ٹی؛
& lt؛ ہیڈر اور جی ٹی؛
& lt؛ h1 & gt؛ خوش آمدید اور LT؛ / H1 اور GT؛
& lt؛ / ہیڈر اور جی ٹی؛
& lt؛ div id = "مواد" اور GT؛
& lt؛ p & gt؛ یہاں مواد & lt؛ / p & gt؛
& lt؛ img src = "kitty.jpg" چوڑائی = "100٪" اور جی ٹی؛
& lt؛ / div & gt؛
& lt؛ / جسم اور جی ٹی؛
& lt؛ / ایچ ٹی ایم ایل اور جی ٹی؛
ہمارے پاس اب ایک ناقابل یقین غیر معمولی صفحہ چل رہا ہے، اور سروس کارکن کو نافذ کرنے کے بارے میں سوچنے کا وقت ہے. ہم کوڈنگ حاصل کرنے سے پہلے، سروس کارکنوں کی زندگی کو سمجھنے کے لئے یہ ایک لمحہ لینے کے قابل ہے.
یہ عمل آپ کے جاوا اسکرپٹ میں سروس کارکن کے 'رجسٹریشن' کے ساتھ بند کرتا ہے، جو براؤزر کو کارکن کو انسٹال کرنے کے لئے بتاتا ہے - اس کی زندگی کا پہلا مرحلہ. اس کی زندگی بھر میں، ایک سروس کارکن مندرجہ ذیل ریاستوں میں سے ایک میں ہوں گے:
چلو سروس کارکن رجسٹر کریں. یہ مؤثر طور پر جاوا اسکرپٹ فائل میں براؤزر کو پوائنٹس دیتا ہے جو سروس کارکن کے رویے کی وضاحت کرتا ہے. رجسٹریشن سروس کے اعتراض کا استعمال کرتے ہوئے کیا جاتا ہے جو API میں داخلہ نقطہ ہے. ہم یہ بھی چیک کریں گے کہ ایسا کرنے کی کوشش کرنے سے قبل API اصل میں براؤزر میں موجود ہے.
The. رجسٹر () فنکشن ہر وقت صفحہ بوجھ کو محفوظ طریقے سے بلایا جا سکتا ہے، اور براؤزر اس بات کا تعین کرے گا کہ سروس کارکن پہلے سے ہی رجسٹرڈ ہو چکا ہے.
اگر (نیویگیٹر میں 'سروس ورکر') {
ونڈو. Addeventlistener ('لوڈ'، فنکشن () {
نیویگیٹر. serviceworker.register ('serviceworker.js'، {دائرہ کار: './'}).
کنسول. log ("سروس کارکن کامیابی سے رجسٹرڈ.")؛
}، فنکشن (غلطی) {
کنسول. log ("سروس کارکن رجسٹریشن میں خرابی:" + غلطی)؛
})؛
})؛
}
اگلا ہمیں سروس کارکن خود کو لاگو کرنے کی ضرورت ہے. سروس کارکن اپنے صفحے پر اپنی زندگی کی زندگی اور سرگرمی سے متعلق ایک رینج کے لئے سن سکتے ہیں. سب سے اہم لوگ انسٹال کرتے ہیں، چالو اور لے جاتے ہیں.
چلو ایک سننے کے لئے شروع کرتے ہیں انسٹال واقعہ، جس میں کارکن کی تنصیب مکمل ہوجاتی ہے. یہ ہمیں سروس کارکن کو ہدایت کرنے کے قابل بناتا ہے کہ موجودہ فولڈر میں کسی کیش میں کچھ آف لائن مواد شامل کریں. ہمیں اپنے کیش کا نام بھی کرنے کی ضرورت ہے - چونکہ پرانے کیش جاری رہ سکتی ہے، اس کیش کا نام اپ ڈیٹ / ورژن اپ ڈیٹ کرنا آپ کو بعد میں مواد کے نئے ورژن کی خدمت کرنے کے قابل بناتا ہے.
var currentcache = 'ڈیمو کیش'؛
Self.addeventlistener ('انسٹال'، ایونٹ = & gt؛ {
Event.Waittil (
Caches.Open (Curauntcache) .یہ (فنکشن (کیش) {
کنسول .log ("کیش میں مواد شامل کرنا.")؛
cache.addall واپس لو ([
'./index_offline.html'،
'./kitty_offline.jpg'
'./custom.css'
])؛
})
)؛
})؛
جب ہم لوڈ ہو جائیں گے تو ہمارا صفحہ اب مواد کیش کریں گے، لیکن ہمیں درخواستوں میں مداخلت کرنے اور اس کیش میں ان کو ری ڈائریکٹ کرنے کے لئے کچھ میکانزم کی ضرورت ہے. ایسا کرنے کے لئے، ہمیں سننے کی ضرورت ہے لٹا واقعات، جس میں ایک درخواست جیسے ہماری حاصل ہوتی ہے وہ شروع ہوتا ہے index.html. فائل نیٹ ورک میں بنایا گیا ہے. پھر ہم کیش کے خلاف درخواست سے مل کر، اور اگر پایا جاتا ہے تو کیش وسائل کی خدمت کریں. دوسری صورت میں، ہم سرور کے لئے API درخواست پر واپس آتے ہیں.
اس نقطہ نظر کے قابل ہے کہ ہمارے پاس جاوا اسکرپٹ وعدوں پر کام کرنے کے لئے ہمارے پاس بھاری انحصار ہے. یہ ایک چھوٹا سا مشکل ہوسکتا ہے، لہذا اگر آپ نے پہلے ان کا استعمال نہیں کیا ہے تو اس کے ساتھ واقف ہونے کے قابل ہیں.
Self.addeventlistener ('Fetch'، ایونٹ = & gt؛ {
واقعہ. جواب دیں (
Caches.match (event.request) .یہ (جواب = & gt؛ {
واپسی کا جواب || لے لو (ایونٹ. request)؛
})
)؛
})؛
اگر آپ اب اسے آزمائیں (HTTP سرور کو ختم کریں اور صفحے کو تازہ کر دیں)، آپ کو یہ معلوم ہونا چاہئے کہ آپ کا صفحہ آن لائن اور آف لائن دونوں کام کرتا ہے. تاہم، یہ ممکن ہے کہ آپ زیادہ ذہین آف لائن رویے چاہتے ہیں، جب سرور دستیاب نہیں ہے تو مختلف مواد یا فعالیت دستیاب ہے.
اس کو حاصل کرنے کے لئے، ہم ہماری توسیع کر سکتے ہیں لٹا واقعہ کا جواب خاص طور پر نیویگیشن کی درخواستوں کے لئے چیک کرنے اور ایک مختلف آف لائن صفحہ کے ساتھ جواب دینے کے لۓ ایک دوسرے کا پتہ چلا ہے. یہ index_offline.html. فائل آپ کے آن لائن صفحہ کی ایک تغیر ہوسکتی ہے، یا مکمل طور پر مختلف، اور دیگر وسائل بھی استعمال کر سکتے ہیں جنہیں آپ نے اس طرح کی طرح کیش کیا ہے custom.css. .
Self.addeventlistener ('Fetch'، ایونٹ = & gt؛ {
اگر (ایونٹ. request.mode === 'نیویگیشن') {
واقعہ. جواب دیں (
لے لو (ایونٹ. request) .catch (غلطی = & gt؛ {
کنسول .log ("صفحہ دستیاب نہیں. آف لائن مواد واپس.")؛
کیشوں کو واپس لو. ('./ index_offline.html')؛
})
)؛
} اور
واقعہ. جواب دیں (
Caches.match (event.request) .یہ (جواب = & gt؛ {
واپسی کا جواب || لے لو (ایونٹ. request)؛
})
)؛
}
})؛
ہمیں ایک اور چیز ہے جو ہمیں ضرورت ہے. اگر آپ اب آپ کے آف لائن مواد کو تبدیل کرنے کی کوشش کرتے ہیں، تو آپ کو یہ پتہ چلا جاسکتا ہے کہ جب آپ اپنے صفحے کو آزمائیں گے تو آپ اب بھی پرانے ورژن حاصل کرتے ہیں! یہی وجہ ہے کہ بڑی عمر کی فائلیں اب بھی محفوظ ہیں.
آپ کو ان کی خدمت کرنے سے روکنے کے لئے کیش سے پرانے فائلوں کو صاف کرنے کے لئے کچھ لاگو کرنے کی ضرورت ہے. یہ ایک کے جواب میں کیا جاتا ہے محرک کریں واقعہ اور تمام کیشوں کو حذف کرنا جو موجودہ کام میں بیان کردہ نام سے متفق نہیں ہے. اس کے بعد آپ ہر بار جب آپ اپنے آف لائن مواد میں ترمیم کرتے ہیں تو ہر وقت ایک ورژن نمبر شامل کرسکتے ہیں، اس بات کا یقین کرنے کے لئے کہ یہ تازہ ترین ہے.
یہ. Addeventlistener ('چالو'، ایونٹ = & gt؛ {
Var Activecaches = [currentcache]؛
کنسول. log ("سروس کارکن چالو. کیش کی جانچ پڑتال کی تازہ ترین تاریخ ہے.")؛
Event.Waittil (
caches.keys (). پھر (کی فہرست = & gt؛ {
WERVER.ALL (Keylist.Map (کلیدی = & gt؛ {
اگر (Activecaches.indexof (کلیدی) === -1) {
کنسول. log ("پرانے کیش کو حذف کرنا" + کلیدی)؛
Caches.delete (کلیدی) واپس لو؛
}
})؛
})
)؛
})؛
یہ مضمون ویب ڈیزائنر میگزین مسئلہ # 268 میں شائع کیا گیا تھا. اب سبسکرائب کریں.
مزید پڑھ:
گلاب کیسے بنانا روایات گلاب ویڈیو کیسے ڈرائیو روایات گلاب کیسے بنانا: ..
(تصویری کریڈٹ: بلما) بلما کا استعمال کرتے ہوئے شروع کرنا چاہتے ہی�..
میرا سفر کرنے میں میرا سفر 3D آرٹ کچھ سال پہلے شروع ہوا جب میرے ب�..
19 ویں صدی آرٹ کے لئے ایک شاندار وقت تھا. فنکاروں کو اعلی سلسلے میں منعقد ..
مواد مارجولین ایک درمیانے درجے کے طور پر لیسڈ تیل کا استعم�..
Sketchable. ونڈوز 10 کے لئے ایک پینٹنگ اپلی کیشن ہے. یہ آپ کو بڑی تصاویر پر بڑے تصاویر پر بڑے اسٹروک پینٹ ک�..
تاثرات آرٹ ورک تازہ اور غیر معمولی تھا، اور جرات مندانہ برشسٹروک کے سات..
3D میں کپڑے اور کپڑے کے ساتھ کام کرتے وقت، یہ اچھی قرارداد اور ایک عظیم ن�..