0. ๋ค์ด๊ฐ๊ธฐ์ ์์
๋๊ตฐ๊ฐ ๋์๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ ๊ฐ์ ์ฐจ์ด๋ฅผ ๋ฌผ์ด๋ณธ๋ค๋ฉด ํ ๋ง๋๋ก ์ ๋ฆฌํ ์ ์์๊น? ๋ต์ ์๋์๋ค. ๊ฐ๋ฐ์ ๊ณต๋ถํ๋ค ๋ณด๋ฉด ์ด ์ธ ๊ฐ์ง๋ฅผ ์์ฐจ์ ์ผ๋ก ๋ฐฐ์ฐ์ง๋ง ๊ฒฐ๋ก ์ ์ผ๋ก ๊ฐ๊ฐ์ด ๋ฌด์์ธ์ง, ์ฐจ์ด๋ ๋ ๋ฌด์์ธ์ง ๋ชจ๋ฅธ๋ค๋ฉด ํ์คํ๊ฒ ์ง๊ณ ๋์ด๊ฐ๋ณด์.
1. ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library) ๋?
Library๋ ๋จ์ด ๊ทธ๋๋ก ๋์๊ด์ด๋ค. ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ์ํด ํ์ํ ๊ธฐ๋ฅ(ํจ์)๋ค์ ๋ชจ์ ๋์ ์ํํธ์จ์ด๋ค.
๋น์ ํ์๋ฉด,
์๋์ฐจ๊ฐ ๊ตด๋ฌ๊ฐ ๋ ( = ํ๋ก๊ทธ๋จ์ด ์ ์๋์ด ๋์๊ฐ ๋) ํ์ํ ๋ฐํด, ํค๋๋ผ์ดํธ, ์์ด๋ฐฑ ๋ฑ์ด๋ผ๊ณ ํ ์ ์๋ค. ์ฌ์ฌ์ฉ์ด ํ์ํ ๊ธฐ๋ฅ์ผ๋ก ๋ฐ๋ณต์ ์ธ ์ฝ๋ ์์ฑ์ ์์ ๊ธฐ ์ํด ์ธ์ ๋ ์ง ํ์ํ ๊ณณ์์ ํธ์ถํ์ฌ ์ฌ์ฉํ ์ ์๋๋ก Class๋ Function์ผ๋ก ๋ง๋ค์ด์ง ๊ฒ์ด๋ค. ๊ฐ์ฅ ์ ๋ช ํ ์๋ฐ์คํฌ๋ฆฝํธ Library๋ jQuery, React๊ณ , ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (OOP: Object-oriented programming)์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ ๊ธฐ๋ฅ๋ง๋ค ํจ์ํ ํ๋ ๊ฒ์ผ๋ก Class Library๋ผ๊ณ ๋ ํ ์ ์๋ค.
Library์ ํน์ง
1. ๋ ๋ฆฝ์ฑ์ ๊ฐ์ง๋ค. ์ฆ, ํด๋น Library๋ ๋ค๋ฅธ Library์ ์์กดํ์ง ์๋๋ค.
2. ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ฅ๋์ ์ผ๋ก( = ํ์ํ ๋) Library๋ฅผ ์ฌ์ฉํ๋ค.
2. ํ๋ ์์ํฌ(Framework) ๋?
Framework ๋ํ ๋จ์ด ๊ทธ๋๋ก Frame(ํ, ๋ผ๋) + Work(์ผ)์ด๋ค. ์ฆ, ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ ์ํํธ์จ์ด์ ์๋ฃจ์ ๊ฐ๋ฐ์ ์์ํ๊ฒ ํ๊ธฐ ์ํด ์ ๊ณต๋ ์ํํธ์จ์ด ํ๊ฒฝ์ด๋ค. ๋ค์ ๋งํด, ๊ฐ๋ฐ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํ ๊ธฐ๋ฅ๋ค์ ๊ฐ์ถ๊ณ ์๋ Framework๋ผ๋ ์ด ํ ์์์ ์ํ๋ ๊ธฐ๋ฅ ๊ตฌํ์๋ง ์ง์คํ์ฌ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๋ฉด ๋๋ ๊ฒ์ด๋ค. ์ฐธ๊ณ ๋ก, Framework ์์๋ Library๊ฐ ํฌํจ๋์ด ์๋ค.
๋๋ ์ด๋ค Framework๋ฅผ ์ธ๊น?
Java ๊ฐ๋ฐ์๋ผ๋ฉด โ Spring
Python ๊ฐ๋ฐ์๋ผ๋ฉด โ Django
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ผ๋ฉด โ Angula or Vue
Framework์ ํน์ง
1. ์ํธํ๋ ฅํ๋ ํด๋์ค์ ์ธํฐํ์ด์ค์ ์งํฉ์ด๋ค.
2. ์์ฉ ํ๋ก๊ทธ๋จ์ด ์๋์ ์ผ๋ก( = ๊ท์น์ ์ง์ผ๊ฐ๋ฉฐ) Framework์ ์ํด ์ฌ์ฉ๋๋ค. Library์๋ ๋ค๋ฅด๊ฒ Framework๋ ๋ด๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ํธ์ถํ๋ค. ๋ฐ๋ผ์ Framework๋ง์ผ๋ก๋ ์คํ๋์ง ์์ผ๋ฉฐ ๊ธฐ๋ฅ๋ค์ ์ถ๊ฐํด์ผ ํ๊ณ , Framework๊ฐ ์ ์ํ ๊ท์น์ ์ค์ํ๋ฉฐ ๊ฐ๋ฐํด์ผ ํ๋ค.
3. ์ ๋ฆฌํ์๋ฉด,
Library vs. Framework: ๋๊ฐ ๋๊ตฌ๋ฅผ ์ปจํธ๋กคํ๋๊ฐ์ ๋ฐ๋ผ ๋ค๋ฆ
- Library: ๊ฐ๋ฐ์๊ฐ ํ์ํ ๊ธฐ๋ฅ์ ์ํ ๋ ํธ์ถ
- Framework: Framework๊ฐ ๊ฐ๋ฐ์๋ฅผ ํธ์ถ = ์ ํด์ง ํ๋ก๊ทธ๋จ์ ํ์ ๋ง๊ฒ ๊ฐ๋ฐ์๊ฐ ํ์ํ ๊ธฐ๋ฅ์ ์ ๋ ฅ
4. ๋ฒ์ธ ์ง๋ฌธ
Q. React๋ Framework์ผ๊น? Library์ผ๊น?
- React๊ฐ Framework์ธ์ง, Library์ธ์ง ๋ ผ์(?)์ด ์์ง๋ง, ๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด React๋ Library๋ค.
- Framework๋ก ๋ถ๋ฅ๋๊ธฐ ์ํด์๋ ํ์๋ก ์ถฉ์กฑ๋์ด์ผ ํ๋ ๊ฒ (ex. ๋ค๋ฅธ ๋ง์ Framework๋ค์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅํ๊ณ ์๋ ๊ธฐ๋ฅ๋ค)์ด ํ์ํ๋ฐ, React์์๋ ์ด๋ฌํ ๊ธฐ๋ฅ๋ค์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ๋ฌ๊ฐ์ง ์ถ๊ฐ์ ์ธ Library๋ฅผ ๊ฐ์ด ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค (ex. react-router, react-redux, react-saga๋ฑ)
- ๋๋ถ์ด, React ๊ณต์ ๋ฌธ์์์๋ React๋ฅผ Library๋ผ๊ณ ์ ์ํ๊ณ ์๊ธฐ๋ ํ๋ค.
๐ ๋ด์ฉ ์ฐธ์กฐ
- Youtube: [10๋ถ ํ ์ฝํก] ๐โ๏ธํฐ๋ฒ์ API vs Library vs Framework
- Blog: UI ์ดํดํ๊ธฐ : ์ธํฐํ์ด์ค๋ ๋ฌด์์ธ๊ฐ
- Wikipedia: ์ธํฐํ์ด์ค๋?
- Blog: API vs Library vs Framework
- Blog: ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(React๋ ๋ญ์ผ?)
๋๊ธ