Vuex๋ฅผ ์ฌ์ฉํด์ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ state์ ์ ์ฅํ๊ณ , ํ์ด์ง๊ฐ ์ ํ๋์ด๋ ๊ทธ๋๋ก ์ ์ง๋๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ค๊ฐ, vuex์ state๋ฅผ localStorage๋ก ์๋์ผ๋ก ๋๊ธฐํํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ vuex-persistedState๋ฅผ ์ฌ์ฉํด๋ดค๋ค. ์ด์ ํ๋ก์ ํธ์์๋ ์ฌ์ด๋๋ฐ์ ์ ์ ์ ๋ณด๊ฐ ๋ฐ๋ก๋ฐ๋ก ๋ฐ์์ด ์ ๋๊ฑฐ๋, ๋ ๋๋ง์ด ์ํ๋ ํ์ด๋ฐ์ ์ ๋๋ก ๋์ง ์๋ ์ด์๊ฐ ์์๋๋ฐ, Vue.js๊ฐ ์๋ฌด๋๋ SPA๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค๋ณด๋, ์ด๋ฐ ์ํฉ์ด ์์ผ๋ก๋ ์์ฃผ ๋ฐ์ํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
๋ธ๋ผ์ฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ HTML5์ ํฌํจ๋ ์๋ฃ ๊ตฌ์กฐ์ธ Web Storage์ localStorage, sessionStorage๊ฐ ์๋ค. ์ฟ ํค์ ๊ฐ๋ ์ด ๋น์ทํ์ง๋ง, ์ฟ ํค์์ ์กฐ๊ธ ๋ ๊ฐ์ ์ ์ ๊ฐ์ง๋ ๊ธฐ์ ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ๊ทธ๋ ๋ค๊ณ ํด์ HTML5์์ ์ฟ ํค๊ฐ ๋ฐฐ์ฒ๋๋ ๊ธฐ์ ์ ์๋๋ค. ๋๋ค ์ ๋๋ก ์ง๊ณ ๋์ด๊ฐ ์ ์ ์์ด์ ํ ๋ฒ ์ ๋ฆฌ๋ฅผ ํด์ผ๊ฒ ๋ค๊ณ ๋๊ผ๋ค.
์น ์คํ ๋ฆฌ์ง๋ ํด๋ผ์ด์ธํธ ์์์ ์น ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๊ธฐ์ ์ด๋ค. ์ฟ ํค๋ ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ ์์ธก ๋ชจ๋์์ ์์ฑ๋ ์ ์๋ ๋ฐ์ดํฐ์ด๋ฏ๋ก ๋งค๋ฒ ์น ์์ฒญ์ด ์์ ๋๋ง๋ค ์๋ฒ์ ํต์ ์ ํ๋ ๊ตฌ์กฐ์ด๋ค. ๋ฐ๋ฉด ์น ์คํ ๋ฆฌ์ง๋ ์๋ฒ์ ํต์ ์ ์์ผ๋ฉฐ, ํด๋ผ์ด์ธํธ ์์์๋ง ์์ฑ๋๊ณ , ์กด์ฌํ๋ค. Web Storage๋ ์ ์ฅํ๋ ๋ฐ์ดํฐ์ ์๊ตฌ์ฑ์ ๋ฐ๋ผ LocalStorage์ SessionStorage๋ก ๋๋๋ค.
์น ์คํ ๋ฆฌ์ง ๊ฐ์ฒด(Web Storage Object)์ธ localStorage์ sessionStorage
- ๋ธ๋ผ์ฐ์ ๋ด key-value ์์ผ๋ก ์ ์ฅ๋๋ค. key๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์กฐํ๋๋ค.
- Value๋ ๋ฐ๋์ ๋ฌธ์์ด์ด์ด์ผ ํ๋ค.
- ์ฟ ํค์ ๋๋ถ์ด ์น ์คํ ๋ฆฌ์ง ๊ฐ์ฒด ์ญ์ ๋์ผ ์ถ์ฒ ์ ์ฑ (SOP)์ ๋ฐ๋ฅธ๋ค. ์ฆ, ๋ฐ์ดํฐ ๋ณด์์ ์ํด ๋ค๋ฅธ ๋๋ฉ์ธ์์๋ ์ ๊ทผํ ์ ์๋ค. ์๋ฅผ ๋ค์ด A ๋๋ฉ์ธ์์ ์ ์ฅํ ์น ์คํ ๋ฆฌ์ง ๋ฐ์ดํฐ๋ B ๋๋ฉ์ธ์์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ ์์ด๋ค.
- LocalStorage์ ์ ์ฅํ ๋ฐ์ดํฐ๋ ๋ช ์์ ์ผ๋ก ์ง์ฐ์ง ์๋ ํ ์๊ตฌ์ ์ผ๋ก ๋ณด๊ด์ด ๋๋ค. ๋ฐ๋ผ์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ค์ ์คํํด๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง์ง ์๊ณ ๋จ์ ์๋ค. ์์์ ์ธ๊ธํ๋ vuex-persistedState๋ ์ด localStorage์ vuex์ state๋ฅผ ๋๊ธฐํํด์ค๋ค.
- LocalStorage์ ์ ์ฅํ ๋ฐ์ดํฐ๋ ๋ํ ์ ์ฅ ์ ๋๋ฉ์ธ๋ง๋ค ๋ณ๋์ ๋กํธ ์คํ ๋ฆฌ์ง๊ฐ ์์ฑ๋๋ค. Window์ ์ ์ญ ๊ฐ์ฒด์ธ LocalStorage๋ผ๋ ์ปฌ๋ ์ ์ ํตํด ์ ์ฅ๊ณผ ์กฐํ๊ฐ ์ด๋ฃจ์ด์ง๋ค.
- SessionStorage์ ์ ์ฅํ ๋ฐ์ดํฐ๋ SessionStorage๋ผ๋ window์ ์ ์ญ ๊ฐ์ฒด๋ฅผ ํตํด ์ ์ฅ๊ณผ ์กฐํ๊ฐ ์ด๋ฃจ์ด์ง๋ค. ์ด๊ณณ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ง์์ ์ผ๋ก ๋ณด๊ด๋์ง๋ ์๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ง์๋๋ ๋ฒ์๋ ํ์ฌ ํ์ด์ง๊ฐ ๋ธ๋ผ์ฐ์ง๋๋ ๋ธ๋ผ์ฐ์ ์ปจํ ์คํธ ์์์๋ฟ์ด๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋๋ฉด ๋ฐ์ดํฐ๋ ํ๋ฐ๋๋ค. ํ์ง๋ง ์๋ก ๊ณ ์นจํ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๊ฐ ์ฌ์ ํ ์กด์ฌํ๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
- SessionStorage๋ ๊ฐ์ ์ฌ์ดํธ์ ๋๋ฉ์ธ์ด๋ผ ํ ์ง๋ผ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค๋ฅด๋ฉด ์๋ก ๋ค๋ฅธ ์์ญ์ผ๋ก ์ทจ๊ธ๋๋ค. ๋ธ๋ผ์ฐ์ ์ ์ปจํ ์คํธ๋ฅผ ๋ฐ๋ผ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, Tab Browsing์ด๋ ์๋ก์ด Browser๋ฅผ ์ด์ด ์คํํ์ ๋ ๋ ํ์ด์ง๋ ๋ณ๊ฐ์ ์ปจํ ์คํธ๋ก ๋ณ๊ฐ์ SessionStorage๋ฅผ ๊ฐ๋๋ค. ์๋ก ์นจ๋ฒ ๋ถ๊ฐ๋ฅํ๋ค. ๊ฐ์ ๋๋ฉ์ธ์ด๋ผ๋ฉด ์ ์ญ์ ์ผ๋ก ๊ณต์ ๋๋ LocalStorage์ ๊ตฌ๋ถ๋๋ ์ง์ ์ด๋ค.
- ์๋น ๋ถ๋ถ์ด ์ฟ ํค์ ํก์ฌํด๋ณด์ด์ง๋ง, ์น ์คํ ๋ฆฌ์ง ๊ฐ์ฒด๋ ๋คํธ์ํฌ ์์ฒญ ์ ์๋ฒ๋ก ์ ์ก๋์ง ์์, ๋คํธ์ํฌ ํธ๋ํฝ ๋น์ฉ์ ์ค์ฌ์ค ๋ฟ๋ง ์๋๋ผ ์ฉ๋์ ์ ํ์ด ์๋ ์ฟ ํค์ ๋ค๋ฅด๊ฒ ๋ง์ ์๋ฃ๋ฅผ ๋ณด๊ดํ ์ ์๋ค. ๋ธ๋ผ์ฐ์ ๋ณ๋ก ์ผ์ ์ฉ๋ ์ด์์ ์น ์คํ ๋ฆฌ์ง ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์ ์๋๋ก ํด์ค๋ค. ๊ทธ๋ฌ๋ ํผํฌ๋จผ์ค๋ฅผ ์ํด vuex-persistedstate ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ธ ๋๋, ๋ชจ๋๋ณ๋ก ํ์ํ state๋ง ๋ฐ๋ก ๋ผ์ด localStorage์ ์ ์ฅ๋ ์ ์๋๋ก ํด์ผ ํ๋ค.
- ํ์ง๋ง ํด๋ผ์ด์ธํธ ์์์ ์ฌ์ฉ์์ ์ํด ์น ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ธ์ ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ฏ๋ก, ์์๋ก ์์ ๋๋ ๋ฐ์ดํฐ์ ๋ํด์๋ ๋ฐฉ์ด ์ฝ๋๋ฅผ ์์ฑํด ๋ง์ ์ ์๋ค.
'๐ฉโ๐ป > HTML5' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DOCTYPE, HTML, XHTML, ๊ทธ๋ฆฌ๊ณ HTML5 (0) | 2021.04.24 |
---|---|
๋ธ๋ผ์ฐ์ ์ ๋ฐ์ดํฐ ์ ์ฅํ๊ธฐ : WebStorage(localStorage์ SessionStorage) & Cookie #2 (0) | 2021.02.24 |