Next.js 애플리케이션에 서비스 작업자 추가
6875 단어 pwanextjsserviceworkerjavascript
섹션 1. PWA 및 SW 소개
요즘 사용자는 평균 월 평균 0개의 모바일 애플리케이션을 설치합니다. 이는 사용자가 모바일 장치에 기본 애플리케이션을 덜 설치한다는 것을 의미합니다. 웹은 타협하지 않고 사용자가 설치하도록 요구하지 않으면서 기본 애플리케이션보다 3배 이상 도달할 수 있기 때문에 완벽한 솔루션은 사용자가 웹 브라우저를 통해 액세스할 수 있고 장치에 설치하려는 경우(만일 그렇지 않은 경우)입니다. 그들은 항상 브라우저로 액세스할 수 있습니다). 이것이 프로그레시브 웹 애플리케이션(Google에서 도입)이 달성하려는 것입니다. 오프라인 작업, 푸시 알림 수신, 우수한 성능 등 기본 애플리케이션처럼 작동하려는 웹 애플리케이션일 뿐입니다.
이 새로운 개념의 두뇌는 웹 애플리케이션에서 프록시 역할을 하는 자바스크립트 파일인 서비스 작업자입니다. 요청을 가로채고(캐시하고) 이벤트를 수신하고 이벤트가 발생하면 조치를 취할 수 있습니다. 예를 들어 서비스 워커가 설치될 때 특정 자산을 캐시하고 필요할 때마다 해당 자산을 가져오기 위해 이동하는 대신 서비스 워커를 통해 직접 제공할 수 있습니다.
https://blog.clairvoyantsoft.com/service-workers-in-javascript-simple-demo-app-81efcdf2f2c4?gi=abbe01a65fba의 이 이미지는 서비스 작업자가 하는 일을 잘 설명합니다.
섹션 2. next.js에 서비스 워커 추가
지난 몇 년 동안 서비스 작업자를 next.js 애플리케이션에 추가하려면 next-pwa(https://github.com/shadowwalker/next-pwa) 또는 next-offline(https://github.com/hanford/next-offline)과 같은 타사 플러그인을 사용하거나 사용자 지정 서버를 사용해야 했습니다. 잘못 생각하지 마세요 next-pwa와 next-offline은 훌륭한 플러그인이지만 특정 상황에서는 그러한 추상화를 원하지/필요하지 않습니다.
약 1년 전에 Next.js 9.1은 도메인의 루트에 매핑될 파일을 저장할 수 있는 디렉토리 지원
public
을 도입했습니다. 예를 들어, http://localhost:3000
에서 로컬로 응용 프로그램을 실행하고 sw.js
(public
) 내부에 public/sw.js
라는 파일을 저장하면 http://localhost:3000/sw.js
에서 사용할 수 있습니다. 따라서 애플리케이션에서 이를 참조하고 사용자 지정 서버 없이 서비스 작업자를 설치할 수 있습니다.가장 간단한 서비스 작업자 파일은 다음과 같습니다.
//public/sw.js
self.addEventListener("install", function (event) {
console.log("Hello world from the Service Worker 🤙");
});
물론 이 서비스 워커는 아무 작업도 하지 않고 설치된 경우에만 기록합니다. 서비스 워커 기능에 대한 더 많은 예는 여기에서 확인하세요. https://serviceworke.rs/
서비스 워커를 배치한 후에는 설치해야 하며 페이지가 마운트될 때 이를 수행할 수 있습니다. Next.js를 사용하면 동일한 폴더 내에 파일
pages
을 생성하여 _app.js
디렉토리 내의 모든 페이지와 관련된 사용자 정의 루트 문서를 변경할 수 있습니다.//pages/_app.js
import { useEffect } from "react"
function MyApp({ Component, pageProps }) {
useEffect(() => {
if("serviceWorker" in navigator) {
window.addEventListener("load", function () {
navigator.serviceWorker.register("/sw.js").then(
function (registration) {
console.log("Service Worker registration successful with scope: ", registration.scope);
},
function (err) {
console.log("Service Worker registration failed: ", err);
}
);
});
}
}, [])
return <Component {...pageProps} />
}
export default MyApp
그리고 그게 다야! 서비스 워커는 웹사이트를 처음 방문할 때 next.js 애플리케이션에 설치됩니다.
소스 코드: https://github.com/jose-donato/with-service-worker
데모(향후 SW 기능 추가 예정): https://with-service-worker.vercel.app/
질문이 있으면 저에게 물어보세요. 저에 대해 더 알고 싶으시면 https://jose-donato.me을 방문하세요.
Reference
이 문제에 관하여(Next.js 애플리케이션에 서비스 작업자 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/josedonato/adding-a-service-worker-into-your-next-js-application-1dib텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)