Flux - ChoDragon9/posts GitHub Wiki
title: Flux sidebar: auto
์๊ฐ
Flux๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ์ํคํ ์ณ์ด๋ค. Flux๋ ๋ํ MVC ์ดํ๋ฆฌ์ผ์ด์ ์์ ๋ํ๋๋ ๋ฐ์ดํฐ ๊ฐ์ ์์กด์ฑ๊ณผ ์ฐ์์ ์ธ ๊ฐฑ์ ์์ ๋ฐ์๋๋ ์์ธกํ๊ธฐ ํ๋ ๋ฐ์ดํฐ ํ๋ฆ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ค๋ฃจ๊ธฐ ์ํด ๋ง๋ค์ด ์ก๋ค.
์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฐ์์ ์ธ ๊ฐฑ์ ์ด ๋ฐ์ํ๊ณ ๊ฐ์ฒด ํ๋์ ๋ณ๊ฒฝ์ด ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํ๊ฒ ๋์ด ์ค์ ํ์ํ ์ ๋ฐ์ดํธ๋ณด๋ค ๋ ๋ง์ ๋ถ๋์ ์คํํ๊ฒ ๋๋ค. ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ๋ฐ์ดํฐ์ ์ฐ์์ ์ธ ๊ฐฑ์ ์ด ๋๋ ์ํฉ์์๋ ์ฌ์ฉ์ ์ํธ์์ฉ์ ๊ฒฐ๊ณผ๊ฐ ์ด๋ค ๋ณํ๋ฅผ ๋ง๋๋์ง ์์ธกํ๋๋ฐ ์ด๋ ค์์ง๋ค. ๊ฐฑ์ ์ผ๋ก ์ธํ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ํ ์ฐจ๋ก๋ง ์ด๋ค์ง๋ค๋ฉด ์ ์ฒด ์ดํ๋ฆฌ์ผ์ด์ ์ ์ข ๋ ์์ธกํ๊ธฐ ์ฝ๊ฒ ๋๋ค.
Flux๋ MVC์๋ ๋ค๋ฅด๊ฒ ๋จ๋ฐฉํฅ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ํ๋ฅธ๋ค. Flux๋ Actions, Dispatcher, Stores, Views๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ๋ถ๋ถ๋ค์ ๋จ๋ฐฉํฅ์ผ๋ก๋ง ๋ฐ์ดํฐ๊ฐ ํ๋ฅด๊ฒ ๋์ด ์๋ค.
๊ฐ ๊ตฌ์ฑ์ ์ญํ ์ ์ด๋ ๋ค. Action์ ์ฌ์ฉ์์ ์ํธ์์ฉ์ ์๋ฒ ์ํธ์์ฉ ๋ฑ์ด ๋ ์ ์์ผ๋ฉฐ type ํ๋กํผํฐ์ ์ญํ ์ ์ง์ ํ๋ค. Dispatcher๋ ๋ชจ๋ Action์ ๋ฐ์ผ๋ฉฐ, Stores๊ฐ ์ฝ๋ฐฑ๋ค ๋ฑ๋กํ ์ ์๋ค. Stores๋ ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๊ณ Views๊ฐ ๋ณ๊ฒฝ๊ฐ์๋ฅผ ํ ์ ์๋๋ก ์ ๊ณตํ๋ค. Views๋ Controller-Views-Views ํํ๋ฅผ ์ด๋ฃจ๊ณ , Store์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ View๋ฅผ ๊ฐฑ์ ํ๋ค.
๋ฐ์ดํฐ๊ฐ ํ๋ฅด๊ฒ ๋๋ฉด ์ด๋ ๊ฒ ํ๋ฅด๊ฒ ๋๋ค. ์ฌ์ฉ์์ ์ํธ์์ฉ์ด ๋ฐ์๋๋ฉด View๋ Action์๊ฒ ์ ๋ฌํ๋ค. Action์ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ ์๋ต์ด ์ค๋ฉด Dispatcher์๊ฒ type๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๋ค. Dispatcher๋ ๋ชจ๋ Stores์๊ฒ type๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๋ค. Stores๋ ์ ๋ฌ๋ type์ด ์ํ์ ์์กด์ด ์์ผ๋ฉด Views ๋ณ๊ฒฝ ์ด๋ฒคํธ๋ฅผ ์ ํํ๋ค. Views๋ ๋ณํ๋ฅผ ๊ฐ์งํ๊ณ Store์๊ฒ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ ๋ค ๋ชจ๋ Views์๊ฒ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ค.
Dispatcher
Dispatcher๋ Flux ์ํคํ ์ณ์์ ๋จ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ ์ค์ ํ๋ธ๋ก ๋ชจ๋ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ด๋ฆฌํ๋ค. Store์ ์ฝ๋ฐฑ์ ๋ฑ๋ก๋ฐ๊ณ Action์ Store์๊ฒ ๋ฐฐ๋ถํด์ฃผ๋ ๋์์ ํ๋ค. ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด Dispatcher์ ์ญํ ์ ๋์ฑ ํ์์ ์ด๋ค. Store ๊ฐ์ ์์กด์ฑ์ ํน์ ์์๋ก ์ฝ๋ฐฑ์ ์คํํ๋ ๊ณผ์ ์ ๊ด๋ฆฌํ๋ค.
Stores
Store๋ ์ํ์ ๋ก์ง์ ๋ด๋นํ๋ค. Store๋ ์ดํ๋ฆฌ์ผ์ด์ ๋ด์ ๊ฐ๋ณ์ ์ธ ๋๋ฉ์ธ์์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค. ํ๋์ ์ดํ๋ฆฌ์ผ์ด์ ์ด๋ผ๋ ๊ฐ ๊ธฐ๋ฅ๋ณ๋ก Store๋ฅผ ๊ฐ์ง ์ ์๋ค. Store๋ Dispatcher์ ์ฝ๋ฐฑ์ ๋ฑ๋กํ๋ค. ์ฝ๋ฐฑ์ Action์ type์ ์ธ์๋ก ์ ๋ฌ ๋ฐ๊ณ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ค. ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด Views์๊ฒ ๋ณ๊ฒฝ ์ด๋ฒคํธ๋ฅผ ์ ํํ๋ค. Store๋View์ ์ํ๋ฅผ ์์ฒญํ ์ ์๋๋ก getter๋ฅผ ์ ๊ณตํ๋ค.
Views
Flux์ View๋ Controller-View๋ผ๊ณ ๋ถ๋ฅธ๋ค. Store๋ฅผ ํตํด ๋ณ๊ฒฝ ์ด๋ฒคํธ๋ฅผ ์ ํ๋ฐ์ผ๋ฉด Store์๊ฒ ์ํ๋ฅผ ์์ฒญํ๋ค. View๋ ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ ๋ถ๋ชจ๊ฐ ์์ View์๊ฒ ์ํ๋ฅผ ์ ๋ฌํ๋ค. ๊ทธ๋์ Flux์ Views๋ Controller-Views-Views๋ฅผ ๊ฐ์ง ์ ์๋ค.
Actions
Action์ ์ฌ์ฉ์ ์ํธ์์ฉ์ ์๋ฒ ์ํธ์์ฉ์ ๋ด๋นํ๋ค. ์ฌ์ฉ์ ์ํธ์์ฉ์ View๋ฅผ ํตํด ์คํ๋๋ค. ์๋ฒ ์ํธ์์ฉ์ ์น์ฌ์ดํธ ์ด๊ธฐํ ์ ์๋ฒ์์ ์ ๊ณตํ๋ ์ด๊ธฐ ์ํ๋ฅผ ์ ๋ฌํ ๋ ์คํ๋๋ค.