Create React App Service worker를 팝업 없이 확장 또는 사용자 정의하는 가장 간단한 방법

Create React 응용 프로그램 (4.0.0 이전 버전) 은 기본적으로 숨겨진 서비스 작업 프로그램을 포함하고 있으며, 응용 프로그램이 점진적인 웹 응용 프로그램으로 인식될 수 있도록 백엔드 마술을 실행합니다.그러나 CRA에 결함이 있다면, 설정의 폐쇄 정도와, 팝업 (완전한 제어 설정) 프로그램이 없는 상황에서 설정을 수정하거나 확장하거나 사용자 정의하는 어려움이다.여기서, 나는 내가 발견한 확장 상자를 열어 서비스 종사자의 기능을 사용하는 가장 간단한 방법을 토론하고 보여줄 것이다.
편집: 2020년 10월 23일, Create React 응용 프로그램 4.0.0이 출시되어 기본 서비스 인원을 확장하는 과정을 크게 간소화하였습니다.현재, PWA 템플릿을 사용하여 프로젝트를 초기화할 수 있습니다. 이것은 src 폴더에 서비스 워크러 파일을 생성하고 사용자 정의 코드를 이 폴더에 추가할 수 있습니다.Check out the official instructions .
내 예에서, 알림을 전송하는 Firebase 메시지 전달을 처리하기 위해 백엔드 프로세스를 추가하지만, 이 기술은 다른 상황에서도 유효해야 한다.
많은 문장들이 이 문제를 해결하려고 시도하지만, 어떤 이유로 인해 대다수의 문장이 너무 복잡해서, 그것들이 실천에서 역할을 발휘하게 하는 것은 고통스러운 일이다.그들 대부분은 이 기묘한 실용 프로그램인cra append sw를 무시했기 때문이다.생산 완료된 프로그램을 구축할 때 필요한 코드를 기존 서비스 담당자에게 쉽게 추가할 수 있고, 개발 서버를 실행할 때 스스로 등록할 수 있도록 공용 폴더에 단독 작업 파일을 설치할 수 있다.
소프트웨어 패키지를 설치하고 메인 폴더에 서비스 워크러 파일을 만들고 (내 예에서 'Firebase-messaging-sw.js') 패키지를 수정하면 됩니다.json 파일은 다음과 같습니다.
...
"start": "cra-append-sw --mode dev --env ./.env ./firebase-messaging-sw.js && react-scripts start",
"build": "cra-append-sw --env ./.env ./firebase-messaging-sw.js && react-scripts build",
...
또한 응용 프로그램이 개발 서버를 통해 실행될 때 등록 서비스 담당자(CRA는 자신의 서비스 담당자만 등록하기 때문에 개발 과정에서 공공 디렉터리에 만든 단독 파일을 따로 등록해야 한다)를 기억해야 합니다.이것은 나의 색인 중의 한 부분이다.tsx 파일은 내 react 응용 프로그램의 시작점입니다.

이것은 cra-append-sw가 개발 모드에서 실행될 때 (공용 폴더에 작업 프로그램을 생성하는 것이지react 서비스 worker에 추가하는 것이 아닙니다) 수동으로 등록할 수 있도록 하기 위해서입니다


이것이 바로 당신이 필요로 하는 것입니다.동일한 목표를 달성하려는 다른 해커 도구에 비해 간단명료하다


이 파이프를 사용하는 가장 해결하기 어려운 문제 중 하나는 Firebase 접근 키와 내 데이터베이스에 있는 다른 비밀 변수를 설정하기 위해 서비스 직원들에게 환경 변수를 어떻게 사용하는지 발견했습니다.환경 파일.이 해결 방안은 정상적인 모드와 개발 모드에서 코드를 출력하기 전에 코드는 웹 패키지 파이프를 통해 실행되기 때문에 이 문제를 해결했다.이것은 사용자 정의 서비스 인원 코드의 process.env 대상에 접근할 수 있음을 의미합니다


고통을 덜어주고Create React 응용 프로그램에 새로운 서비스 인원 기능을 추가해서 행복한 생활을 할 수 있기를 바랍니다




추가 설명 및;편집:


  • cra-append-sw 프로덕션 모드에서 실행할 때 리뷰에서 지적한 바와 같이 서비스 직원을 수동으로 등록할 이유가 없습니다.비록 개발 모델에서 이것은 필요한 것이기 때문에 나는 index.tsx 파일에 요점을 추가했다.나는 지금 그것을 업데이트하고 환경을 검사했으며 dev에서만 그것을 실행합니다. 다음은 cra-append-swdocumentation의 관련 부분입니다.


dev creates public/<file> instead of appending the code to build/service-worker.js
build creates build/<file> instead of appending the code to build/service-worker.js

  • 댓글의 범위를 조금 넘어섰지만 댓글에 the firebase-messaging-sw.js that I ended up using를 요구했다.이것은 내가 인터넷에서 찾은 몇 가지 해결 방안의 프랑켄슈타인이다. 만약 내가 잘못 기억하지 않았다면, 나는 지금 그것들을 증명할 출처를 찾을 수 없다.만약 당신이 요점을 알고 있다면, 평론에서 저에게 알려주십시오☀️
  • 지적한 바와 같이 귀하의 서비스 인원 등록 대상을 생산 중인 Firebase 메시지 getToken() 옵션에 전달할 필요가 있을 수 있습니다. (Firebase 서비스 인원을 CRA 서비스 인원에 추가할 때). 그러나 일부 이유로 Firebase 서비스 인원이 없는 경우 저에게 유효합니다.

좋은 웹페이지 즐겨찾기