PWA(Progressive Web App)
์น์ฌ์ดํธ๋ฅผ ์๋๋ก์ด๋/iOS ๋ชจ๋ฐ์ผ ์ฑ์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋๋ ์ผ์ข ์ ์น๊ฐ๋ฐ ๊ธฐ์
(์ฅ์ )
1. ์ค๋งํธํฐ, ํ๋ธ๋ฆฟ ๋ฐํํ๋ฉด์ ์ฌ๋ฌ๋ถ ์น์ฌ์ดํธ๋ฅผ ์ค์น ๊ฐ๋ฅํฉ๋๋ค.
(์ ๊ฑฐ ์ค์น๋ ์ฑ ๋๋ฅด๋ฉด ์๋จ URL๋ฐ๊ฐ ์ ๊ฑฐ๋ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๊ฐ ๋น๋๋ค. ์ผ๋ฐ ์ฌ์ฉ์๋ ์ฑ์ด๋ ๊ตฌ๋ถ์ ๋ชปํจ)
2. ์คํ๋ผ์ธ์์๋ ๋์ํ ์ ์์ต๋๋ค.
service-worker.js ๋ผ๋ ํ์ผ๊ณผ ๋ธ๋ผ์ฐ์ ์ Cache storage ๋๋ถ์ ๊ทธ๋ ์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ฒ์๋ง๋ค ๋ ์ ์ฉํ๊ฒ ๋ค์.
3. ์ค์น ์ ๋ ๋น์ฉ์ด ๋งค์ฐ ์ ์ต๋๋ค.
์ฑ์ค์น๋ฅผ ์ ๋ํ๋ ๋ง์ผํ ๋น์ฉ์ด ์ ๊ฒ๋ค์ด ์ข๋ค๋ ๊ฒ๋๋ค.
๊ตฌ๊ธํ๋ ์ด ์คํ ์ด ๋ฐฉ๋ฌธํด์ ์ฑ ์ค์นํ๊ณ ๋ค์ด๋ฐ๊ฒ ํ๋๊ฑด ํญ์ ๋งค์ฐ ๋์ ๋ง์ผํ ๋น์ฉ์ด ๋ญ๋๋ค.
๊ทผ๋ฐ PWA๋ผ๋ฉด ์น์ฌ์ดํธ ๋ฐฉ๋ฌธ์๋ค์๊ฒ ๊ฐ๋จํ ํ์ ์ ๋์์ ์ค์น์ ๋ํ ์ ์์ผ๋ ํจ์ฌ ์ ์ ๋ง์ผํ ๋น์ฉ์ด ๋ค๊ณ ์.
๊ทธ๋์ ๋ฏธ๊ตญ์์ PWA๋ฅผ ์ ๊ทน ์ด์ฉํ๊ณ ์๋ ์ผํ๋ชฐ๋ค์ด ๋ง์ต๋๋ค.
PWA ๋ง๋๋ ๋ฒ
1. PWA๊ฐ ์ ํ ๋ ๋ฆฌ์กํธ ํ๋ก์ ํธ ์์ฑ
npx create-react-app ํ๋ก์ ํธ๋ช
--template cra-template-pwa
2. ์ ํ
index.js ํ๋จ์ ์๋ ๋ค์ ์ฝ๋๋ฅผ
(index.js)
serviceWorkerRegistration.unregister();
์๋์ ๊ฐ์ด ๋ฐ๊พผ๋ค.
(index.js)
serviceWorkerRegistration.register();
๋ฐ๊ฟ์ค ๋ค ํฐ๋ฏธ๋ ์ฐฝ์ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ฃผ๋ฉด service-worker.js ํ์ผ์ด ์๊ธด๋ค.
(terminal)
npm run build
3. ํ์ธ
PWA ์๋๋ ํ์ธํ๋ ค๋ฉด build๋๊ฑธ VScode๋ก ์คํํด์ index.html ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋์ด๋ค.
=> ์ค์น๋ฒํผ ์๊ธฐ๋ฉด PWA์.
manifest.json / service-worker.js ํ์ผ
manifest.json ํ์ผ : ์น์ฑ์ ์์ด์ฝ, ์ด๋ฆ, ํ ๋ง์ ์ด๋ฐ๊ฑธ ๊ฒฐ์ ํ๋ ๋ถ๋ถ์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
{
"version" : "์ฌ๋ฌ๋ถ์ฑ์ ๋ฒ์ .. ์๋ฅผ ๋ค๋ฉด 1.12 ์ด๋ฐ๊ฑฐ",
"short_name" : "์ค์นํ ์ฑ๋ฐ์ฒ๋ ๋ฐํํ๋ฉด์ ํ์ํ ์งง์ 12์ ์ด๋ฆ",
"name" : "๊ธฐ๋ณธ์ด๋ฆ",
"icons" : { ์ฌ๋ฌ๊ฐ์ง ์ฌ์ด์ฆ๋ณ ์์ด์ฝ ์ด๋ฏธ์ง ๊ฒฝ๋ก },
"start_url" : "์ฑ์์ด์ฝ ๋๋ ์ ์ ๋ณด์ฌ์ค ๋ฉ์ธํ์ด์ง ๊ฒฝ๋ก",
"display" : "standalone ์๋๋ฉด fullscreen",
"background_color" : "์ฑ ์ฒ์ ์คํ์ ์ ๊น ๋จ๋ splashscreen์ ๋ฐฐ๊ฒฝ์",
"theme_color" : "์๋จ ํญ์์ ๋ฑ ์ํ๋ ํ
๋ง์์",
}
service-worker.js ํ์ผ
- ์ด ํ์ผ์ ์ค์ ์ ์ ํด์ฃผ๋ฉด ์ด์ ์ฌ๋ฌ๋ถ์ ์น์ฑ์ ์ค์นํ์ ๋ ์ด๋ค CSS, JS, HTML, ์ด๋ฏธ์ง ํ์ผ์ด ํ๋์ ์ค์น๋ ์ง ๊ฒฐ์ ํ ์ ์๋ค.
- ๊ทธ๋ผ ์ด์ ๋ค์์ ์ฑ์ ์ผค ๋๋ง๋ค ์๋ฒ์ CSS,JS,HTML ํ์ผ์ ์์ฒญํ๋๊ฒ ์๋๋ผ Cache Storage์ ์ ์ฅ๋์ด์๋ CSS,JS,HTML ํ์ผ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
- ๊ทธ๋ผ ์ด์ ์คํ๋ผ์ธ์์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋๊ฑฐ์ฃ
'๐ปWEB FrontEnd > ํ๋ ์์ํฌ React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฑ๋ฅ๊ฐ์ (3) - batching, useTransition, useDeferredValue (0) | 2022.07.13 |
---|---|
์ฑ๋ฅ๊ฐ์ (2) - ์ฌ๋ ๋๋ง ๋ง๋ ๋ฒ (0) | 2022.07.13 |
์ฑ๋ฅ๊ฐ์ (1) - lazy import (0) | 2022.07.13 |
react-query : ์ค์๊ฐ ๋ฐ์ดํฐ๊ฐ ์ค์ํ ๋? (0) | 2022.07.13 |
localStorage (0) | 2022.07.13 |