Pendaftaran Service Worker daripada HTML
Daftarkan service worker dengan tag skrip dan API navigator
Pendaftaran Service Worker daripada HTML ialah pelajaran HTML Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran HTML Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus HTML Academy merangkumi sejumlah 4 pelajaran.
Apakah Pekerja Perkhidmatan
Pekerja perkhidmatan ialah fail JavaScript yang berjalan di latar belakang, berasingan daripada mana-mana halaman, dan memintas permintaan rangkaian untuk scope tertentu. Teknologi ini menyediakan sokongan luar talian, pemberitahuan tolak, penyegerakan latar belakang dan pemuatan semula yang lebih pantas melalui cache.
Pendaftaran
Gunakan register pekerja daripada skrip halaman: navigator.serviceWorker.register("/sw.js"). Pelayar mengambil /sw.js, menghuraikannya, menjalankan peristiwa pemasangannya dan mula memintas permintaan untuk scope pendaftaran tersebut.
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
.then((reg) => console.log("Registered, scope:", reg.scope))
.catch((err) => console.error("Registration failed:", err));
}Kesan Sokongan Ciri Dahulu
Pelayar lama tidak menyokong pekerja perkhidmatan. Sentiasa kesan sokongan ciri dengan "serviceWorker" in navigator sebelum memanggil register; jika tidak, panggilan tersebut akan menghasilkan ralat pada pelayar yang tidak mempunyai API itu. Menambah mekanisme pengganti tidak praktikal — pekerja perkhidmatan tidak boleh dilengkapi dengan mekanisme pengganti kerana memerlukan penyepaduan pada peringkat pelayar.
Skop
scope ialah awalan laluan yang dikawal oleh pekerja. Secara lalai, scope ialah direktori bagi fail pekerja: /sw.js mengawal semua URL di bawah /. Untuk mendaftarkan pekerja dengan scope yang lebih dalam daripada lokasi fail yang berbeza, tetapkan pilihan scope dan sediakan pengepala Service-Worker-Allowed.
Tempat Meletakkan sw.js
Letakkan sw.js di akar aplikasi (/sw.js) supaya scope lalainya meliputi seluruh tapak. Laluan yang lebih dalam seperti (/app/sw.js) mengehadkan scope kepada /app/ dan ke bawah, yang jarang menjadi perkara yang dikehendaki.
Masa Pendaftaran
Gunakan register pekerja selepas halaman dimuatkan untuk mengelakkan persaingan jalur lebar semasa pemaparan kritikal: window.addEventListener("load", () => navigator.serviceWorker.register("/sw.js")). Ciri PWA mula berfungsi pada lawatan seterusnya tanpa melambatkan lawatan pertama.
Kemas Kini
Pelayar menyemak sw.js yang dikemas kini secara automatik, biasanya setiap 24 jam dan pada kebanyakan pemuatan halaman. Jika kandungan fail berubah, pekerja baharu dimuat turun, dipasang dan menunggu dalam keadaan "waiting" sehingga semua tab sedia ada ditutup — kemudian pekerja itu diaktifkan.
Memaksa Kemas Kini
registration.update() mencetuskan semakan kemas kini secara manual. self.skipWaiting() dalam sw.js baharu mengaktifkannya serta-merta tanpa menunggu tab ditutup. Gabungkan kedua-duanya untuk tingkah laku "sentiasa jalankan pekerja terkini", dengan kos pengambilan semula data pada pertengahan sesi.
Menyahdaftar
registration.unregister() membuang pekerja tersebut. Ini berguna semasa pembangunan jika pekerja yang bermasalah mengganggu tapak anda. Dalam Chrome DevTools, Application → Service Workers menyediakan butang "Unregister" untuk tujuan yang sama semasa penyahpepijatan.
Kesilapan Biasa
Mendaftarkan pekerja melalui HTTP, tanpa HTTPS, gagal secara senyap — pekerja perkhidmatan memerlukan asal yang selamat, iaitu HTTPS atau localhost untuk pembangunan. Semak konsol untuk mesej "Ralat sijil SSL telah berlaku" jika pendaftaran tidak berkuat kuasa.
Menyelaraskan Pekerja dan Halaman
Pekerja tidak mempunyai akses kepada DOM. Untuk menghantar mesej, gunakan navigator.serviceWorker.controller.postMessage() daripada halaman dan self.addEventListener("message", handler) dalam pekerja, dan sebaliknya. Ini berguna untuk pembatalan cache, semakan versi dan peristiwa tersuai.
Lawatan Pertama berbanding Lawatan Berulang
Pada lawatan pertama, pekerja dipasang dan mula mengawal halaman hanya selepas halaman dimuatkan semula. Untuk mengawal navigasi pertama dengan serta-merta, panggil self.clients.claim() dalam peristiwa pengaktifan — berguna untuk aplikasi yang mengutamakan luar talian.
Semakan Pengetahuan
Mengapakah pekerja perkhidmatan mesti disediakan melalui HTTPS atau localhost?
Ringkasan
Daftarkan pekerja perkhidmatan daripada JS halaman menggunakan navigator.serviceWorker.register("/sw.js") selepas mengesan sokongan ciri. Letakkan sw.js di akar aplikasi untuk mendapatkan scope penuh. Lakukan pendaftaran semasa pemuatan untuk mengelakkan persaingan dengan pemaparan kritikal. Kemas kini disemak secara automatik dan berkala; paksa dengan registration.update atau skipWaiting. HTTPS diperlukan untuk menghalang suntikan pekerja berniat jahat.
Pelajari HTML dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 40
- Pelajaran
- 159
Soalan Lazim
Adakah pelajaran “Pendaftaran Service Worker daripada HTML” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran HTML Academy, termasuk “Pendaftaran Service Worker daripada HTML”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus HTML Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pendaftaran Service Worker daripada HTML”?
Daftarkan service worker dengan tag skrip dan API navigator Anda berlatih HTML Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan HTML Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran HTML Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Pendaftaran Service Worker daripada HTML” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran HTML Academy ini?
Ya. Setiap pelajaran HTML Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Manifes Aplikasi Web
- Pendaftaran Service Worker daripada HTML
- Warna Tema dan Ikon Aplikasi
- Halaman Sandaran Luar Talian