λΈλΌμ°μ λ₯Ό ν΅ν΄ μ²μ λ°©λ¬Έν μ¬μ©μμκ² μ μ©νλ©°, μ€μΉκ° νμνμ§ μλ€.
λλ¦° λ€νΈμν¬μμλ λΉ λ₯΄κ² λ‘λλκ³ , κ΄λ ¨λ νΈμ μλ¦Όμ μ μ‘νλ€.
λͺ¨λ°μΌ μ±μ²λΌ μ 체 νλ©΄μΌλ‘ λ‘λλκ³ , ν νλ©΄μ μμ΄μ½μ΄ μλ€.
π 2014λ μ κΈ°μ μΌλ‘ λͺ¨λ°μΌ μ¬μ©μ μκ° λ°μ€ν¬ν μ¬μ©μ μλ₯Ό λμμΌλ©°, λͺ¨λ°μΌ μ¬μ©μμ 89%λ μΉ(Web)λ³΄λ€ λ€μ΄ν°λΈμ±(Mobile)μμ λ λ§μ μκ°μ 보λΈλ€λ ν΅κ³κ° μλ€.
μ¦, ν μ€ν¬λ¦°(Home Screen)μ μμ΄μ½μ΄ μμ΄μ μ°ΎκΈ° μ½λ€λ μ κ³Ό κ΄λ ¨λ νΈμμλμ 보λ΄μ€λ€λ μ μμ μ κ·Όμ±μ λμ μμΉλ₯Ό 보μ΄μ§λ§, λͺ¨λ°μΌ μ¬μ©μλ μλ‘μ΄ μ±μ λ€μ΄λ‘λνλ κ²μλ λμμ μ΄λ©°, μ¬μ©νλ μ±μ κ³μν΄μ μ¬μ©νλ κ²½ν₯μ΄ μλ€.
(μΉ(Web)μ urlλ§ μμΌλ©΄ μ κ·Όμ΄ κ°λ₯νμ§λ§ μ±μ λ€μ΄λ‘λ λ°μμΌ νλ λ²κ±°λ‘μμ΄ μκΈ° λλ¬Έ)
"λμ μ¬μ©μ κ²½νμ μ 곡νκΈ° μν μΉ μ±μ μ§ν"
λ°λΌμ νλ‘κ·Έλ μλΈ μΉμ±(PWA)μ μΉκ³Ό μ±μ μ₯μ μ κ²°ν©νμλ€
instagram, uber, twitter λ±μμ μ μ©νκ³ μλ€.
- λ°μν(Responsive) μΉ λμμΈ
- App-like & Discoverable
- μ€μΉ λ°°λκ° μμ±λλ€.
- μ± μμ΄μ½μ΄ μμ±λλ€.
- Engageable
- push μλ.
- PCμ λ¨λ§κΈ° 컀λ²κ° κ°λ₯νλ€.
- Connectivity
- Online = Offline κ²½νμ μ 곡νλ€.
- Safe
- μ μ½μ¬ν κΈ°λ³Έ κΈ°μ - https νλ‘ν μ½μ΄ μμ΄μΌ κ°λ₯νλ€.
1) manifest.json
2) Service Workers: client-side Javascript Proxy
3)index.html
νμΌ λ΄ λ§ν¬ μ½μ νκΈ°
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
π manifest.json
public
ν΄λμ μμΉ // manifest.json νμΌ κ΅¬μ± { "short_name": "React App", // ν νλ©΄μ νμν μ½μ μ΄λ¦ "name": "Create React App Sample", // μΉ μ±μ μ΄λ¦ "icons": [ // μμ΄μ½λ€μ μ 보(URL, ν¬κΈ°, νμ ). { // μ¬μ©μμ κΈ°κΈ°μ μ ν©ν κ²μ μ νν μ μλλ‘ μ¬λ¬ κ°λ₯Ό μΆκ°νλ κ²μ΄ μ’λ€. "src": "favicon.ico", "sizes": "64x64 32x32 24x24 16x16", "type": "image/x-icon" }, { "src": "logo192.png", "type": "image/png", "sizes": "192x192" }, { "src": "logo512.png", "type": "image/png", "sizes": "512x512" } ], "start_url": ".", // μ±μ΄ μμν λ μ€νν μ΄κΈ° λ¬Έμ "display": "standalone", // μ±μ νμνλ λ°©μμ λλ€(μ 체 νλ©΄, λ 립ν(standalone), μ΅μ UI, λλ λΈλΌμ°μ ). "theme_color": "#000000", // μ΄μ 체μ μ μν΄ μ¬μ©λ UIλ₯Ό μν μ£Όμ μμ "background_color": "#ffffff" // μ€νλμ νλ©΄κ³Ό μ€μΉνλ λμ μ¬μ©λ λ°°κ²½ μμ } // μΉ manifestλ₯Ό μν μ΅μ μꡬ μ¬νμ nameκ³Ό μ μ΄λ νλ(src, size, typeμ ν¬ν¨)μ μμ΄μ½μ΄λ€. // description, short_name, start_urlμ κΆμ₯μ¬νμ λλ€.