Pusa ์น ํ๋ ์์ํฌ๋ JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ ํ๋ฐํธ ์๋ ๋ก์ง์ ๋ฐฑ์๋๋ก ์ ์กํ๋ ๊ฐ๋ ์ ๊ตฌํํ์ฌ ๊ฒ์๋์์ต๋๋ค. ์ฆ, ๋ธ๋ผ์ฐ์ ๋ฐ DOM ์์๋ฅผ ๊ด๋ฆฌํ๊ณ ๋น์ฆ๋์ค ๋ก์ง์ด ์ํ๋ฉ๋๋ค. ๋ฐฑ์๋. ๋ธ๋ผ์ฐ์ ์ธก์์ ์คํ๋๋ JavaScript ์ฝ๋๋ ๋ฐฑ์๋ ์ธก์ ์๋ ํธ๋ค๋ฌ๋ฅผ ํธ์ถํ๋ ๋ฒ์ฉ ๋ ์ด์ด๋ก ๋์ฒด๋ฉ๋๋ค. ํ๋ก ํธ์๋๋ฅผ JavaScript๋ก ๊ฐ๋ฐํ ํ์๊ฐ ์์ต๋๋ค. Pusa ์ฐธ์กฐ ๊ตฌํ์ PHP๋ก ์์ฑ๋์์ผ๋ฉฐ GPLv3์ ๋ฐ๋ผ ๋ผ์ด์ผ์ค๊ฐ ๋ถ์ฌ๋ฉ๋๋ค. PHP ์ธ์๋ JavaScript/Node.js, Java, Python, Go ๋ฐ Ruby๋ฅผ ํฌํจํ ๋ค๋ฅธ ์ธ์ด๋ก ๊ธฐ์ ์ ๊ตฌํํ ์ ์์ต๋๋ค.
Pusa๋ ์ต์ํ์ ๋ช ๋ น ์ธํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตํ ํ๋กํ ์ฝ์ ์ ์ํฉ๋๋ค. ํ์ด์ง๊ฐ ๋ก๋๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ DOM ์ฝํ ์ธ ์ Pusa-Front์ JavaScript ์ฝ์ด๋ฅผ ๋ก๋ํฉ๋๋ค. Pusa-Front๋ Ajax ์์ฒญ์ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์ด๋ฒคํธ(์: ํด๋ฆญ, ๋ธ๋ฌ, ํฌ์ปค์ค ๋ฐ ํค ๋๋ฅด๊ธฐ)์ ์์ฒญ ๋งค๊ฐ๋ณ์(์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ ์์, ํด๋น ์์ฑ, URL ๋ฑ)๋ฅผ Pusa-Back ์๋ฒ ํธ๋ค๋ฌ๋ก ๋ณด๋ ๋๋ค. ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Pusa-Back์ ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฒฐ์ ํ๊ณ ํ์ด๋ก๋๋ฅผ ์คํํ๋ฉฐ ์ผ๋ จ์ ๋ช ๋ น์ ๋ํ ์๋ต์ ์์ฑํฉ๋๋ค. ์์ฒญ ์๋ต์ ๋ฐ์ Pusa-Front๋ ๋ช ๋ น์ ์คํํ์ฌ DOM์ ๋ด์ฉ๊ณผ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์ ๋ณ๊ฒฝํฉ๋๋ค.
ํ๋ฐํธ์๋์ ์ํ๋ ์์ฑ๋์ง๋ง ๋ฐฑ์๋์ ์ํด ์ ์ด๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ Pusa ๊ฐ๋ฐ์ ์คํ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ฐ์์ ์ํด ์ ์ด๋์ง ์๋ ๋น๋์ค ์นด๋๋ ์บ๋ฒ์ค์ฉ ์ฝ๋์ ์ ์ฌํฉ๋๋ค. Canvas ๋ฐ onmousemove๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ํํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๋ ค๋ฉด ํด๋ผ์ด์ธํธ ์ธก์์ ์ถ๊ฐ JavaScript ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋จ์ ์ค์๋ ํ๋ฐํธ์๋์์ ๋ฐฑ์๋๋ก ์ผ๋ถ ๋ถํ๊ฐ ์ด์ ๋๊ณ ์๋ฒ์์ ๋ฐ์ดํฐ ๊ตํ ๋น๋๊ฐ ์ฆ๊ฐํ๋ค๋ ์ ๋ ์์ต๋๋ค.
์ฅ์ ์ค์๋ JavaScript ํ๋ฐํธ์๋ ๊ฐ๋ฐ์์ ์ฐธ์ฌ ํ์์ฑ ์ ๊ฑฐ, ์์ ์ ์ด๊ณ ์ปดํฉํธํ ํด๋ผ์ด์ธํธ ์ฝ๋(11kb), ํ๋ฐํธ์๋์์ ๊ธฐ๋ณธ ์ฝ๋์ ๋ํ ์ก์ธ์ค ๋ถ๊ฐ๋ฅ, REST ์ง๋ ฌํ ๋ฐ gRPC์ ๊ฐ์ ๋๊ตฌ๊ฐ ํ์ํ์ง ์์, ํ๋ฐํธ์๋์ ๋ฐฑ์๋ ๊ฐ์ ์์ฒญ ๋ผ์ฐํ
์กฐ์ ๋ฌธ์ .
์ถ์ฒ : opennet.ru