Өнгөрсөн жилийн турш хэн нэг гэж хэлдэг: "Эй, бид энэ апп-ийг суулгах боломжтой бөгөөд офлайн ажиллаж болно уу?" PWA-ийн зүрхний хавтгай руу хялбар, тунтай нисэх: хөнгөн үйлчилгээний ажилтан тохиргоог, цахим хаос, App Router-ийн зүйлс хамардаг, хэрэглэгчид цахим Cache Gods гэж нэрлэдэггүйгээр хуучин хувилбартай. Энэ нь хэзээ ч хэзээ ч хэзээ ч хэзээ ч эвдэрсэн дэмжлэг, найдвартай, ачаалал гадаргууг хамарна. Тиймээс би маш их кофе, хялбар санамсаргүйгээр ямар ч амархан хөгжүүлэгч гэж хийж байсан юм: Би өөрийн зөөлөн багц бий. Introducing: next-pwa-pack Энэ нь Next.js-ийн drop-in wrapper юм (Yep, App Router нь сайн ажилладаг) Хэрэв та зүгээр л нэг ханган нийлүүлэгчтэй таны хуваалцах нь бүрэн PWA дэмждэг. Та үнэхээр бичнэ үү: import { PWAProvider } from "next-pwa-pack"; export default function layout({ children }) { return <PWAProvider>{children}</PWAProvider>; } Нөхцөл ! Тавтай морилно уу таны апп суулгах, офлайн ажиллуулах, хашаа хуудсууд, синхрончлол хуудсууд, тэр ч байтугай суурилсан dev панелтай суулгахын тулд ямар ч зүйл ажиллуулах хэрэгтэй. boom Энэ нь зүгээр л татаж авах, таны амьдралтай дамжуулан. Яагаад би үүнийг бий Ямар ч үйлчлүүлэгч "Offline-first" эсвэл "PWA шинж чанарыг хүсч байна," Би жишээ нь жишээ нь жигнэмэг байсан. , зүгээр л хамгийн сүүлийн үеийн App Router-ийг дэмждэггүй гэж үзнэ үү, эсвэл би өөрсдийн рулет хийхыг туршиж, үйлчилгээний ажилтан үнэхээр шинэчлэгдсэн гэж үзнэ үү. Энэ нь би өөрсдийн нэг хялбар SW тохиргоог бий болгодог гэж мэддэг. next-pwa Эцэст нь би хүссэн зүйл нь ямар ч ач холбогдолтой суулгах юм. Ямар ч би ажлын үйлчилгээний ажилтан, pre-caching, шинэчлэлт логик, хувилбар хяналтыг олгодог. Ямар ч би ямар ч Next.js төсөлд холбож, итгэж болох зүйл. Тэгэхээр би үүнийг үүсгэсэн. Үнэндээ юу байна Хавтгай дэх, Гүйцэтгэх Нөхцөл Үнэгүй Энэ нь sw.js нь HTML болон статик ач холбогдол хашааны тохиромжтой тохиромжтой ажиллуулдаг - HTML хариу нь 10 минутын TTL-ийг олж авах, JS, CSS, зураг гэх мэт ач холбогдол нь үргэлжлүүлэн хадгалах болно. next-pwa-pack sw.js manifest.json offline.html Бүх браузер хавтан синхронизийг хадгалахын тулд, энэ нь үйл явдлын шинэчлэгдсэн хуваалцах. Хэрэв та офлайн байна уу, энэ нь хялбар гэхдээ хэрэглэгчид хязгаарлагдмал цагаан дэлгэц дээр анхаарахгүй. localStorage offline.html Тэгээд энэ нь зүгээр л "онлайн байх" тухай биш юм гэж, би бас жижиг API-ийг нэмсэн бөгөөд та кеш бүтэцтэй холбоотой байж болно. Та илгээх дараа бүх кеш өгөгдөл очиж хүсч байна уу? Зохиогчийн эрх © Зохиогчийн эрх © Зохиогчийн эрх хуулиар хамгаалагдсан. Энэ нь trick.There is also Хэрэв та суулгахын тулд суулгахыг хүсэж байгаа бол, эсвэл шинэ хувилбаруудыг хайж байгаа бол. clearAllCache() updateSWCache(["/blog", "/dashboard"]) usePWAStatus() Dev загвар Goodies Хэрэв та Энэ нь таны онлайн / офлайн статусыг харуулдаг, танд кешээ очиж, шинэчилж болно, үйлчилгээний ажилтан бүртгүүлэхгүй, эсвэл туршиж байгаа үед кешээ дээр эсвэл дуусгах болно. Chrome DevTools-ийг дамжуулан ямар ч дахин хайж, үйлчилгээний ажилтан нь 5 минутын дотор гарын авлагагүйгээр бүртгүүлэхгүй. devMode Хэвлэх нь хэд хэдэн зүйл Энэ нь магик биш, Тиймээс та өөрийн manif.json өөрчилж, банер байршуулахыг хүсэж байгаа бол иконүүд татаж авах хэрэгтэй. Бид зөвхөн GET хүсэлтийг харах - ямар ч мутаци, мэдрэгчтэй POST өгөгдөл - болон та HTML TTL эсвэл бусад хаалганы нөхцөл өөрчлөхыг хүсэж байгаа бол, та хагас хийх хэрэгтэй шууд (жишээ нь - config систем идэвхжүүлэх болно). sw.js Гэсэн хэдий ч, үр дүнд үр нөлөө минимал юм, ямар ч зүйлс байгаа бол, ирээдүйн оюутнуудад тавих хариу нь хурдны нэмэгдүүлэх болно. Дараа нь Загвар нь конфигурацид суурилсан TTL нөхцөл, цахилгаажуулалт, URL загвар дээр суурилсан ухаалаг цахилгааны стратегийг дэмждэг, ISR (Incremental Static Regeneration) -ийг интеграц, жишээ нь цахилгааны удаан / хязгаарлагдмал метрикуудыг жинхэнэ цаг хугацаагаар харахын тулд суурилсан тавилга. Түлхүүр үг: DR Үнэлгээ учир нь би гарын авлага үйлчилгээний ажилчид, үйлдвэрлэлт stale caches debugging хийж байна. Энэ нь хайрцаг гарч ажилладаг, хамгийн сүүлийн үеийн нь сайхан тоглох функц, таны апп хурдан, суулгах боломжтой, тогтвортой байх нь туслахгүй. next-pwa-pack Next.js Энэ нь нээлттэй эх үүсвэр юм, та энд туршиж болно: <https://github.com/dev-family/next-pwa-pack](https://github.com/dev-family/next-pwa-pack) Та үүнийг ашиглах, үүнийг хуваалцах, үүнийг хуваалцах - мөн та үүнийг мэдэж байна уу. Хадгаламж байлга!