๋๊ตฐ๊ฐ Lodash์ ๋ง์ด๊ทธ๋ ์ด์ / ์ฌ์ฉ์ด ์ผ๋ง๋ ์์ ์ ์ธ์ง Backbone.JS์ ๊ณต์ ์๊ฒฌ์ ์ค ์ ์์ต๋๊น?
๋๋ ์ด๊ฒ์ ์๊ณ ์๋ค :
Lodash Migration ๋ ธํธ๋ฅผ ์ฝ์์ง๋ง ์ฌ์ ํ ๋ฐฑ๋ณธ ์ปค๋ฎค๋ํฐ ์๊ฒฌ๋ ์ํฉ๋๋ค. ์์ ๋ชจ๋ lodash ๋ฒ์ ์ด 1.1.x๋ถํฐ ๋ชจ๋ ๋ฒ์ ์ ๋ฐฑ๋ณธ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
UPD-1 : ๋ค์ด์ ์คํธ ์๋ ์ค : https://github.com/jashkenas/underscore/issues/2182
UPD-2 : ์ฌ์ค ๊ฐ์ธ์ ์ผ๋ก ๋น์ทํ ๋ชฉ์ ์์ํ ์ต์ด์ ์๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก์ Underscore๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๋ ๊ฐ๊น์ต๋๋ค. ์ ๋ John-David๊ฐ ํฌํฌ๋ฅผํด์ ์๋ก์ด whell์ ๋ง๋ค์ง ๋ง์์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋์ ๊ทธ๋ Underscore์ ํจ๊ป /์ ๊ธฐ์ฌํ๊ณ Jeremy๊ฐ ๋ฐ์ค์ ํฅ์์ํค๋ ๋ฐ ๋์์ ์ฃผ์์ด์ผํ์ต๋๋ค. ์ด ์ฝ๋ผ๋ณด๋ ์ด์ ์์ ๋ฌด์์ด ๋์๊ฐ์? ๊ทธ๋ฌ๋ ๋๋ ๋ libs์ ์ญ์ฌ์์ ๊ทธ๋ ๊ฒ ์ข์ง ์์์ ์ฐฉ๊ฐ ํ ์ ์์ต๋๋ค. ๋ฏธ๋ฆฌ ์ฃ์กํฉ๋๋ค.
UPD-3 : ๋ฐฑ๋ณธ ํ ์คํธ. ๊ทธ๋ฐ ์์ผ๋ก ์๊ฐ์ ์ด๋ฐ์ํจ @RusAlex ์๊ฒ ํน๋ณํ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ทธ๋์ ์ ๋ 2 ๊ฐ์ง ๋ฒ์ ์ ๋ฐฑ๋ณธ์ ๊ฐ์ง๊ณ ๋ค๋ฅธ lodash ๋ฒ์ ์ผ๋ก ํ ์คํธ๋ฅผ ์คํํ์ต๋๋ค.
_Backbone 1.1.2 ๋ฐ _
_Backbone 1.2.1 ๋ฐ _
๊ทธ๋์ ๋ ๊ฐ์ง ๋ชจ๋ "์ถ์ ์์ ์ ์ต์ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ"๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์ ํ๊ณ ์ํํ์ง ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ถ๋ช ํ-๋ค๋ฅธ ๋ฆด๋ฆฌ์ค / ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ํํฉ๋๋ค.
์ ๊ณต๋ฌด์์ด ์๋๋๋ค. ํ์ง๋ง ํ๋ก๊ทธ๋๋จธ.
undescrore๋ฅผ lodash๋ก ๋ฐ๊พธ๊ณ ๋ฐฑ๋ณธ ํ ์คํธ๋ฅผ ํ์ธํ์ญ์์ค.
๋ฐฑ๋ณธ์ ์ ํ ์คํธ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ํ ์คํธ๊ฐ ์กด์ฌํฉ๋๋ค.
@RusAlex ๊ทํ์ ๋๋ต์ ์ด๋ฏธ
_ ์ฐธ๊ณ _ : ์ด๋ฏธ lodash / ๋ฐฑ๋ณธ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ์ง๋ง (๋ด ํ๋ก์ ํธ๋ ์ ์๋ํฉ๋๋ค), ๋ด ํ๋ก์ ํธ ์ต์์ ์ํคํ ์ฒ ์ปค๋ฎค๋ํฐ๊ฐ ์์ง ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ธ์ง ํ์ ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ ์ ํ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์ถ์ต๋๋ค. 100 % ์ฌ๋ฐ๋ฅธ ๊ธธ๋ก ๋์๊ฐ์ญ์์ค.
๋ฐ์ค ๋ฌธ์ # 2182๋ฅผ ์ฝ์ ํ ์กฐ๋ง๊ฐ ์ฐ๋ฆฌ๊ฐ ๋ฐ์ค์ด ์๊ธธ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ผ๋ฉฐ @jashkenas ์ @jdalton ๊ฐ์ ์ด๋ฌํ ํ๋ ฅ์ ๋์ํฉ๋๋ค. ์ด "์ ๋ค"์ ์ง๊ธ ๋ฐ์๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์ ๋๋ต ํ ํ๋ฅ ์ด ๋งค์ฐ ๋ฎ์ต๋๋ค.
์ด์จ๋ ๋์๊ฒ๋ OFFICIAL๊ณผ ๋๋ฑํ ๋๋ต์ด ๋ ๊ฒ์
๋๋ค !!!
๊ทธ๋์ ๋ ๊ฐ์ง ๋ชจ๋ "์ถ์ ์์ ์ ์ต์ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ"๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์ ํ๊ณ ์ํํ์ง ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ถ๋ช ํ-๋ค๋ฅธ ๋ฆด๋ฆฌ์ค / ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ํํฉ๋๋ค.
์. Lodash์๋ Backbone ๋ฐ Underscore ํ ์คํธ๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ ํ์ฌ ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค๊น์ง ๊ฐ ์ปค๋ฐ์ ๋ํด ์คํํ์ต๋๋ค. ๋ช ๊ฐ์ง ํ ์คํธ๊ฐ ๋ฐฑ๋ณธ๊ณผ ๊ด๋ จ์ด์๋ Underscore ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์์ผ๋ก Lodash๋ ์คํจ ํ ์ ์์ง๋ง Lodash ์ธก๋ฉด์์ ๋๋ผ์ด ์ผ์ ์์ ๊ฒ์ ๋๋ค.
๋ง์ ํ๋ก์ ํธ ๊ฐ Backbone๊ณผ ํจ๊ป Lodash๋ฅผ ๋จผ์
๋ฐฑ๋ณธ์ด ์ฌ๊ธฐ์ ๊ณต์์ ์ธ ์ฑ๋ช
์ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐ
Zepto์ Lo-Dash ํธํ์ฑ์ ํ ์คํธํ์ง๋ ์์ง๋ง ๋ ๋ค ์ ์๋ํฉ๋๋ค. ๋ ๊ฐ๋ ฅํ ๋ณด์ฆ์ด ํ์ํ ๊ฒฝ์ฐ jQuery ๋ฐ Underscore๋ฅผ ์ฌ์ฉํ์ญ์์ค.
lodash๋ CI์ ๋ชจ๋ ๋ฐฑ๋ณธ ํ
์คํธ๋ฅผ ์คํํ๊ณ ํต๊ณผํฉ๋๋ค. ์ถ๊ฐ๋ก Marionette
๋ ์ฌ๋ฌ ๋ฒ์ ์ ๋ฐ์ค (1.4-1.8) ๋ฐ lodash (> = 2.4.0)๋ก ๋จ์ ํ
์คํธ๋ฅผ ์คํํฉ๋๋ค. ์์ฝ : ๋ฐฑ๋ณธ์ lodash 2.4-3.10์์ ์ ์๋ํฉ๋๋ค (2.x ์๋ฆฌ์ฆ์ ๊ฒฝ์ฐ lodash.backbone ์ฌ์ฉ).
์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ผ์ข ์ ์ข ์์ฑ (https://github.com/thejameskyle/marionette-wires/blob/master/package.json#L96-L103)์ ๋ํด ์ผ์์์ ๋ฐ์ค์ lodash๋ก ๋ฐ๊พธ๋ ๋ธ๋ผ์ฐ์ ํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ค์ผ์น (๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ์ API ์ฐจ์ด๊ฐ ๋ง์ผ๋ฏ๋ก).
@jdalton ๋ต์ฅ์ ๋ณด๋ด
๋๋ ๋ฐฑ๋ณธ ๋ฌธ์์ ๊ทธ ๋ถ๋ถ์ ์ฝ์์ผ๋ฉฐ ๋์๊ฒ ์ถฉ๋ถํฉ๋๋ค. ํ์ง๋ง ๋ด ํ๋ก์ ํธ ์ปค๋ฎค๋ํฐ์ ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ์ด ๋ฌธ์ฅ์ ์์ ์ด์๋ ๊ฒ์ ์๋๋๋ค.
๋ค์ํ ์์ค์ ํธํ์ฑ์ผ๋ก ์๋ํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
์ด๋ ์ ๋ ๋ถํ์ค์ฑ์ ๋งํด์ค๋๋ค . ๊ทธ๋ฆฌ๊ณ ๋๋ ๊ทธ๋ฐ ๊ฐ๋ฐ์๋ค๊ณผ 1 % ๋์ํฉ๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ์ด ํ ๋ก ์ ์์ํ ์ด์ ์ ๋๋ค.
๋ฟก๋ฟก
๊ทธ๋ฌ๋ ๋ค์ ํ ๋ฒ ์๊ฒฌ์ ๋ณด๋ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๋ฟก๋ฟก
์, ๋ ๊ฐ๋ ฅํ ๋ณด์ฆ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ง๊ธ์ ๋ฐฑ๋ณธ ํ
์คํธ ๊ฒฐ๊ณผ์
๋๋ค (#TDD๊ฐ ํ์ํ๊ณ ์๋ํ๋ค๋ ๋ ํ๋์ ์
์ฆ ๋ ์ฌ์ค), ๊ทธ๋ค์ ์ธํฐ๋ท์ ํตํ ๊ฑฐ๋ฃฉํ ์ ์ ์ด์์ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค. ๋ฌธ์ ๋ฅผ ๋ซ์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๋น๋ถ๊ฐ ํด๊ฒฐ ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฉฐ ํด๊ฒฐ์ฑ
์ด ์์ต๋๋ค.
๋๋ ํ์คํ Lodash๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ๊ธฐ๋ค๋ฆฌ๋ Underdash ์ ๋ง ๊ทธ ํฌ๋ง ์์ต๋๋ค :).
Oy, backbone-lodash ๋ ๊ณผ๊ฑฐ๋ก๋ถํฐ์ ํญ๋ฐ์
๋๋ค. ๋ด ์ฌ์ฉ ์ฌ๋ก์์๋ Underscore์ ๋นํด Lodash๋ฅผ ์ฌ์ฉํ๋ ๋ฌธ์ ์ ๋ถ๋ชํ์ง ์์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋ ๋ค๋ฅธ ๋ณ๊ฒฝ ์ฌํญ ์ $('<' + someTagName + '>')
๋์ document.createElement(someTagName)
๋ฅผ ์ฌ์ฉํ์ฌ View ์์๋ฅผ ์์ฑ ํ ์์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ด์์ง๋ง ์์งํ Backbone์ ์์ฃผ ์ค๋ซ๋์ ์ฌ์ฉํ์ง ์์์ต๋๋ค. ์ ์ณ๋๊ณ : ๊ด๋ฆฌ๋์ง ์๋ ์ค๋๋ ์ฝ๋๋ฅผ ๋๋์ ๋ณด๋ ๊ฒ์ด ๋งค์ฐ ์ฆ๊ฒ๊ณ ์ฐ์ธํ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
๋ด ํฌํ๋ Lodash๊ฐ ์ฌ๋๋ค์ ์ํด ์๋ํ๊ณ ํ ์คํธ๊ฐ ๋ชจ๋ ์กด์ฌ๋ฅผ ๋นจ์๋ค์ด๋ ํน์ด์ ์ ์์ฑํ์ง ์์ผ๋ฉด ํ์คํ Lodash๋ฅผ์ํ ๊ฒ์ ๋๋ค.