-
Notifications
You must be signed in to change notification settings - Fork 0
front_end_develoment_1
TECH@NAVER_009 ๋ค์ด๋ฒ์์ ์ถ๊ฐํ ํ๋ฐํธ์๋ ๊ฐ๋ฐ ์์ํ๊ธฐ
์ฑ
๋ด์ฉ์ ์ ๋ฆฌํ๋ค.
์ฑ
์ถ๊ฐ์ผ์ด 2014๋
9์์ด๋ผ ํ์ฌ๋ ๋ง์ด ์ฌ์ฉํ์ง ์๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๋ด์ฉ๋ ํฌํจ๋์ด ์๋ค.
๊ตญ๋ด์์๋ ์ฌ์ฉ์๊ฐ ์ ํ๋ ์์ญ์ ๊ฐ๋ฐ์ HTML ์ฝ๋ฉ, ์น ํผ๋ธ๋ฆฌ์ฑ, UI ๊ฐ๋ฐ, RIA ๊ฐ๋ฐ๋ฑ ์ฌ๋ฌ ๋จ์ด๋ก ์ ์ํ๋ฉฐ ์ ๊ณ๋ง๋ค ๊ฐ๊ธฐ ๋ค๋ฅธ ์ธ์ด๋ก ๊ฐ๋ฐ ์์ญ์ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค. ์ฌ์ฉ์๊ฐ ์ ํ๋ ์์ญ์ ์งํฉ์ ํ๋ฐํธ์๋ ๊ฐ๋ฐ์ด๋ผ ํ ์ ์๋๋ฐ ์ฌ๋ฌ ๊ฐ๋ ์ ํฉ์น๋ค๋ณด๋ ํ๋ฐํธ์๋ ๊ฐ๋ฐ์ ํ๋ง๋ ์ ์ํ๊ธฐ๊ฐ ์ฝ์ง ์๋ค.
์ฝ๊ฒ ์ ์ํด๋ณด๋ฉด ํ๋ฐํธ ์๋ ๊ฐ๋ฐ์ ์น ์ ๊ทผ์ฑ, ์น ํ์ค, ํด๋ผ์ด์ธํธ ์ฑ๋ฅ ์ต์ ํ ๋ฑ๊ณผ ๊ฐ์ ์ง์์ ๊ธฐ์ด๋ก ์ฌ์ฉ์๊ฐ ์ ํ๋ ์์ญ์ ๋ฆฌ์์ค์ UI, ์ธํฐ๋์ ์ ๊ฐ๋ฐํ๋ ๊ฒ์ด๋ผ๊ณ ํ ์ ์๋ค.
์ดํด๋ฆฝ์ค, ์ฑํ๋ ์คํ๋์ค, ์๋ธ๋ผ์ ํ ์คํธ, ์น์คํฐ
๋ค์ด๋ฒ์์ ์น์คํฐ์ ์ฑํํ๋ ๋ฐ ์ฃผ์ํ ์ญํ ํ ๊ธฐ๋ฅ ๋ช ๊ฐ์ง
- ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฝ๋ ํํ ๊ธฐ๋ฅ
- ์ ๋ขฐํ ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฆฌํฉํฐ ๊ธฐ๋ฅ
- ์ ์ ๋ถ์ ๊ธฐ๋ฅ
- ์์ ์ ์ธ ์๋
JSHint, JSLint
2011๋ ์ํค ์ฝ๋ฐ์ํ๊ฐ JSLint๋ฅผ ํฌํฌํด์ ๋ง๋ค์๋ค. JSLint์ ๋๊ธ๋ผ์ค ํฌ๋ฝํฌ๋์ ์คํ์ผ์ ๊ฐ์ํ๋๋ก ๋ณํด ๋ฒ๋ ค JSHint๋ฅผ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ฌํ๋ค๊ณ ํ๋ค. JSHint๋ Node.js์ ์น์ผ๋ก ์ง์ํ๊ณ ์์ผ๋ฉฐ, JSLint๋ณด๋ค ์ ์ฐํ๊ฒ ์ต์ ์ ์ค์ ํ ์ ์๊ณ , ์กด์ฌํ์ง ์๋ ํ์ ์ typeof ์ฐ์ฐ์๋ก ๊ฒ์ฌํ๋ ๊ฒฝ์ฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฅ ๊ฐ์ฒด์ ํ๋กํ ํ์ ์ ์ ์ฉํ ๊ฒฝ์ฐ ๋ฑ๊ณผ ๊ฐ์ JSLint์์ ์ง์ํ์ง ์๋ ๊ฒ์ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ๋ ํ๋ค.
JSLint๋ ๋๊ธ๋ผ์ค ํฌ๋ฝํฌ๋๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ๊ตฌ๋ฌธ์ ๊ฒ์ฌํ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์๋ค. ๋ค์ด๋ฒ์์๋ JSLint๋ฅผ ํฌํฌํด์ ๋ค์ด๋ฒ์ ์ปจ๋ฒค์ ๊ณผ ํ๊ฒฝ์ ๋ง๊ฒ ์์ ํด ์ฌ์ฉํ๊ณ ์๋ค.
JSLint๋ ์์ค ์ฝ๋์ ์ ํจ์ฑ์ ๊ฒ์ฌํ ์ํฐ ํจํด์ด๋ ๊ตฌ๋ฌธ ์ค๋ฅ, ์ฌ์ฉํ์ง ์๋ ๋ณ์, ์ ์ธํ์ง ์์ ๋ณ์ ์ฌ์ฉ๊ณผ ๊ฐ์ ์ ์ฌ์ ์ธ ์ํ ์์๊น์ง ๋ฐ๊ฒฌํด ๊ฒฝ๊ณ ํด์ค๋ค.
QUint์ jQuery ๊ฐ๋ฐ์๋ก ์ ์๋ ค์ง ์กด ๋ ์๊ณผ ์กด ์ ํ๋ฌ๊ฐ jQuery๋ฅผ ํ ์คํธํ๊ธฐ ์ํด ๋ง๋ ํ๋ ์์ํฌ๋ค. ๊ฐ๋จํ ๋ฐฉ๋ฒ๊ณผ ๋ฉ์๋๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋น๋๊ธฐ ํ ์คํธ์๋ ๋์ํ๊ณ ์๋ค. ์น ์๋ฒ ์์ด๋ ํ ์คํธ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์น ํ์ด์ง์์ ๋ณผ ์ ์๊ณ QUnit-TAP(Test Anything Protocol)์ ์ด์ฉํ๋ฉด ๋ช ๋ น ์ค์์๋ ํ ์คํธ๋ฅผ ์คํํ ์ ์๋ค.
2012๋ ๊ตฌ๊ธ์ ์ํํธ์จ์ด ์์ง๋์ด์ธ ๋ณด์ดํ ์ง๋๊ฐ AngularJS๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ ํธ๋ฆฌํ๊ฒ ํ ์คํธํ ์ ์๋ ํ๊ฒฝ์ ๋ง๋ค๋ ค๊ณ Testacular๋ฅผ ๊ฐ๋ฐํ๊ณ ์คํ ์์คํํ๋ค. Testacular๋ ๋งค์ฐ ๊ฐ๋ฒผ์ฐ๋ฉฐ Node.js, Socket.IO๋ฅผ ์ด์ฉํด ์๋ฐ์คํฌ๋ฆฝํธ ์์ค ์ฝ๋๋ฅผ ๊ฐ์ํ๊ณ ์์ ํ ๋๋ง๋ค ์๋์ผ๋ก ํ ์คํธํด์ ๊ฒฐ๊ณผ๋ฅผ PC์ ์ค์น๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ์ค์๊ฐ์ผ๋ก ๋ํ๋ด๋ ๊ธฐ๋ฅ์ด ์๋ค. Testacular์ ํ๋ก์ ํธ๋ช ์ด ์นด๋ฅด๋ง๋ก ๋ฐ๋๋ฉด์ ๋ง์ ๊ฐ๋ฐ์๋ค์๊ฒ ์นด๋ฅด๋ง๋ผ๋ ์ด๋ฆ์ผ๋ก ์๋ ค์ก๋ค. ์ด ๋๊ตฌ ์์ฒด๋ ํ ์คํธ ์คํ ํ๊ฒฝ์ด๋ฏ๋ก Jasmine์ด๋ Mocha, Qunit๋ฑ์ ํ ์คํธ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํด ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค.
Less๋ CSS์ ๋จ์ ์ ๊ทน๋ณตํ๊ณ ์ ๊ฐ๋ฐ๋ CSS ๋ฉํ ์ธ์ด(๋๋ CSS ์ ์ฒ๋ฆฌ)๋ค. CSS์๋ ์๋ ๋ณ์, ๋ฏน์ค์ธ, ์ฐ์ฐ์, ํจ์ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. Less๋ฅผ ์ด์ฉํด ์ฝ๋ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์คํ์ผ ์ ์์ ํจ์จ์ฑ์ ๊ทน๋ํํ ์ ์๋ค. Less๋ ๋ค์ํ ์คํ ์์ค ํ๋ก์ ํธ์ ์ฌ์ฉ๋๋๋ฐ ๋ํ์ ์ธ ์ฌ๋ก๊ฐ ํธ์ํฐ์ ๋ถํธ์คํธ๋ฉ ํ๋ก์ ํธ๋ค. "Less is more"๋ Less์ ์ฒ ํ์ด๋ค.
Less๋ก ์์ฑํ ์คํ์ผ์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ 3๊ฐ์ง๋ค. ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ Less ํ์ผ์ ๋ก๋ํ ๋ค์ Less ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋์ ์ด์ฉํด ๋์ ์ผ๋ก CSS๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ด๊ณ ๋ ๋ฒ์งธ๋ ์๋์ผ๋ก Less๋ฅผ CSS๋ก ๋ณํํ๋ ์๋ฒ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ธ ๋ฒ์งธ๋ ํ์ผ์ ๊ฐ์ํ๊ณ ์๋ค๊ฐ Node.js๋ฅผ ์ด์ฉํด Less๋ฅผ ์ค์๊ฐ์ผ๋ก ์ปดํ์ผํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์น์คํฐ์์๋ ์ธ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
Emmet๋ ํธ์ง๊ธฐ์์ HTML๊ณผ CSS๋ฅผ ๋น ๋ฅด๊ฒ ํธ์งํ ์ ์๊ฒ ๋์์ฃผ๋ ๋๊ตฌ๋ค. ์ฒ์์๋ ์ ์ฝ๋ฉ์ด๋ผ๋ ํ๋ก์ ํธ๋ช ์ผ๋ก ์์ํ๋ค๊ฐ Emmet๋ผ๋ ํ๋ก์ ํธ๋ช ์ผ๋ก ๋ฐ๋์๊ผฌ 2013๋ 2์ 24์ผ ์ ์์ผ๋ก ์ถ์๋๋ค. ์น์คํฐ์์๋ Emmet์ ๋ด์ฅํ๊ณ ์์ผ๋ฉฐ ์๋ธ๋ผ์ ํ ์คํธ, ์ฑํ๋ ์คํ๋์ค, ์ดํด๋ฆฝ์ค ๋ฑ์ IDE์์ ํ๋ฌ๊ทธ์ธ ํํ๋ก ์ง์ํ๋ค.
Bower๋ ํธ์ํฐ์์ ๋ง๋ ํ๋ฐํธ์๋ ํจํค์ง ๊ด๋ฆฌ์๋ก Node.js์ npm์์ ๋ง์ ์ํฅ์ ๋ฐ์ ๊ตฌํ๋๋ค. npm์ ์์กด ๋ชจ๋์ package.json์ ๋ช ์ํ๋ ๋ฐ๋ฉด Bower๋ bower.json์ ๋ช ์ํ๋ค.
์ ๋ํ ์ด์ ์ด๋ ์ฌ์ ์ ์๋ฏธ๋ก๋ ์ฃผ์์ ๋ปํ์ง๋ง ๋จ์ํ ์ฃผ์์ด ๋๋ ๋ฐ์ดํฐ์ ๋ฉํ ์ ๋ณด๋ ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ ์ ๋ณด ๊ฐ์ด ํน์ํ ์๋ฏธ๋ฅผ ๋ถ์ฌํ๊ธฐ ์ํด ์์ฑํ ์ฃผ์์ ๋งํ๋ค.
ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ํ์ ๊ฐ๋ฐ์์ ํจ๊ป ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์๋ฆฝํ๋ค. ๊ทธ๋ฐ๋ฐ ํ๋ก์ ํธ๊ฐ ๋๋๊ณ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํ ๋๋ง๋ค ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ๋ง๋ค๊ณ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ก๋ํด์ผ ํ๋ค๋ฉด ๋งค์ฐ ๋ถํธํ ๊ฒ์ด๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Grunt-init์ ์ฌ์ฉํ ์ ์๋ค. Grunt-init์ Grunt์ ํ๋ฌ๊ทธ์ธ ์ค ํ๋๋ก ๋จ์ ํ ์คํธ์ด ์ํ ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์๊ฒ ํ๋ ๊ฒ์ด ์ฃผ ๋ชฉ์ ์ด์์ง๋ง ์ง๊ธ์ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ ์ฌ๋ฃ๋ฅผ ์ค์บํด๋ฉํ๋๋ฐ ์ฌ์ฉํ๊ณ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋น๋ํ๋ ค๋ฉด ์ฝ๋ ํ์ง ๊ฒ์ฆ, ๋ฌธ์ํ, ํ์ผ ์์ถ ๋ฑ์ ํด์ผ ํ๋ค. ๋ง์ฝ ํ ์คํธ ์ฝ๋๊ฐ ์๋ค๋ฉด ํ ์คํธ ์ญ์ ํ์๋ก ํด์ผ ํ๋ค.
Uglify.js๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ถ, ๋๋ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ ์น์์๋ ์ด์ฉํ ์ ์๋ค.
JSDoc3๋ ๋ฌธ์ํ ๋๊ตฌ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฐ, JavaDoc๊ณผ ๋น์ทํ ํ์์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ์ํ ๋๊ตฌ๋ค. ์ด ๋๊ตฌ๋ Netscap Communications Coporation์์ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ณ ๋ชจ์ง๋ผ ์ฌ๋จ์์ ์ด์ด๋ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ์์ค ๊ตฌํ์ฒด ํ๋ก์ ํธ Rhino์์ 1999๋ ์ฒ์ ๊ณต๊ฐํ๋ค. ์ต์ด์ JSDoc์ JavaDoc์ ๊ตฌ๋ฌธ๊ณผ ๊ฑฐ์ ๋น์ทํ์ผ๋ ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋์ ์ธ ๋์์ ํํํ๊ธฐ ์ํด ํนํ๋๋ฉด์ ๋ง์ ๋ถ๋ถ์ด ๋ฌ๋ผ์ก๋ค.
Grunt๋ ํ๋ฐํธ์๋ ๊ฐ๋ฐ ๋ถ์ผ์์๋ ์ ์๋ ค์ง ํ์คํฌ ์๋ํ ๋๊ตฌ๋ค. ํ๋ก์ ํธ ์์ฑ๋ถํฐ ๋น๋ ๋ฐฐํฌ๊น์ง ๋๋ถ๋ถ์ ์์ ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ค๋ค. Node.js ๊ธฐ๋ฐ์ด๋ฉฐ ์๋ง์ Grunt ํ๋ฌ๊ทธ์ธ์ ์ด์ฉํด ์์ฝ๊ฒ ํ์คํฌ๋ฅผ ์์ฑํ ์ ์๋ค.