Html5-boilerplate: ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ์†”๋ฃจ์…˜

์— ๋งŒ๋“  2010๋…„ 08์›” 10์ผ  ยท  132์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: h5bp/html5-boilerplate




์ด ๋ฌธ์ œ ์Šค๋ ˆ๋“œ๋Š” ํ˜„์žฌ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์žฌ๋ฏธ์žˆ์—ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ๋Œ€ํ™”๊ฐ€ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์˜ฎ๊ฒจ์กŒ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”

์ฆ๊ฑฐ์šด ์‹œ๊ฐ„์— ๊ฐ์‚ฌ์˜ @rmurphey ๋Š” ์šฐ๋ฆฌ๋ฅผ ์Šค๋ ˆ๋“œ์˜ ํ–‰๋ณตํ•œ ๋‹จ์–ด ๊ตฌ๋ฆ„์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์ฆ๊ธฐ๋‹ค.





labjs๋ฅผ ํ†ตํ•ด ๋˜๋Š” ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

๋‚ด "boilerplate" load.js ํŒŒ์ผ์—๋Š” LABjs๊ฐ€ ์ธ๋ผ์ธ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ jquery, GA ๋ฐ ํ•˜๋‚˜์˜ ์‚ฌ์ดํŠธ js ํŒŒ์ผ์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๋„์›€์ด๋œ๋‹ค๋ฉด http://bit.ly/dAiqEG ํ•˜๋‚˜์˜ ํŒŒ์ผ์— RequireJS+jQuery๊ฐ€ ํ†ตํ•ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ;)

๋˜ํ•œ ์ด๊ฒƒ์ด ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ์ถ•์†Œํ•˜๋Š” ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋Œ€์— ์–ด๋–ป๊ฒŒ ์ž‘์šฉํ•ฉ๋‹ˆ๊นŒ? ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์ด ์˜ต์…˜์ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

javascript

๋ชจ๋“  132 ๋Œ“๊ธ€

kyle: " @paul_irish ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. http://bit.ly/9IfMMN ์บ์‹œ ๊ฐ€๋Šฅ์„ฑ(์™ธ๋ถ€ CDN), ๋ณ‘๋ ฌ ๋‹ค์šด๋กœ๋“œ, ์Šคํฌ๋ฆฝํŠธ ๋ณ€๊ฒฝ-ํœ˜๋ฐœ์„ฑ..."

James burke: " @fearphage @getify RequireJS์—๋Š” ์Šคํฌ๋ฆฝํŠธ ๋ฒˆ๋“ค๋ง/์ถ•์†Œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋นŒ๋“œ ๋„๊ตฌ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋™์  ๋ฐ ์‚ฌ์ „ ๋นŒ๋“œ ๋‘˜ ๋‹ค์˜ ์žฅ์ ์„ ๋ชจ๋‘ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

๊ฐœ๋ฐœ์ž๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ $Lab.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด๋ฏธ ๋งŽ์€ jQuery ์‚ฌ์šฉ์ž์—๊ฒŒ ์ต์ˆ™ํ•œ ์—ฐ๊ฒฐ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋Œ€๊ทœ๋ชจ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์•ฑ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝ์šฐ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•ญ์ƒ require.js๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ๊ธฐ์ˆ ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  1. HeadJS
  2. ControlJS
  3. LABjs

์‚ฌ์šฉ ์—ฌ๋ถ€, ์–ด๋Š ๊ฒƒ์„ ์‚ฌ์šฉํ• ์ง€๋Š” ๋‹ค์†Œ ๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. http://blog.getify.com/2010/12/on-script-loaders/

HeadJS ControlJS ๋ฐ LabJS์— ๋Œ€ํ•œ ๋Œ€์•ˆ์„ ์•Œ๋ ค ์ฃผ๊ธฐ ์œ„ํ•œ requireJS ๋ฐ EnhanceJS๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ์•ผํ›„์™€ ๊ตฌ๊ธ€๋„ ๋น„์Šทํ•œ ๊ฒƒ์„ ์ œ๊ณตํ•œ๋‹ค.

jQuery 1.5 ๋ฐ deferreds( http://www.erichynds.com/jquery/using-deferreds-in-jquery/ ) ์˜ ๋ฆด๋ฆฌ์Šค์™€ ํ•จ๊ป˜ Boris Moore๋Š” ์ƒˆ๋กœ์šด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋” ํ”„๋กœ์ ํŠธ์ธ DeferJS( https://github) ์—์„œ ์ด๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

๊ธฐ๋ณธ์ ์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๋‹ค์šด๋กœ๋“œ๋ฅผ ์ค‘์ง€ํ•˜๋ฏ€๋กœ ํ—ค๋”์—์„œ modernizr์„ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธ๋ผ์ธ ๋กœ๋”๋Š” ๋กœ๋”๊ฐ€ ์ฐจ๋‹จ ๋ชจ๋“œ๊ฐ€ ์•„๋‹Œ ๋ณ‘๋ ฌ๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋“  modernizr ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 6kb์— ๋ถˆ๊ณผํ•œ head.min.js ๋˜๋Š” modernizr์˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋นŒ๋“œ(http://modernizr.github.com/Modernizr/2.0-beta/)๋ฅผ ์ธ๋ผ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CSS ์ธ๋ผ์ธ๋„ ๋•Œ๋•Œ๋กœ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Google์€ ์ธ๋ผ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉฐ CSS, js ๋ฐ datauri๋ฅผ ํ†ตํ•ด ๋นˆ 1x1 gif๋ฅผ ์ธ๋ผ์ธํ•ฉ๋‹ˆ๋‹ค.

LabJS๋Š” ๊ฝค ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ ์ข‹์€ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋น„๋™๊ธฐ์‹์œผ๋กœ ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฐจ๋‹จํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

http://blog.getify.com/2010/12/on-script-loaders/ ๋Š” ์ž‘์„ฑ์ž์˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

http://yepnopejs.com/์€ ๋ง‰ 1.0์ด ๋˜์—ˆ๊ณ  LAB ๋ฐ head.js์™€ ๋‹ฌ๋ฆฌ ์ƒˆ๋กœ์šด ์›นํ‚ท์—์„œ ๊นจ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

yepnope๋Š” Modernizr.load ๋กœ Modernizr์—๋„ ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. http://modernizr.github.com/Modernizr/2.0-beta/

๋”ฐ๋ผ์„œ ๊ณง Modernizr.load๋ฅผ ํ†ตํ•ด h5bp์— ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋ฅผ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด 1.0์„ ๋งŒ๋“ค ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์ง€๋งŒ ์ผ๋‹จ Modernizr๋ฅผ 1.8๊นŒ์ง€ ๊ฐ€์ ธ ๊ฐ€๋ฉด ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ h5bp 1.1๋กœ ๋˜์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‘

์•ˆ๋…• ํด

H5BP๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด ์‚ฌ์ดํŠธ๋ฅผ ์ด์‹ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ yepnope.js ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ชจ๋“  ๋น„ํŠธ์™€ ๋ด‡์ด ํ•จ๊ป˜ ๊ฒฐํ•ฉ๋˜๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ์€ ์ •๋ง ์ข‹์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์–ด๋–ค ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๊นŒ?

  1. ํŽ˜์ด์ง€ ์ƒ๋‹จ์— modernizer.js์™€ ํ•จ๊ป˜ yepnope.js๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  2. HTML ๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ๋กœ๋“œํ•˜๋ ค๋ฉด ํŽ˜์ด์ง€ ํ•˜๋‹จ์— ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  3. Modernizer.js ๋ฒ ํƒ€ ๋ฒ„์ „ ์‚ฌ์šฉ
  4. yepnope.js์™€ modernizer.js๋ฅผ ํ•˜๋‚˜์˜ include๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์„ ํฌํ•จํ•˜๋Š” ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์— ๊ด€๊ณ„์—†์ด yepnope,js๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

https://github.com/paulirish/html5-boilerplate/blob/master/index.html#L52 ๊ทธ๋ฆฌ๊ณ  yepnope๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ jQuery ๋ฐ ๊ธฐํƒ€ ์Šคํฌ๋ฆฝํŠธ์˜ CDN/๋กœ์ปฌ ๋ณต์‚ฌ๋ณธ์„ ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? html ๋‚ด์—์„œ ์Šคํฌ๋ฆฝํŠธ ๋ธ”๋ก์„ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ๋ Œ๋”๋งํ•œ ๋‹ค์Œ yepnope.js๋ฅผ ํ†ตํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๊นŒ?

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์•ค๋””

์•„ ๊ทธ๋ฆฌ๊ณ  ๋˜ ํ•˜๋‚˜.

yepnope๋Š” css๋ฅผ ํ†ตํ•ด ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ‰์†Œ์™€ ๊ฐ™์ด ๊ธฐ๋ณธ CSS๋ฅผ ํฌํ•จํ•˜๊ณ  yepnope๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์ˆ˜์ • ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ๋งŒ CSS๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ „ ๋ฒ„์ „์˜ IE์—๋งŒ โ€‹โ€‹์ ์šฉ๋˜๋Š” ์ผ๋ถ€ CSS๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

ํ˜ธ์นดํฌ์นด,

Modernizr์˜ ๋ฒ ํƒ€ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.. ํ•„์š”ํ•œ ๊ฒƒ์„ ํฌํ•จํ•˜๊ณ ( Modernizr.load() ) ํŽ˜์ด์ง€ ์ƒ๋‹จ์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค.

yepnope๋ฅผ ์‚ฌ์šฉํ•œ jquery ํด๋ฐฑ์˜ ์‹ค์ œ ์ฝ”๋“œ๋Š” http://yepnopejs.com/์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋„ค ์ €๋Š” IE CSS์˜ ์กฐ๊ฑด๋ถ€ ๋กœ๋“œ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์•„์ด๋””์–ด๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์˜ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ๋งน์‹ ์ด ๋„ˆ๋ฌด ๋งŽ๊ณ  ์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋งํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์— ๋Œ€ํ•œ ํ˜„๋ช…ํ•œ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํŒŒ์ผ ํฌ๊ธฐ, ๋Œ€์—ญํญ ๋ฐ ๋„คํŠธ์›Œํฌ ์กฐ๊ฑด์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ์—ฐ๊ตฌ๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ํ˜„์žฌ ์ด ๋ถ„์•ผ๋Š” ์ดˆ๊ธฐ ๋‹จ๊ณ„์ด๋ฉฐ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ์†”๋ฃจ์…˜์„ ์ถ”์ฒœํ•˜๋Š” ๊ฒƒ์€ ์ˆœ์ง„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ.

์ด ํ‹ฐ์ผ“์„ ๋‹ซ๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด์— ๋Œ€ํ•œ ํ˜„๋ช…ํ•œ ์„ ํƒ์„ ๋” ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํฌ๊ด„์ ์ธ ์—ฐ๊ตฌ ๋ฐ ์ถœํŒ์„ ๊ด€์‹ฌ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” concat ๋Œ€ ๋ณ‘๋ ฌ ๋กœ๋“œ์— ๋Œ€ํ•ด ๊ฝค ๋งŽ์€ ์—ฐ๊ตฌ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์˜ˆ์•ฝ ์—†์ด ๋ชจ๋“  js๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋จผ์ € ๊ฒฐํ•ฉํ•œ ๋‹ค์Œ 2-3๊ฐœ์˜ ๋™์ผํ•œ ํฌ๊ธฐ์˜ ์ฒญํฌ๋กœ ์ฒญํฌํ•˜๊ณ  ๋ณ‘๋ ฌ๋กœ ๋กœ๋“œํ•˜๋„๋ก ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‚ด ์—ฐ๊ตฌ๋ฅผ ๊ฐ€์ ธ์™€ ๋„๋ฆฌ ํผ๋œจ๋ฆฌ๊ณ  ํ™•์žฅํ•˜์—ฌ ์ด ๋ถ„์•ผ์—์„œ "์‚ฌ์‹ค"๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ ๋Œ€๊ทœ๋ชจ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋งŽ์€ ๋น„์šฉ์ด ๋“ค์ง€ ์•Š๋Š” ํ˜ธ์ŠคํŒ… ๋Œ€์—ญํญ์„ ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์ง€๋งŒ ์•„์ง ํ•ด๋‹น ํ˜ธ์ŠคํŒ… ์ œ๊ณต์„ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋Œ€์—ญํญ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ณ‘๋ ฌ ๋กœ๋”ฉ ์ด๋ก ์ด ์‹ค์ œ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@getify ํ…Œ์ŠคํŠธ ์žฅ๋น„๊นŒ์ง€ ๋ฌด์—‡์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ๊ฒƒ๋ณด๋‹ค ๊ฐœ์ธ ์„œ๋ฒ„์—์„œ ์•ฝ 1.5TB ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Nginx๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉฐ ๋งˆ์ดํฌ๋กœ์ดˆ๋‹น ์•ฝ 4์กฐ ์กฐ์˜ ํžˆํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ธฐ์ˆ ์ด ์žฅ๋ฒฝ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ„์น˜๊ฐ€ ๊ฑฑ์ •๋˜๋Š” ๊ฒฝ์šฐ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๋” ๊ธด ๊ฒƒ์œผ๋กœ ์œ„์žฅํ•˜๊ฑฐ๋‚˜ ์ƒ์ž์— ์•ฝ๊ฐ„์˜ ์—ฌ์œ  ๊ณต๊ฐ„์ด ์žˆ๋Š” ๋‹ค๋ฅธ ๋‘ ์‚ฌ๋žŒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BTW, ๋‚˜๋Š” "๋งน๋ชฉ์ ์ธ ๋ฏฟ์Œ"์— ๋Œ€ํ•ด ์•ฝ๊ฐ„์˜ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š” ๋งŽ์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ธฐ์กด ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”(๋‹ค๋ฅธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์—†์Œ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋œ๋‹ค๋Š” ๊ฒƒ์€ ์‰ฝ๊ณ  ์ž…์ฆ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๊ฑฐ์˜ ์˜์‹ฌ์˜ ์—ฌ์ง€๊ฐ€ ์—†๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋ผ๋„ DOM ์ค€๋น„ ์ฐจ๋‹จ์—์„œ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ๋ฅผ ๊ณ ์ • ํ•ด์ œํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—(๊ทธ๋ฆฌ๊ณ  ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.) ์ด๊ฒƒ์€ ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์ƒ์˜ ๋ธŒ๋ผ์šฐ์ € ๋กœ๋”ฉ์—์„œ๋„ ๋‹ค๋ฅธ ์ด์ ์ด ์—†๋‹ค๋ฉด ์‚ฌ์ดํŠธ์—์„œ DOM ์ค€๋น„ ์†๋„๋ฅผ ํฌ๊ฒŒ ๋†’์ด๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ํ•ญ์ƒ ์Šน๋ฆฌํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž์™€ UX์˜ ๊ฒฝ์šฐ).

๊ท€ํ•˜์˜ ์ง„์ˆ ์€ ์šฐ๋ฆฌ๊ฐ€ ๋ชจ๋“  ์‚ฌ์ดํŠธ์— ๋Œ€ํ•ด ์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ฒฐ๊ณผ ๋ณ‘๋ ฌ ๋กœ๋“œ๋ฅผ ๋น„๊ตํ•˜๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„ ์ž˜๋ชป๋œ ์ „์ œ์ž…๋‹ˆ๋‹ค. ์›น์ƒ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์ดํŠธ๋Š” ์‹ค์ œ๋กœ script-concat์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค/์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์ œ๋กœ ๋น„๊ต(๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ)๋Š” ๋‹น์‹ ์ด ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ๋งŒํผ ๋ฏธ๋ฌ˜ํ•˜๊ณ  ๋ณต์žกํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(์–ด๋–ค ์ด์œ ๋กœ๋“ ) ๋น„๊ต๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ณ‘๋ ฌ ๋กœ๋”ฉ์€ ๊ฑฐ์˜ ํ•ญ์ƒ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ณด๋‹ค ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋“ค์ด script-concat์— ์—ด๋ ค ์žˆ๋‹ค๋ฉด(๋˜๋Š” ์ด๋ฏธ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด), ๋ณ‘๋ ฌ ๋กœ๋”ฉ์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์กฐ๊ธˆ ๋” ๋ฏธ๋ฌ˜ํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ script-concat์€ ๋งŒ๋Šฅ ์†”๋ฃจ์…˜์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋ณ‘๋ ฌ ๋กœ๋”ฉ์ด ์„ ํ˜ธ๋˜๊ณ  ์ตœ์ƒ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ๋‚จ์•„ ์žˆ๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ์‚ฌ์ดํŠธ๊ฐ€ ๋ณ‘๋ ฌ ๋กœ๋”ฉ๊ณผ ์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ฒฐ ์‚ฌ์ด๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋‰˜์•™์Šค/๋ณต์žก์„ฑ์„ ๋‹ค๋ฃฌ๋‹ค๊ณ  ํ•ด์„œ ๋ณ‘๋ ฌ ๋กœ๋”ฉ ๋Œ€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์— ๋Œ€ํ•œ ๋” ํฐ(๋” ์˜ํ–ฅ๋ ฅ ์žˆ๋Š”) ๋…ผ์˜๊ฐ€ ๋ฏน์Šค์—์„œ ์†์‹ค๋˜์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ „์ž๋Š” ์ฆ๋ช…ํ•˜๊ธฐ ์–ด๋ ต์ง€๋งŒ ํ›„์ž๋Š” ์ด ์‹œ์ ์—์„œ ๊ฑฐ์˜ ์ฃผ์–ด์ง„๋‹ค.


์ด ๋ชจ๋“  ๊ฒƒ์€ ๋ชจ๋“  ๊ฒƒ์„ ๊ณ ๋ คํ•  ๋•Œ IMHO ์ƒ์šฉ๊ตฌ๊ฐ€ ๊ธ์ •์ ์ธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ํŒจํ„ด์„ ์žฅ๋ คํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ์ธํ„ฐ๋„ท์— ์žˆ๋Š” ์‚ฌ์ดํŠธ์˜ 80%๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์ด ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์—์„œ ๋ณ‘๋ ฌ ๋กœ๋”ฉ์œผ๋กœ ์ด๋™ํ•จ์œผ๋กœ์จ ์ด์ ์„ ์–ป๋Š”๋‹ค๋ฉด ๋ณ‘๋ ฌ ๋กœ๋”ฉ์€ ์ƒ์šฉ๊ตฌ์˜ ์‹œ์ž‘์ ์œผ๋กœ ์ œ์•ˆํ•˜๊ธฐ์— ๋งค์šฐ ๊ฑด์ „ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ฒฐ ๋Œ€ ๋ณ‘๋ ฌ ๋กœ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ ์ž ์žฌ์ ์œผ๋กœ ๋” ๋งŽ์€ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ดํŠธ์˜ ํ›จ์”ฌ ์ž‘์ง€๋งŒ ์ค‘์š”ํ•œ ํ•˜์œ„ ์„น์…˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์†Œ์ˆ˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์ƒ์šฉ๊ตฌ์—์„œ ์ตœ์ ํ™”๋˜์–ด์•ผ ํ•˜๋Š” ๋Œ€์ƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋‚ด ๋ช‡ ์„ผํŠธ.

@paulirish @slexaxton --

๋Œ€์—ญํญ์ด ํ•„์š”ํ•œ ํ•œ, 10,000๋ช…(์ •ํ™•ํ•œ ์ƒ˜ํ”Œ๋ง์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ๋Š๊ผˆ์Œ)์ด ํ…Œ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ ์‹คํ–‰ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด(๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค), ๋Œ€๋žต 200GB์˜ ๋Œ€์—ญํญ์ด ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์–‘๋™์ด์— ํ•œ ๋ฐฉ์šธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ์œ„ํ•ด, ๋ฉฐ์น  ๋งŒ์— 200GB์˜ ๋Œ€์—ญํญ์€ ๋‚ด ์„œ๋ฒ„ ํ˜ธ์ŠคํŒ… ๋น„์šฉ์— ์••๋„์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, ๋‚˜๋Š” ๊ทธ ์ด์œ ๋งŒ์œผ๋กœ ํ…Œ์ŠคํŠธ ํ™•์žฅ์„ ์ถ”๊ตฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€, ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ํƒ๊ตฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด ํ…Œ์ŠคํŠธ์˜ 12๊ฐ€์ง€ ์ด์ƒ์˜ ๋ณ€ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 100-200GB์˜ ๋Œ€์—ญํญ์„ ์ˆ˜์‹ญ ๋ฒˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋น„์šฉ์„ ๋ถ€๋‹ดํ•˜๊ธฐ์—๋Š” ์ƒ๋‹นํžˆ ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค. ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ๋Œ€์—ญํญ์ด ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ทธ ๊ธธ์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ๋“ค์€ ๋‹จ์ง€ ์ •์  ํŒŒ์ผ์ด๊ณ  ํ…Œ์ŠคํŠธ์—๋Š” ๋งŽ์€ ๋™์‹œ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ CPU ๋“ฑ๊ณผ ๊ฐ™์€ ๊ธฐ์กด ํ™•์žฅ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์‹ค์งˆ์ ์ธ ์šฐ๋ ค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์—ญํญ๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ๋‚˜๋จธ์ง€ ๋…ผ์˜๋ฅผ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ์ด๋ฉ”์ผ์ด๋‚˜ IM์„ ํ†ตํ•ด ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋งˆ์นจ๋‚ด ํ…Œ์ŠคํŠธ๋ฅผ ํ™•์žฅํ•˜๊ณ  ์ด ๋ฌธ์ œ๋ฅผ "ํ•ด๊ฒฐ"ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ง€๊ธˆ ์ผ๋…„์˜ ๋” ๋‚˜์€ ๋ถ€๋ถ„์„ ์œ„ํ•ด ๋‚ด ๋‡Œ์˜ ๋’ค์ชฝ์— ๋งค๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด dreamhost VPS์—์„œ ๋ฌด์ œํ•œ TB๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ 72GB/์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ›จ์”ฌ ๋” ๋งŽ์€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

๋‚˜๋Š” paul์˜ ๋ง์— ๋™์˜ํ•˜๋ฉฐ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ์–ธ์ œ ์–ด๋–ป๊ฒŒ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ์ •๋ณด๊ฐ€ ๊ฝค ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋‹จ๋ฝ์€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ด '์‰ฝ๊ณ ', '์ฆ๋ช… ๊ฐ€๋Šฅํ•˜๊ณ ' '์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด'๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์–ผ๋งˆ ์ „์— @jashkenas ์™€ ๋น„์Šทํ•œ ๊ฐ€์ •์„

https://github.com/SlexAxton/AssetRace

์ฝ”๋“œ๊ฐ€ ๋‹ค ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์ด ๋งŽ์ง€๋Š” ์•Š์•˜์ง€๋งŒ ๊ฒฐ๊ณผ๋Š” ๊ธฐ๊ปํ•ด์•ผ ์ด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ concat ๋ฉ”์„œ๋“œ(์œ ์‚ฌํ•œ ํฌ๊ธฐ์˜ 3๊ฐœ ํŒŒ์ผ ๋ณ‘๋ ฌ ๋กœ๋“œ ์ง€์นจ์„ ๋”ฐ๋ฆ„)์™€ ๊ฑฐ์˜ ๊ฐ™์€ ์†๋„์˜€์œผ๋ฉฐ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋กœ๋”๋Š” ํ›จ์”ฌ ๋” ๋‹ค์–‘ํ–ˆ๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ค์ฐจ ๋ฒ”์œ„ ๋‚ด์—์„œ ๋” ๋Š๋ ธ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ท€ํ•˜์˜ ์ปดํ“จํ„ฐ์— ์žˆ๋”๋ผ๋„ ์ž์œ ๋กญ๊ฒŒ ๋ถ„๊ธฐํ•˜์—ฌ ๋‹น์‚ฌ ๋˜๋Š” ๋‹น์‚ฌ ๋ชจ๋‘๋ฅผ ๋Šฅ๊ฐ€ํ•˜๋Š” ์†”๋ฃจ์…˜์„ ์ฐพ์œผ์‹ญ์‹œ์˜ค.

h5bp๋Š” ์‚ฌ๋žŒ๋“ค์ด js๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— "๊ฑฐ์ง“ ์ „์ œ"์— ๊ด€ํ•ด์„œ๋Š”. h5bp๋Š” ์—ฐ๊ฒฐ ๋ฐ ์ถ•์†Œ๊ฐ€ ํฌํ•จ๋œ ์Šคํฌ๋ฆฝํŠธ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ธ์ˆ˜๋Š” ์™„์ „ํžˆ ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ‘๋ ฌ ๋กœ๋”ฉ์ด ๊ฑฐ์˜ ํ•ญ์ƒ ์—ฌ๋Ÿฌ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ณด๋‹ค ๋‚ซ๋‹ค๋Š” ์ฃผ์žฅ์€ ์‚ฌ์‹ค์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ํ˜„์žฌ h5bp๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ข‹์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ด ํ† ๋ก ์˜ ๋งฅ๋ฝ์ž…๋‹ˆ๋‹ค.

์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์‚ฌ๋žŒ๋“ค์ด yepnope ๋˜๋Š” lab.js์™€ ๊ฐ™์€ ๊ฒƒ์„ ๊ฐ€์ ธ์™€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ํด๋ฆฌํ•„๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ ˆ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฐ ๋กœ๋”ฉ(19๊ฐœ์˜ JS ๋ฐ 34๊ฐœ์˜ CSS ํŒŒ์ผ ์ค‘)์„ ์ดˆ๋ž˜ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์™„์ „ํžˆ ์ธ์‹ํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋งŽ์€ ์—ญ๋ฐฉํ–ฅ ๋ฐ ์ „๋ฐฉ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ _boilerplate_์— ๋Œ€ํ•ด ๊ฐ€์žฅ ํ•ฉ๋ฆฌ์ ์ด๊ณ  ์„ฑ๋Šฅ์ด ์ข‹์œผ๋ฉฐ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ณธ๊ฐ’์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ์ •์‹ ์œผ๋กœ ๋นŒ๋“œ ๋„๊ตฌ๋Š” ์ด ์„ธ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ›จ์”ฌ ๋” ๋‚˜์•„๊ฐ‘๋‹ˆ๋‹ค.

@slexaxton

... ๊ฒฐ๊ณผ๋Š” ์ด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ concat ๋ฐฉ๋ฒ•๊ณผ ๊ฑฐ์˜ ๊ฐ™์€ ์†๋„์ž„์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค(๋น„์Šทํ•œ ํฌ๊ธฐ์˜ 3๊ฐœ ํŒŒ์ผ ๋ณ‘๋ ฌ ๋กœ๋“œ ์ง€์นจ์„ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค)...

๋‚˜๋Š” ๊ธฐ๊บผ์ด ๋‹น์‹ ์ด ํ•จ๊ป˜ ๋งŒ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์‚ดํŽด๋ณผ ์‹œ๊ฐ„์„ ๊ฐ€์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ๋“ค์ด ๋‹น์‹ ์ดํ•˜๋Š” ์ผ์„ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•˜๋ฏ€๋กœ ๋‹น์‹ ์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์œ ํšจํ•˜๊ณ  ์ •ํ™•ํ•˜๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

OTOH, ๋‚˜๋Š” ๋งŽ์€ ๋ชจ์ˆœ๋œ ์ฆ๊ฑฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์ด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์ดํŠธ์— ๋‚ญ๋น„์ด๊ฑฐ๋‚˜ ๋„์›€์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์„ค๋“๋ ฅ ์žˆ๋Š” ๋‚ด์šฉ์„ ๋ณธ ์ ์ด ์žˆ๋‹ค๋ฉด LABjs๋ผ๋Š” ๋ฏธ์นœ ์‹œ๊ฐ„ ์‹ฑํฌ๋ฅผ ์ด๋ฏธ ์˜ค๋ž˜ ์ „์— ํฌ๊ธฐํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” 2๋…„ ๋™์•ˆ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด LABjs๋ฅผ ๊ณต๊ฐœํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋ฉด์„œ LABjs๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ๋Œ€์•ˆ๋ณด๋‹ค ๋Š๋ฆฐ ์ƒํ™ฉ์„ ๋ฐœ๊ฒฌํ•œ ์ ์ด ์—†๋‹ค๊ณ  100% ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. _๋‚˜์—๊ฒŒ_ ๊ทธ๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•œ ์ ์ด ํ•œ ๋ฒˆ๋„ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์€ ์ด์ ์„ ๋ณด์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ๋งํ•œ ์ ์ด ๋ช‡ ๋ฒˆ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด 100๊ฐœ ์ด์ƒ์˜ ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ช‡ ๋ฒˆ ์žˆ์—ˆ๊ณ  ๋งŽ์€ ์—ฐ๊ฒฐ์˜ ๋ฏธ์นœ ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋˜ ๋ชจ๋“  ์ด์ ์ด ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ LABjs๊ฐ€ ์‚ฌ์ดํŠธ๋ฅผ ๋Š๋ฆฌ๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค๋Š” ๋ง์„ ํ•œ ๋ฒˆ๋„ ๋“ค์–ด๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ง ๊ทธ๋Œ€๋กœ 50๊ฐœ ์ด์ƒ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์—์„œ LABjs๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ๋„์™”๊ณ  ์‚ฌ์ดํŠธ๋Š” ์‹คํŒจ ์—†์ด ์ฆ‰์‹œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋…ธ๋ ฅ ์ดˆ๊ธฐ์— ๋‚ด๊ฐ€ ๋„์›€์„ ์ค€ 7~8๊ฐœ ์‚ฌ์ดํŠธ์—์„œ ์ƒ˜ํ”Œ๋ง์„ ํ–ˆ๊ณ , ๋กœ๋“œ ์†๋„๊ฐ€ ํ‰๊ท ์ ์œผ๋กœ ์•ฝ 15% ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” 4~5๊ฐœ ์‚ฌ์ดํŠธ์˜ ๊ฒฝ์šฐ ๋‹น์—ฐํžˆ LABjs๋ฅผ ๊ตฌํ˜„ํ–ˆ๊ณ  ๋กœ๋”ฉ ์†๋„๊ฐ€ 3๋ฐฐ๋‚˜ ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  LABjs๊ฐ€ ์ฒ˜์Œ ๋‚˜์™”์„ ๋•Œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์€ ์ตœ์ฒจ๋‹จ์ด์—ˆ์Šต๋‹ˆ๋‹ค(๋ช‡๋ช‡๋งŒ์ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค). ๊ทธ๋ž˜์„œ ๊ทธ ์ด์ต์€ ๊ฑฐ๋Œ€ํ•˜๊ณ  ๊ฐ€์‹œ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ฑฐ์˜ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ณ‘๋ ฌ ๋กœ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ์ด์ ์ด ๋” ์ด์ƒ ๊ธ‰๊ฒฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ถ€์ธํ•  ์ˆ˜ ์—†๋Š” ํ•œ ๊ฐ€์ง€๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ๋กœ๋“œ๋ฅผ ์œ„ํ•ด DOM ์ค€๋น„ ์ด๋ฒคํŠธ๋ฅผ ๋ชจ๋‘ ์ฐจ๋‹จํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ document.write() ๋ฅผ ์ฐพ์„ ๊ฐ€๋Šฅ์„ฑ ๋•Œ๋ฌธ์— _ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค_. ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์€ ๋ณธ์งˆ์ ์œผ๋กœ "๋ธŒ๋ผ์šฐ์ €, ๋‚˜๋Š” ๋‹น์‹ ์ด document.write๋ฅผ ๋‹ค๋ฃฐ ํ•„์š”๊ฐ€ ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ํŽ˜์ด์ง€๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•˜์‹ญ์‹œ์˜ค"๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž๋ฃŒ์˜ ์Šฌ๋ผ์ด๋“œ 10์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

http://www.slideshare.net/shadedecho/the-once-and-future-script-loader-v2

ํŒŒ๋ž€์ƒ‰ ์„ ์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹๋น„๊ตํ•˜์‹ญ์‹œ์˜ค(DOM ์ค€๋น„๋จ). ์ด๋Š” ์ „์ฒด ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ๊ฐ„(๋˜๋Š” ๋ชจ๋“  ์ž์‚ฐ ๋กœ๋“œ๋ฅผ ์™„๋ฃŒํ•˜๋Š” ์‹œ๊ฐ„)์ด ๋” ๋‚˜์•„์ง€์ง€ ์•Š๋”๋ผ๋„ ์ธ์ง€๋œ ์„ฑ๋Šฅ(UX)์ด ํฌ๊ฒŒ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

...h5bp๋Š” ์Šคํฌ๋ฆฝํŠธ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค...

์—ฌ๊ธฐ์„œ ์ž˜๋ชป๋œ ๊ฐ€์ •์€ h5bp๊ฐ€ ์ด ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— h5bp์˜ ๋ชจ๋“ (๋˜๋Š” ๋Œ€๋ถ€๋ถ„์˜) ์‚ฌ์šฉ์ž๊ฐ€ ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. h5bp ์‚ฌ์šฉ์ž์˜ 100%๊ฐ€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด์„œ h5bp๊ฐ€ ์ธํ„ฐ๋„ท์˜ ๋กฑํ…Œ์ผ(long-tail)๋กœ ๋กค์•„์›ƒ๋œ๋‹ค๋ฉด ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ๊ทธ concat ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์‰ฝ๊ฒŒ ๋ง‰์„ ์ˆ˜์žˆ๋Š” ๋งŽ์€ ๋‹ค๋ฅธ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ์‚ฌ์šฉ์—์„œ ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋” ์‚ฌ์šฉ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” _๋งค์šฐ ์ ์Šต๋‹ˆ๋‹ค_.

๋”ฐ๋ผ์„œ ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ธํ„ฐ๋„ท์˜ ๋กฑํ…Œ์ผ์— ๋” ๊ด‘๋ฒ”์œ„ํ•œ ๋งค๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ์ตœ์ ํ™”๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์ดํŠธ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ƒํƒœ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ๋” ์‰ฝ๊ณ  ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋กฑํ…Œ์ผ ์‚ฌ์ดํŠธ ์ค‘ ์ €๋ ดํ•œ ์›” 6๋‹ฌ๋Ÿฌ, ๋Œ€๋Ÿ‰ ๊ณต์œ  ํ˜ธ์ŠคํŒ…, CDN์ด ์•„๋‹Œ ์›น ํ˜ธ์ŠคํŒ… ํ™˜๊ฒฝ์—์„œ ์ž๋™ํ™”๋œ ์Šคํฌ๋ฆฝํŠธ ๋นŒ๋“œ ๋„๊ตฌ์— ๋…ธ๋ ฅ์„ ๋“ค(๋˜๋Š” ๊ฒฝํ—˜ํ•˜๋Š” ๊ธฐ์ˆ ์ด ์žˆ๋Š”) ์‚ฌ๋žŒ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์‚ฌ๋žŒ๋“ค์ด yepnope ๋˜๋Š” lab.js์™€ ๊ฐ™์€ ๊ฒƒ์„ ๊ฐ€์ ธ์™€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ํด๋ฆฌํ•„๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๋กœ๋”ฉ์ด ๋Š๋ ค์ง‘๋‹ˆ๋‹ค...

๋‚˜๋Š” ์ด ๋ง์— ๋” ๋™์˜ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. LABjs๋Š” ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ํด๋ฆฌํ•„๋กœ ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ(๋‹น๋ถ„๊ฐ„ ์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ฒฐ ๋ฌด์‹œ)์— ๋Œ€ํ•œ LABjs์˜ ๊ฐœ์„  ์‚ฌํ•ญ์€ ์ž˜ ํ™•๋ฆฝ๋˜์–ด ์žˆ์œผ๋ฉฐ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ฐ˜๋ฐ•๋œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. LABjs๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜(๋˜๋Š” ๋งŽ์€) ์‚ฌ์ดํŠธ๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๋Š” ์ฆ๊ฑฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค.

๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋Š๋ฆฐ ๋กœ๋”ฉ์„ ์ดˆ๋ž˜ํ•  ์ด์œ ๋Š” ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ„์—์„œ ์„ค์ •ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋Š” ํ•ญ์ƒ DOM ์ค€๋น„๋ฅผ ์ฐจ๋‹จํ•˜์ง€๋งŒ ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ์™„์ „ํžˆ ์ธ์‹ํ•˜์ง€ ๋ชปํ•  ๋งŽ์€ ์—ญ๋ฐฉํ–ฅ ๋ฐ ์ˆœ๋ฐฉํ–ฅ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? LABjs์˜ ๋ธŒ๋ผ์šฐ์ € ์ง€์› ๋งคํŠธ๋ฆญ์Šค์—๋Š” ์ „ ์„ธ๊ณ„ ๋ชจ๋“  ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์ ˆ๋Œ€ ๋‹ค์ˆ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์นจ์ž…ํ•˜๋Š” ๋ฏธ์นœ ์ž‘์€ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ถ„๋ช…ํžˆ ์ด์ ์ด ์žˆ๋Š” ๋งŽ์€ ์ˆ˜์˜ ๋ธŒ๋ผ์šฐ์ €๋ณด๋‹ค ํ›จ์”ฌ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

LABjs 1.x์—๋Š” ์บ์‹œ ์‚ฌ์ „ ๋กœ๋“œ์™€ ๊ฐ™์€ ๋ฏธ์นœ ํ•ดํ‚น์ด ๋งŽ์ด ํฌํ•จ๋˜์–ด ์žˆ์—ˆ๋Š”๋ฐ, ์ด๋Š” ์‹ค์ œ๋กœ ๋ธŒ๋ผ์šฐ์ € ์†์ƒ์— ๋Œ€ํ•œ ์ฃผ์š” ์šฐ๋ ค ์‚ฌํ•ญ์ด์—ˆ์Šต๋‹ˆ๋‹ค. LABjs 2.x๋Š” ์ด๋ฅผ ์™„์ „ํžˆ ๋’ค์ง‘์—ˆ์œผ๋ฉฐ ์ด์ œ ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋ณ‘๋ ฌ ๋กœ๋“œ์— ๋Œ€ํ•ด ์•ˆ์ •์ ์ด๊ณ  ํ‘œ์ค€ํ™”๋œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์ด์ „ ์›นํ‚ท ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€ํ•œ ํ•ดํ‚น๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ LABjs 2.x์—๋Š” "์‹ค์ œ ์‚ฌ์ „ ๋กœ๋“œ"์™€ ๊ฐ™์€ ๊ณง ์ถœ์‹œ๋  ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ ๊ธฐ์ˆ (๊ณง ํ‘œ์ค€ํ™”๋  ์˜ˆ์ •)์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๊ฐ€ ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์— ๋Œ€ํ•ด ํ™•์‹คํžˆ ๋งํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ์—ฌ์ „ํžˆ ํ•ดํ‚น์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ LABjs์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์ด ์ˆœ๋ฐฉํ–ฅ ๋˜๋Š” ์—ญ๋ฐฉํ–ฅ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค๋Š” ์ฃผ์žฅ์— ๋‹นํ™ฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ช…๋ฐฑํžˆ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฃผ์žฅํ•˜๋‹ค.

LABjs๊ฐ€ ์‹ค์ œ๋กœ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ํด๋ฆฌํ•„์ด ๋˜๋„๋ก ์˜๋„ํ•œ ์ด์œ ์— ๋Œ€ํ•ด ์•ฝ๊ฐ„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด...

  1. ์ด์ „ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณ‘๋ ฌ ๋กœ๋”ฉ์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ๋กœ๋”ฉ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ™•์‹คํžˆ ์—ด๋“ฑํ•ฉ๋‹ˆ๋‹ค. 2๋…„ ์ „ LABjs๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์„ ๋•Œ ๊ฐ€์žฅ ์ตœ์‹ ์˜ ๋ธŒ๋ผ์šฐ์ €์˜€๋˜ "์ด์ „ ๋ธŒ๋ผ์šฐ์ €"์—์„œ ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ๊ฐ„์ด 3๋ฐฐ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ์˜ ์ •์˜์— ๋”ฐ๋ฅด๋ฉด LABjs๋Š” ์ž์ฒด์ ์œผ๋กœ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๊ธฐ๋Šฅ(์ฆ‰, ๋ณ‘๋ ฌ ๋กœ๋”ฉ ์„ฑ๋Šฅ)์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ํด๋ฆฌํ•„์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ถ„๋ช…ํžˆ ํ›จ์”ฌ ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์˜ ์ด์ ์„ ์™„์ „ํžˆ ์—†์• ์ง€๋Š” ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์— v12(v13์—์„œ ์ˆ˜์ •๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค)์˜ ํฌ๋กฌ์€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋Š” ๋™์•ˆ ์—ฌ์ „ํžˆ ์ด๋ฏธ์ง€ ๋กœ๋“œ๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. IE, Firefox ๋ฐ Chrome์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋™์ ์œผ๋กœ ๋กœ๋“œ๋˜๋Š” ๋™์•ˆ ๋ชจ๋‘ ์—ฌ์ „ํžˆ DOM ์ค€๋น„๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋‘ document.write() ๊ฐ€ ์ˆจ์–ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์—ฌ์ „ํžˆ ๋น„๊ด€์ ์œผ๋กœ ๊ฐ€์ •ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฒฝ์šฐ LABjs๋Š” ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €์— "๋น„ DOM ์ค€๋น„ ์ฐจ๋‹จ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ"๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ์˜๋ฏธ์—์„œ "ํด๋ฆฌํ•„"์ž…๋‹ˆ๋‹ค. ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ์—†๋Š” ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ defer ์™€ ํ•จ๊ป˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค( async ๋Š” ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„๋ช…ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค) . ๊ทธ๋Ÿฌ๋‚˜ defer ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ์œผ๋ฉฐ ์ง€์›์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์ด ๋  ๋งŒํผ ๊ด‘๋ฒ”์œ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋น„์—ฐ๊ธฐ์— ๋Œ€ํ•œ ๋Œ€์ฒด๋Š” ๋‚˜์œ ์„ฑ๋Šฅ์ž„). ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ฒฝ์šฐ์— LABjs๋Š” ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ defer (์ •ํ™•ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ)์˜ ์„ฑ๋Šฅ ํŠน์„ฑ์— ๋Œ€ํ•œ ํด๋ฆฌํ•„์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†”์งํžˆ, ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์šฐ๋ฆฌ๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ๊ฐ์ฒด์— ๋Œ€ํ•œ ํ‘œ์ค€์„ ์ฒญ์›ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์บ์‹œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ํ…์ŠคํŠธ/์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(๋˜๋Š” ๋” ๋‚˜์œ ๊ฒฝ์šฐ์—๋Š” ๊ฐœ์ฒด ํƒœ๊ทธ๋‚˜ ์ด๋ฏธ์ง€ ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ธ๊ธฐ ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์ƒˆ ๋ฒ„์ „์— ํ•„์š”ํ•œ ๊ฒƒ์ด๋ฉด ๋ฌด์—‡์ด๋“  ์‚ฌ์šฉ) ์•„๋ฌด ๊ฒƒ๋„ ์—†์ด ๋งŽ์€ ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์€ ๋„ˆ๋ฌด ๋งŽ์€ ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์—ฌ์ „ํžˆ dom ๋…ธ๋“œ ์‚ฝ์ž…์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ๋กœ๋“œํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ(์ˆœ์„œ ๋•Œ๋ฌธ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค) ์Šคํฌ๋ฆฝํŠธ์— ๊ด€ํ•ด์„œ๋Š” ๋” ์ด์ƒ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(Google์ด ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ document.write ์‚ฌ์šฉ์„ ์ค‘๋‹จํ–ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ๋Œ€๋ณธ์ด์ง€๋งŒ ๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค).

๋˜ํ•œ ์—ฌ๊ธฐ์—์„œ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์— ๊ด€ํ•œ ๊ฐ€์žฅ ํฐ ์š”์ ์„ ๋†“์น˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•˜๋Š” ๋Œ€์‹  js ์ฝ”๋“œ๋ฅผ ์˜จ๋””๋งจ๋“œ๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ ์‚ฌ์†Œํ•˜์ง€ ์•Š์€ ์–‘์˜ ์—ฐ๊ฒฐ๋œ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ถ”์•…ํ•จ). UI ์ƒํ˜ธ ์ž‘์šฉ ํ›„ ์•ฝ๊ฐ„์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์žˆ๋Š” ๊ฒƒ์€ ์‹œ์ž‘ ์‹œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์กฐ๊ธˆ์ด๋ผ๋„ "๋ฉˆ์ถ”๋Š”" ๊ฒƒ๋ณด๋‹ค ๋ฌธ์ œ๊ฐ€ ํ›จ์”ฌ ์ ์Šต๋‹ˆ๋‹ค(DOM์€ ์ž˜ ์ค€๋น„๋  ์ˆ˜ ์žˆ์ง€๋งŒ ํŽ˜์ด์ง€๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๋ฌด์Šจ ์†Œ์šฉ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ถ”๊ฐ€ ๋ฐ˜๋ณต ์ž‘์—…์ด ์•„์ง ์‹คํ–‰๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์‚ฌ์ดํŠธ๊ฐ€ ์ฆ‰์‹œ ๋กœ๋“œ๋œ ๋‹ค์Œ ํˆฌ๋ฐ•ํ•œ ์ผ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„์ฐจ๋ฆฐ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?).

๋”ฐ๋ผ์„œ ์—„๊ฒฉํ•œ ์„ฑ๋Šฅ ์ธก์ •์€ ๋ชจ๋‘ ํ›Œ๋ฅญํ•˜๊ณ  ๋ฉ‹์ง€์ง€๋งŒ ์—ฌ์ „ํžˆ ์ธ์ง€๋œ ์„ฑ๋Šฅ์ด ๊ถ๊ทน์ ์ธ ๋ชฉํ‘œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค... ๊ทธ๋ฆฌ๊ณ  ์Šฌํ”„๊ฒŒ๋„ ์ถ”์ •/์ตœ์ ํ™”/๊ณ„์‚ฐํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ฐ•๋ ฌํ•˜๋‹ค.

@jaubourg--

์†”์งํžˆ, ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์šฐ๋ฆฌ๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ๊ฐ์ฒด์— ๋Œ€ํ•œ ํ‘œ์ค€์„ ์ฒญ์›ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ‘œ์ค€/์‚ฌ์–‘ ๋ฐ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์–ด๋–ป๊ฒŒ ๋” ๋‚˜์€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ๊ธฐ์ˆ ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ๋งŽ์€ ์ฒญ์›์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๋ช‡ ๋…„ ๋งŒ์— ์ด ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์ฒซ ๋ฒˆ์งธ ํฐ ์Šน๋ฆฌ๋Š” 2์›”์— ๋‹ค์‹œ ์ฑ„ํƒ๋˜์–ด ํ˜„์žฌ ๋ชจ๋“  ์ฃผ์š” ์ตœ์‹  ๋ฆด๋ฆฌ์Šค ๋ธŒ๋ผ์šฐ์ €์— ์žˆ๋Š” "ordered async"( async=false )์ž…๋‹ˆ๋‹ค(์˜ˆ์™ธ: Opera๋Š” ๊ณง ์ถœ์‹œ๋  ์˜ˆ์ •์ด๋ฉฐ IE10p2์—๋Š” ์ด ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ).

ํ˜„์žฌ Ian Hickson๊ณผ ๊ณ„์† ๋…ผ์˜ ์ค‘์ธ ๋‹ค์Œ ํ† ๋ก ์€ ์ œ๊ฐ€ "์‹ค์ œ ์‚ฌ์ „ ๋กœ๋“œ"๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” "์‹ค์ œ ์‚ฌ์ „ ๋กœ๋“œ"(IE๊ฐ€ v4, btw๋ถ€ํ„ฐ ์ด๋ฏธ ์ง€์›ํ•จ)๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‚ฌ์†Œํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” "์€์ƒ‰ ์ด์•Œ"์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด์™€ ๊ฐ™์€ ํ‘œ์ค€ํ™”๋œ ๊ฒƒ์„ ๋ณด๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์—ฌ์ „ํžˆ ๋งค์šฐ ๋‚™๊ด€์ ์ž…๋‹ˆ๋‹ค.

์ž์„ธํ•œ ์ •๋ณด๋Š” ์ด ์œ„ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค: http://wiki.whatwg.org/wiki/Script_Execution_Control

์บ์‹œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ํ…์ŠคํŠธ/์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(๋˜๋Š” ๋” ๋‚˜์˜๊ฒŒ๋Š” ๊ฐœ์ฒด ํƒœ๊ทธ๋‚˜ ์ด๋ฏธ์ง€ ๊ฐœ์ฒด ๋˜๋Š” ์ธ๊ธฐ ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์ƒˆ ๋ฒ„์ „์ด ์š”๊ตฌํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์‚ฌ์šฉ)

์ด๊ฒƒ์„ "์บ์‹œ ์‚ฌ์ „ ๋กœ๋”ฉ"์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ธ์ •๋˜๋Š” ์ถ”์•…ํ•˜๊ณ  ๋”์ฐํ•œ ํ•ดํ‚น์ž…๋‹ˆ๋‹ค. LABjs๋Š” v2๋ถ€ํ„ฐ ์ด๊ฒƒ์„ ๊ฐ•์กฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ด์ „ ์›นํ‚ท์˜ ๋Œ€์ฒด ์ˆ˜๋‹จ์œผ๋กœ๋งŒ ์‚ฌ์šฉ). ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋Š” ๋ถˆํ–‰ํžˆ๋„ ์—ฌ์ „ํžˆ ์ด๋ฅผ ๊ธฐ๋ณธ ๋กœ๋”ฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ "์บ์‹œ ์‚ฌ์ „ ๋กœ๋“œ"์— ๋Œ€ํ•œ ํ•„์š”์„ฑ์˜ 90%๋Š” ํ‘œ์ค€ํ™”๋˜๊ณ  ํ•ดํ‚น์ด ์•„๋‹Œ "์ˆœ์„œ๋œ ๋น„๋™๊ธฐ์‹"์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋Š” ์ง€๊ธˆ "์บ์‹œ ์‚ฌ์ „ ๋กœ๋“œ"๋ณด๋‹ค ์ด๋ฅผ ์„ ํ˜ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ "์บ์‹œ ์‚ฌ์ „ ๋กœ๋“œ"๊ฐ€ ํ˜•ํŽธ์—†๋‹ค๋Š” ์ ์—๋Š” ๋™์˜ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ํ•ดํ‚น์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” document.createElement("script") ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ›จ์”ฌ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฏ€๋กœ ์ด๊ฒƒ์ด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ. "์‹ค์ œ ์‚ฌ์ „ ๋กœ๋”ฉ"์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด Script ์š”์†Œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์†”์งํžˆ ๊ทธ๋ ‡๊ฒŒ ๋ฏฟ๋Š”๋‹ค.

์—ฌ๊ธฐ์—์„œ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์™€ ๊ด€๋ จํ•˜์—ฌ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์„ ๋†“์น˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ ์‹œ js ์ฝ”๋“œ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ

์ด๊ฒƒ์ด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ๊ฐ€์ ธ์˜ค๋Š” ์ค‘์š”ํ•œ ์ด์ ์ด๋ผ๋Š” ๋ฐ ๋งค์šฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ "script concat" ์‚ฌ๋žŒ๋“ค์€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ์—†์ด๋Š” ์œ ์Šค ์ผ€์ด์Šค๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‘˜์„ "๋น„๊ต"ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ _this_ ์Šค๋ ˆ๋“œ์—์„œ ์ผ์ข…์˜ ๋ฌด์˜๋ฏธํ•œ ์ฃผ์žฅ์ž…๋‹ˆ๋‹ค. "์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ฒฐ" ์ง€์ง€์ž๋กœ์„œ "์ข‹์•„์š”, ์šฐ๋ฆฌ๋Š” ๊ทธ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์ง€๋งŒ "XYZ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋” ์ž˜ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ธ์ง€๋œ ์„ฑ๋Šฅ์€ _is_ ๊ฑฐ๋Œ€ํ•˜๊ณ  ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ €๋„ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋ฌธํ˜• ๋กœ๋”ฉ์€ ์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์˜จ๋””๋งจ๋“œ ๋กœ๋”ฉ์€ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ฒฝ์šฐ ์‹ค์ œ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ์‹ค์ œ ์„ฑ๋Šฅ(๋‹จ์ˆœํ•œ ์ธ์‹์ด ์•„๋‹˜)๋„ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค(์ž‘์„ฑํ•œ ์ฝ”๋“œ์˜ 100%๊ฐ€ ํ•„์š”ํ•œ ํŽ˜์ด์ง€ ๋ฐฉ๋ฌธ์ด ๊ฑฐ์˜ ์—†์Œ).

์ธ์ง€๋œ ์„ฑ๋Šฅ์€ ๋‚ด๊ฐ€ ์œ„์—์„œ DOM ์ง€์› ์ฃผ์žฅ์„ ์˜นํ˜ธํ•˜๋Š” ์ด์œ ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ "๋Š๋ผ๋Š”" ์†๋„๊ฐ€ ํŽ˜์ด์ง€๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ(์‹ค์ œ๋กœ ๋กœ๋“œ๋˜๋Š” ์†๋„์— ๊ด€๊ณ„์—†์ด) ์ƒ๊ฐํ•˜๋Š” _๋งค์šฐ_ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งŽ์€ ์‚ฌ์šฉ์ž ์—ฐ๊ตฌ์— ์˜ํ•ด ํ™•๋ฆฝ๋œ ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค.

@getify์˜ ์—ด์ •์ ์ด๊ณ  ๊ธด ๋Œ“๊ธ€์„ ์‚ฌ๋ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์นด์ผ ...

์—ฐ๊ตฌ์— ์–ด๋–ค ์‹์œผ๋กœ๋“  ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด _์‚ฌ๋ž‘_ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๋Œ€์—ญํญ(๋น„์šฉ)์ด ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•„์„œ @getify ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ์ œ์•ˆํ•ฉ๋‹ˆ๊นŒ?
์ฃผ์ €ํ•˜์ง€ ๋งˆ์‹œ๊ณ  ์ด๋ฉ”์ผ(aaron [at] aaronpeters [dot] ๋˜๋Š” ํŠธ์œ„ํ„ฐ(@aaronpeters)

@kyle

์˜ˆ, ์‚ฌ์ „ ๋กœ๋“œ์— ๊ด€ํ•œ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ "๊ฐœ์„  ์‚ฌํ•ญ" ํ† ๋ก ์„ ๋”ฐ๋ž์œผ๋ฉฐ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ "์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์— ๋˜ ๋‹ค๋ฅธ ์†์„ฑ ์ถ”๊ฐ€" ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ตฌ์ž…ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด xhr ์‚ฌ์–‘์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ ์–ป๋Š” ์ž‘์€ ์ด์ ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋งŽ์€ ๋ณต์žก์„ฑ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํ•œ ๊ฒƒ์€ ๋™์  ์‚ฝ์ž…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ(์ฆ‰, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ด๋ฏธ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š”) ์‚ฌ์ „ ๋กœ๋“œ ๋™์ž‘๋งŒ ๊ฑฐ์˜ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ ๋„๋Œ€์ฒด ์™œ ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ์‚ฝ์ž…์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ํƒœ๊ทธ๋ฅผ ๊ฑฐ๊ธฐ์— ๋‘๊ฑฐ๋‚˜ DOM ๋…ธ๋“œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋ฌธ์„œ ๊ตฌ์กฐ์™€ ๊ด€๋ จ์ด ์—†๋Š” ๋ชฉ์ ์„ ์œ„ํ•œ ์ˆ˜๋‹จ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ๋ผ์ธ์— ๋”ฐ๋ผ ํ›จ์”ฌ ๋” ํŽธ์•ˆ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

window.loadScript( url, function( scriptObject ) {
    if ( !scriptObject.error ) {
        scriptObject.run();
    }
});

์ด๊ฒƒ์€ ๋†€๋ผ์šด ์ผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ์ด๋ฒคํŠธ๋ฅผ "์กฐ์ธ"ํ•œ ๋‹ค์Œ ํ•„์š”ํ•œ ์ˆœ์„œ๋Œ€๋กœ ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํžˆ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ DOM์˜ ์กด์žฌ๋ฅผ ์•”์‹œํ•˜์ง€ ์•Š์•„ ๋”์šฑ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ํ•˜๋ฃจ๋นจ๋ฆฌ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ์‚ฝ์ž…์—์„œ ์™„์ „ํžˆ ๋ฒ—์–ด๋‚˜๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€, ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๊ฒƒ์„ ํด๋ฆฌํ•„ํ•˜๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํžˆ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์™„์ „ํ•œ require ์‹œ์Šคํ…œ๋ณด๋‹ค ๋ถ€๋‹ด์ด ํ›จ์”ฌ ์ ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ๋ธŒ๋ผ์šฐ์ €์— ๊ตญํ•œ๋˜์ง€ ์•Š๋Š” require ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ๋นŒ๋”ฉ ๋ธŒ๋ฆญ์ด ๋  ์ˆ˜ ์žˆ์Œ).

์ฆ‰, ์ธ์ง€๋œ ์„ฑ๋Šฅ์— ๋Œ€ํ•ด 100% ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. "๋ชจ๋‘ ํ•จ๊ป˜ ์••์ถ•ํ•˜์ž"๋Š” ์ฃผ๋ฌธ์ด ๋น ๋ฅด๊ฒŒ ๋‚ด ์ทจํ–ฅ์— ๋งž์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋„ˆ๋ฌด ํ๋ฆฌ๊ฒŒ ํ•˜๋Š” ์ผ์ข…์˜ ๋ฏฟ์Œ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€์ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ;)

fwiw, defer ๋Š” IE4+, Chrome, Safari ๋ฐ FF 3.5+์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. Opera์—์„œ๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฆ‰.... ์‚ฌ์šฉ์ž์˜ 98.5%๊ฐ€ ์ด๋ฏธ script@defer ์ง€์›์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@getify

๊ทธ๋Ÿฌ๋‚˜ defer ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ๋ถ€ ์‚ฌํ•ญ plz? ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ณธ ์ ์ด ์—†๋‹ค

defer๊ฐ€ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” DOM ์ค€๋น„ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „์ด๋‚˜ ํ›„์— ์‹คํ–‰๋ฉ๋‹ˆ๊นŒ?

๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๊นŒ?

exec ์ˆœ์„œ์™€ ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ์™€ ์™ธ๋ถ€ ์—ฐ๊ฒฐ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

@paulirish--

...98.5%์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ script@defer๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›์ด ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ๋งŽ์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋‚ด๊ฐ€ ์˜๋ฏธํ•œ๊ฑฐ์•ผ. (์•„๋ž˜ ์ฐธ์กฐ)

๊ทธ๋Ÿฌ๋‚˜ ์—ฐ๊ธฐ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ๋ถ€ ์‚ฌํ•ญ plz? ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ณธ ์ ์ด ์—†๋‹ค

์ฐธ์กฐํ•˜์„ธ์š”... IIRC:

  1. ๋™์  ์Šคํฌ๋ฆฝํŠธ ์š”์†Œ์— ๋Œ€ํ•œ ์ง€์—ฐ ์ง€์›์€ ์–ด๋–ค ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ์ •์˜๋˜๊ฑฐ๋‚˜ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค... ๋งˆํฌ์—…์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ "์˜จ๋””๋งจ๋“œ" ๋˜๋Š” "์ง€์—ฐ ๋กœ๋”ฉ" ๊ธฐ์ˆ  ๋ฐ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์™„์ „ํžˆ ์“ธ๋ชจ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  2. ์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” DOM ์ค€๋น„๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ง์ „์— ์ง€์—ฐ๋œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” DOM ์ค€๋น„๊ฐ€ ์‹คํ–‰๋œ ์งํ›„์— ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋” ํŒŒ๊ณ ๋“ค ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์— ์‚ฌ์šฉ๋œ defer ๊ฐ€) ์ธ๋ผ์ธ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์— ์ง€์ •๋œ defer ์™€ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ชจ๋‘ ์—ฐ๊ธฐํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ์‹คํ–‰๋˜๋„๋ก ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  4. defer document.write() ๋ฌธ์œผ๋กœ ์ž‘์„ฑ๋œ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์˜ defer ์žˆ๋Š” ๋งˆํฌ์—…์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‚ด ์†๋์— ์ค€๋น„๋œ ๋งŽ์€ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•ฝ 2๋…„ ์ „(LABjs ์ด์ „)์— defer ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๊ณ  ๋ธŒ๋ผ์šฐ์ € ๊ฐ„ ํ…Œ์ŠคํŠธ์—์„œ ์ถฉ๋ถ„ํžˆ ๋งˆ์ฃผ์ณค๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ์ณ๋‘๊ณ  ์‹ค์ œ๋กœ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.


๋˜ํ•œ defer ๋Š” LABjs(๋ฐ ๊ธฐํƒ€ ๋ณ‘๋ ฌ ๋กœ๋”)๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๊ณผ ์‹ค์ œ๋กœ ๋™์ผํ•˜์ง€ ์•Š๋‹ค๋Š” ์ ์„ ์ง€์ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹จ์ง€ ๊ทธ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค๋Š” ๊ฒฝ๊ณ ์™€ ํ•จ๊ป˜ ์œ„์—์„œ ๋งํ–ˆ๋‹ค. ์‚ฌ์‹ค, ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์ด ์ œ๊ณตํ•˜๋Š” ๊ฒƒ(์ ์–ด๋„ LABjs์˜ ๋ถ€๋ถ„์—์„œ๋Š”)์€ "์ •๋ ฌ๋œ ๋น„๋™๊ธฐ์‹"์ด๋ฉฐ, ์ด๋Š” ๋งˆํฌ์—…์„ ํ†ตํ•ด์„œ๋งŒ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค.

"ordered async"์™€ "defer"์˜ ์ฐจ์ด์ ์€ "ordered async"๋Š” ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ๋œ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋Š” ์ฆ‰์‹œ ์‹คํ–‰์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ˜๋ฉด, "defer"๋Š” ์‹คํ–‰์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— `DOM ์ค€๋น„๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค. ๋งˆํฌ์—…์ด ๊ฑฐ์˜ ์—†๊ณ  ๋‹ค๋ฅธ ์ฐจ๋‹จ ๋งˆํฌ์—… ํ˜ธ์ถœ(์˜ˆ: ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ)์ด ์—†๋Š” ๊ฐ„๋‹จํ•œ ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ ์ด ์ฐจ์ด๋Š” ์ž‘์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์€ ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์ด ํ—ˆ์šฉ๋˜๋Š” ์‹œ์ ์€ ํฌ๊ฒŒ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์†”์งํžˆ defer ์˜ ์ ‘์„ ์—์„œ ๋„ˆ๋ฌด ๋งŽ์ด ๋ฒ—์–ด๋‚˜์ง€ ์•Š์•˜์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์‹ค์ œ๋กœ๋Š” ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์ด ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๊ณผ ํฌ๊ฒŒ ๋น„๊ต๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์–ป๊ณ  ์žˆ๋Š” ์‹คํ–‰ ์ˆœ์„œ ๋™์ž‘์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋งˆํฌ์—… ์ „์šฉ์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์˜ˆ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. defer ์˜ฌ๋ฆฌ์ง€ ๋ง์•˜์–ด์•ผ ํ–ˆ๋Š”๋ฐ ํ† ๋ก ์ด ํ๋ ค์กŒ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

์œ„์—์„œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋งํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. "์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฒฝ์šฐ LABjs๋Š” '์ˆœ์„œํ™”๋œ ๋น„๋™๊ธฐ' ๋™์ž‘์— ๋Œ€ํ•œ ์ผ์ข…์˜ 'ํด๋ฆฌํ•„'์ด๋ฉฐ, ์ด๋Š” ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋งˆํฌ์—… ์ „์šฉ์„ ์„ ํƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."

๋‚˜๋Š” "ordered async"๋ฅผ ์ข‹์•„ํ•˜๋Š”๋ฐ, ์ข‹์€ ํ‘œํ˜„์ž…๋‹ˆ๋‹ค.

Kyle > afaik, defer๊ฐ€ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” domready ์ „์—๋„ _before_ onload๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
async ์†์„ฑ์ด ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์‹คํ–‰ํ•˜๊ณ  _always_ _before_ onloadํ•˜์ง€๋งŒ ๋ฐ˜๋“œ์‹œ domready ์ด์ „์— ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

@aaronpeters--
๋‚˜๋Š” ๋‹น์‹ ์ด ์•ฝ๊ฐ„ ๊ถค๋„์—์„œ ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

async ์Šคํฌ๋ฆฝํŠธ(๋งˆํฌ์—…์—์„œ ๋˜๋Š” ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋จ)๋Š” DOM ์ค€๋น„ ์ด์ „ ๋˜๋Š” ์ดํ›„๋ฅผ ์˜๋ฏธํ•˜๋Š” ASAP๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, async ์Šคํฌ๋ฆฝํŠธ๋Š” ์•„๋ฌด ๊ฒƒ๋„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(JS ์—”์ง„ ๊ฐ€์šฉ์„ฑ ์ž์ฒด ์ œ์™ธ). ๊ทธ๋Ÿฌ๋‚˜ window.onload ์ „์— ์š”์ฒญ๋˜๋ฉด ๊ฑฐ์˜ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋กœ๋“œ ๋ฐ ์‹คํ–‰๋  ๋•Œ๊นŒ์ง€ window.onload ์ด๋ฒคํŠธ๋ฅผ "์œ ์ง€"ํ•ฉ๋‹ˆ๋‹ค. async ์Šคํฌ๋ฆฝํŠธ๊ฐ€ window.onload ์œ ์ง€ํ•˜์ง€ ์•Š๊ณ  ์ •ํ™•ํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์„œํ™”๋œ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— defer ๋Š” ๊ตฌ์ฒด์ ์œผ๋กœ ๋‹ค์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. DOM์ด ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์‹ญ์‹œ์˜ค. ๊ฒŒ๋‹ค๊ฐ€, defer ์„ค์ •๋œ ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ์˜ "๋Œ€๊ธฐ์—ด"์ด ์žˆ์–ด ๋Œ€๊ธฐ์—ด์ด DOM ์ค€๋น„๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, DOM ์ค€๋น„ ์ดํ›„(๋˜๋Š” ์˜คํžˆ๋ ค DOM์ด ์ค€๋น„๋˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋” ์ง€์—ฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋กœ๋”ฉ์ด ๋Š๋ฆฌ๊ฒŒ ์ง„ํ–‰๋˜๋Š” ๊ฒฝ์šฐ). ๊ทธ๋“ค์€ window.onload ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. IE์˜ ์ผ๋ถ€ ๋ฒ„์ „์—์„œ ์ด ์ด๋ก ์˜ ์‹ค์ œ ์‹คํ–‰์ด ์•ฝ๊ฐ„ ๋ชจํ˜ธํ–ˆ๋‹ค๋Š” ๋ง‰์—ฐํ•œ ๊ณผ๊ฑฐ์˜ ๊ธฐ์–ต์ด ๋– ์˜ค๋ฆ…๋‹ˆ๋‹ค.

@getify

์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋” ์ด์ƒ ํƒˆ์„ ์‹œํ‚ค๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์ „ ๋กœ๋“œ์— ๋Œ€ํ•œ ๋‚ด ์ƒ๊ฐ๊ณผ WHATWG ํŽ˜์ด์ง€์— ๊ท€ํ•˜์˜ ์ œ์•ˆ์„ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. http://jaubourg.net/ driving-a-nail-with-a-screwdriver-the-way

async ์Šคํฌ๋ฆฝํŠธ(๋งˆํฌ์—…์—์„œ ๋˜๋Š” ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋จ)๋Š” DOM ์ค€๋น„ ์ด์ „ ๋˜๋Š” ์ดํ›„๋ฅผ ์˜๋ฏธํ•˜๋Š” ASAP๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, async ์Šคํฌ๋ฆฝํŠธ๋Š” ์•„๋ฌด ๊ฒƒ๋„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(JS ์—”์ง„ ๊ฐ€์šฉ์„ฑ ์ž์ฒด ์ œ์™ธ). ๊ทธ๋Ÿฌ๋‚˜ window.onload ์ „์— ์š”์ฒญ๋˜๋ฉด ๊ฑฐ์˜ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋กœ๋“œ ๋ฐ ์‹คํ–‰๋  ๋•Œ๊นŒ์ง€ window.onload ์ด๋ฒคํŠธ๋ฅผ "์œ ์ง€"ํ•ฉ๋‹ˆ๋‹ค.

JavaScript๊ฐ€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜๋ฉด ์ดํ•ด๊ฐ€ ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ ธ๋‹ค๋Š” ๊ฑธ ์•Œ์ง€๋งŒ...)

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ setTimeout(fn, 0) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  onload ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ๋‹ค์šด๋กœ๋“œ ๋Œ€๊ธฐ์—ด์— ๋“ค์–ด๊ฐ€๋ฉด ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋กœ๋“œํ•˜๋ฉด (์—ฌ์ „ํžˆ) onload ์ง€์—ฐ๋ฉ๋‹ˆ๋‹ค.

async ์Šคํฌ๋ฆฝํŠธ๊ฐ€ window.onload ์œ ์ง€ํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์„œํ™”๋œ ์‚ฌ๋ก€๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ •ํ™•ํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์–ป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ธฐ์–ตํ•ด์ฃผ์„ธ์š”! :)

์•ผ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”!

AOL์˜ ์‚ฌ์ดํŠธ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•œ ๋ฌธ์ œ๋Š” ๊ฒฝ์Ÿ ์กฐ๊ฑด์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ—ค๋“œ์—์„œ jQuery๋ฅผ ๋น„๋™๊ธฐ์‹์œผ๋กœ ๋กœ๋“œํ•œ ๋‹ค์Œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ ๋‚ด๋ถ€์—์„œ ๋น„๋™๊ธฐ์‹์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ฌธ์„œ์˜ ์ค‘๊ฐ„์— jQuery ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜๋งŒ์˜ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋” ๊ณผํ•™ ํ”„๋กœ์ ํŠธ(Boot.getJS)๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๋Š” ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์ˆœ์„œ์— ๊ด€๊ณ„์—†์ด ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ค€๋น„ ๋˜๋Š” ๋กœ๋“œ ์ง€์—ฐ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ์บ์‹ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์˜ ์‚ฌ๋žŒ๋“ค์ด ๋Œ€๋ถ€๋ถ„์˜ ์•„์ด๋””์–ด๋ฅผ ๋นŒ๋ ธ์Šต๋‹ˆ๋‹ค(๋„๋‚œ). ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. :)

๋ฒค์น˜๋งˆํฌ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์˜ ์„ฑ๋Šฅ, ๊ตฌ๋ฌธ ๋ฐ ๋™์ž‘์˜ ์ฐจ์ด์ ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€๋ฅผ ๊ณต์œ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์„ธ์š”.

http://artzstudio.com/files/Boot/test/benchmarks/script.html

๋‹ค์–‘ํ•œ ๋กœ๋”๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณด๋ ค๋ฉด ์บ์‹œ๋ฅผ ์ง€์šฐ๊ณ  ๋„คํŠธ์›Œํฌ ์š”์ฒญ๊ณผ ๋งˆ์ง€๋ง‰ ์‹œ๊ฐ„ ๋ฐ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ˆœ์„œ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

Dave(@artzstudio), ์ƒ๊ฐ๊ณผ ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€ ๋งํฌ๋ฅผ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์งˆ๋ฌธ: '<script> tag in head' ํŽ˜์ด์ง€์— LABjs๋ฅผ ๋กœ๋“œํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ž˜๋ชป๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@artzstudio ๋„ ์ด์ „ ๋ฒ„์ „์˜ LABjs๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜๋„์ ์ธ๊ฐ€์š”? ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ?

@aaronpeters AOL์—๋Š” ํ—ค๋“œ์— ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š” Omniture Ad ์ฝ”๋“œ(๋ฐ ๊ทธ ์ด์ƒ)์™€ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ๋กœ๋” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ณณ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋งจ ์•„๋ž˜์— ์žˆ์„ ๋•Œ ์ผ๋ถ€ ์œ„์ ฏ์— FOUC ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ข…์† ํ•ญ๋ชฉ(์˜ˆ: jQuery)์ด ๋นจ๋ฆฌ ๋กœ๋“œ๋ ์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค.

๊ณ ์˜๊ฐ€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ…Œ์ŠคํŠธ๋Š” ๋ช‡ ๋‹ฌ ์ „์ž…๋‹ˆ๋‹ค. ๊ธฐํšŒ๊ฐ€ ๋˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ(์ด ๋‚ด์šฉ์ด ๋‹ค์†Œ ํฅ๋ฏธ๋กญ๊ฑฐ๋‚˜ ๊ด€๋ จ์ด ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.) Webpagetest.org์—์„œ ๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ @artzstudio ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€ ์ค‘ ์ผ๋ถ€๋ฅผ ๋กœ๋“œํ•  ๋•Œ IE8์—์„œ ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ: http://www.webpagetest.org/result/110810_C7_752b756180e132f50a3ef065e9e059ca/
์˜ˆํ”„๋…ธํ”„: http://www.webpagetest.org/result/110810_8S_a53f4ed2e16179c328fc57c572e71076/
LABjs: http://www.webpagetest.org/result/110810_ZV_1ece92044799e52ed5199aed6b407133/
RequireJS: http://www.webpagetest.org/result/110810_Z3_a1537e41a0b0570286151859973d0cfa/

Yepnope์™€ LABjs ๋น„๊ต ๋™์˜์ƒ: http://www.webpagetest.org/video/view.php?id=110810_074cb94c1b04a7ac9bd6538ec3fdd8d3c07f842d

๋ช‡ ๊ฐ€์ง€ ์ฐธ๊ณ  ์‚ฌํ•ญ:

  • ์„œ๋ฒ„์—์„œ Gzip์ด ๊บผ์ ธ ์žˆ์œผ๋ฏ€๋กœ RequireJS์˜ ๋” ํฐ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋ฐฉ์‹
  • ์ด์ „์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ํŽ˜์ด์ง€๋Š” HEAD์— LABjs๋ฅผ ๋กœ๋“œํ•˜๋ฉฐ(์ด์น˜์— ๋งž์ง€ ์•Š์Œ) ๋ฌผ๋ก  ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

์ด ๋‘ ๊ฐ€์ง€ ์ด์œ ๋กœ ์ €๋Š” Yepnope์™€ LABjs๋งŒ ๋ณด์—ฌ์ฃผ๋Š” ๋น„๋””์˜ค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํฅ๋ฏธ๋กœ์šด ์ ์€ Start Render ์‹œ๊ฐ„์ด LABjs์— ํ›จ์”ฌ ๋” ์ข‹๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ ๊ฒ๋‹ˆ๊นŒ? ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋๋งบ๋Š” ๋ง: ๋‚˜๋Š” Yepnope๋‚˜ ๊ทธ์™€ ๋น„์Šทํ•œ ๊ฒƒ๋ณด๋‹ค LABjs๋ฅผ ์„ ํ˜ธํ•  ๋ชฉ์ ์œผ๋กœ ์ด ๊ธ€์„ ๊ฒŒ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๋ฐ์ดํ„ฐ ๊ณต์œ ...

์•„ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. <script> ํ…Œ์ŠคํŠธ์—์„œ LABjs์— ๋Œ€ํ•ด ๋ง์”€ํ•˜์‹  ๋‚ด์šฉ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. LABjs๋กœ์˜ ์—…๊ทธ๋ ˆ์ด๋“œ์™€ ํ•จ๊ป˜ ์ง€๊ธˆ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@artzstudio--

๋”ฐ๋ผ์„œ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜๋งŒ์˜ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋” ๊ณผํ•™ ํ”„๋กœ์ ํŠธ(Boot.getJS)๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๋Š” ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์ˆœ์„œ์— ๊ด€๊ณ„์—†์ด ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ์ด๊ฒƒ์ด LABjs๊ฐ€ _์ •ํ™•ํžˆ_ ๋ฌด์—‡์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๊ณ  ๋งค์šฐ ์ž˜ ์ž‘๋™ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ๊ณ„์…จ์Šต๋‹ˆ๊นŒ? (๋‚ด๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ๋งํ•œ๋‹ค๋ฉด)? ๋‚ด ๋ง์€, ๋‹ค๋ฅธ API๋ฅผ ์›ํ–ˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ๊ธฐ๋Šฅ์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?


์–ด์จŒ๋“  LABjs์— ๋Œ€ํ•ด ์ž๋ž‘ํ•˜๊ณ  ์‹ถ์€ ๋งŒํผ ์ด ์Šค๋ ˆ๋“œ๋ฅผ "๋ด๋ผ, ๋‚ด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ X์—์„œ ๋” ๋‚ซ๋‹ค"๋Š” ํ˜•์‹์˜ ํ† ๋ก ์œผ๋กœ ์ˆ˜๋ ์— ๋น ์ง€๋Š” ๊ฒƒ์€ ํšจ๊ณผ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ† ๋ก ์€ ์œ ์šฉํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ ๋กœ๋” ๊ธฐ์ˆ ์€ ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ์•„์ด๋””์–ด๋กœ ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฉ‹์ง„ API๋ฅผ ๊ทธ ์œ„์— ๋ ˆ์ด์–ด๋งํ•˜๋“ , ๋˜๋Š” ์–ด๋–ค ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ถฉ์กฑํ•˜๋“  ๊ธฐ์ˆ ์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์š”์ฆ˜์—๋Š” 50๊ฐœ์˜ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์‹ค์ œ๋กœ ๊ทธ๋“ค ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ๊ธฐ์ˆ  ์ธก๋ฉด์—์„œ ๋‹ค๋ฅธ ๊ฒƒ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋‹จ์ง€ ๋‹ค๋ฅธ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ API๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ๋Š” ๋‹ค์†Œ ๊ด€๋ จ์ด ์—†๋Š” ํ† ๋ก ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ง‘์ค‘ํ•ด์•ผ ํ•  ๊ฒƒ์€ ํ˜„์žฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งˆํฌ์—…์—์„œ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ํŽ˜์ด์ง€ ๋กœ๋“œ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๊ทธ๊ฒƒ์ด ์ ˆ๋Œ€์ ์œผ๋กœ ์‚ฌ์‹ค์ด๋ผ๋Š” ๋‚˜์˜ ์˜ค๋žœ ์ „์ œ์ด์ง€๋งŒ, ๊ทธ ์ „์ œ๋Š” ์ด ์Šค๋ ˆ๋“œ์—์„œ ์˜๋ฌธ์„ ์ œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž‘์—… #1์€ ๊ทธ ์งˆ๋ฌธ์— ๋‹ตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ๋‹จ์ˆœํžˆ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ๋ณด๋‹ค ๋‚ซ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋œ๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ์ด ๋ชจ๋“  ๋ฏธ์นœ ์ง“์„ ๋ฉˆ์ถ”๊ณ  ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ;-)

์ž‘์—… #2๋Š” ์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ฒฐ์ด ํ•ญ์ƒ ๋ณ‘๋ ฌ ๋กœ๋“œ๋ณด๋‹ค ๋‚˜์€์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋‚ด ์ „์ œ(๋ฐ ๋‚ด ํ…Œ์ŠคํŠธ)์— ๋”ฐ๋ฅด๋ฉด ๋ชจ๋“  ํŒŒ์ผ์„ ํ•˜๋‚˜๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ ํฐ ํŒŒ์ผ์„ 2-3๊ฐœ์˜ ๋Œ€๋žต ๋™์ผํ•œ ์กฐ๊ฐ์œผ๋กœ ์ฒญํฌํ•˜๊ณ  ํ•ด๋‹น ์ฒญํฌ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๊ทธ ์ด๋ก ๋„ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

script-concat์ด ํ•ญ์ƒ ์ตœ๊ณ ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋œ๋‹ค๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์ดํŠธ๊ฐ€ ๋‘˜ ์ด์ƒ์˜ ์œ„์น˜์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•œ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•  ๋•Œ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ์—ฌ์ „ํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค(Google CDN์˜ jquery, google์˜ google analytics, facebook/twitter/g+ ๋ฒ„ํŠผ , ๋“ฑ). ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ž‘์—… #3์œผ๋กœ concat์ด ํ›จ์”ฌ ๋” ๋‚˜์€์ง€ ๊ฒฐ์ •ํ•˜์—ฌ ๋ชจ๋“  ํŒŒ์ผ์˜ ์ž์ฒด ๋ณต์‚ฌ๋ณธ์„ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ์ž์‹ ์˜ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Kyle, ์ œ ์˜ˆ์ œ์˜ ์†Œ์Šค๋ฅผ ๋ณด๊ณ  ์–ด๋–ป๊ฒŒ LabJS๋ฅผ ๊ณ„์ธกํ•˜์—ฌ ํŽ˜์ด์ง€์˜ ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ(์ฒด์ธ ์™ธ๋ถ€์—์„œ๋„) ์‹คํ–‰ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? API๋ฅผ ์ž˜๋ชป ์ฝ์—ˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(Paul์ด ๋งํ–ˆ๋“ฏ์ด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค, %-).

2011๋…„ 8์›” 10์ผ ์˜ค์ „ 9์‹œ 9๋ถ„์— [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@artzstudio--

๋”ฐ๋ผ์„œ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜๋งŒ์˜ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋” ๊ณผํ•™ ํ”„๋กœ์ ํŠธ(Boot.getJS)๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๋Š” ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์ˆœ์„œ์— ๊ด€๊ณ„์—†์ด ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ์ด๊ฒƒ์ด LABjs๊ฐ€ _์ •ํ™•ํžˆ_ ๋ฌด์—‡์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๊ณ  ๋งค์šฐ ์ž˜ ์ž‘๋™ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ๊ณ„์…จ์Šต๋‹ˆ๊นŒ? (๋‚ด๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ๋งํ•œ๋‹ค๋ฉด)? ๋‚ด ๋ง์€, ๋‹ค๋ฅธ API๋ฅผ ์›ํ–ˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ๊ธฐ๋Šฅ์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?


์–ด์จŒ๋“  LABjs์— ๋Œ€ํ•ด ์ž๋ž‘ํ•˜๊ณ  ์‹ถ์€ ๋งŒํผ ์ด ์Šค๋ ˆ๋“œ๋ฅผ "๋ด๋ผ, ๋‚ด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ X์—์„œ ๋” ๋‚ซ๋‹ค"๋Š” ํ˜•์‹์˜ ํ† ๋ก ์œผ๋กœ ์ˆ˜๋ ์— ๋น ์ง€๋Š” ๊ฒƒ์€ ํšจ๊ณผ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ† ๋ก ์€ ์œ ์šฉํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ ๋กœ๋” ๊ธฐ์ˆ ์€ ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ์•„์ด๋””์–ด๋กœ ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฉ‹์ง„ API๋ฅผ ๊ทธ ์œ„์— ๋ ˆ์ด์–ด๋งํ•˜๋“ , ๋˜๋Š” ์–ด๋–ค ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ถฉ์กฑํ•˜๋“  ๊ธฐ์ˆ ์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์š”์ฆ˜์—๋Š” 50๊ฐœ์˜ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์‹ค์ œ๋กœ ๊ทธ๋“ค ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ๊ธฐ์ˆ  ์ธก๋ฉด์—์„œ ๋‹ค๋ฅธ ๊ฒƒ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋‹จ์ง€ ๋‹ค๋ฅธ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ API๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ๋Š” ๋‹ค์†Œ ๊ด€๋ จ์ด ์—†๋Š” ํ† ๋ก ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ง‘์ค‘ํ•ด์•ผ ํ•  ๊ฒƒ์€ ํ˜„์žฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งˆํฌ์—…์—์„œ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ํŽ˜์ด์ง€ ๋กœ๋“œ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๊ทธ๊ฒƒ์ด ์ ˆ๋Œ€์ ์œผ๋กœ ์‚ฌ์‹ค์ด๋ผ๋Š” ๋‚˜์˜ ์˜ค๋žœ ์ „์ œ์ด์ง€๋งŒ, ๊ทธ ์ „์ œ๋Š” ์ด ์Šค๋ ˆ๋“œ์—์„œ ์˜๋ฌธ์„ ์ œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž‘์—… #1์€ ๊ทธ ์งˆ๋ฌธ์— ๋‹ตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ๋‹จ์ˆœํžˆ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ๋ณด๋‹ค ๋‚ซ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋œ๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ์ด ๋ชจ๋“  ๋ฏธ์นœ ์ง“์„ ๋ฉˆ์ถ”๊ณ  ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ;-)

์ž‘์—… #2๋Š” ์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ฒฐ์ด ํ•ญ์ƒ ๋ณ‘๋ ฌ ๋กœ๋“œ๋ณด๋‹ค ๋‚˜์€์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋‚ด ์ „์ œ(๋ฐ ๋‚ด ํ…Œ์ŠคํŠธ)์— ๋”ฐ๋ฅด๋ฉด ๋ชจ๋“  ํŒŒ์ผ์„ ํ•˜๋‚˜๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ ํฐ ํŒŒ์ผ์„ 2-3๊ฐœ์˜ ๋Œ€๋žต ๋™์ผํ•œ ์กฐ๊ฐ์œผ๋กœ ์ฒญํฌํ•˜๊ณ  ํ•ด๋‹น ์ฒญํฌ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๊ทธ ์ด๋ก ๋„ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

script-concat์ด ํ•ญ์ƒ ์ตœ๊ณ ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋œ๋‹ค๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์ดํŠธ๊ฐ€ ๋‘˜ ์ด์ƒ์˜ ์œ„์น˜์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•œ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•  ๋•Œ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ์—ฌ์ „ํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค(Google CDN์˜ jquery, google์˜ google analytics, facebook/twitter/g+ ๋ฒ„ํŠผ , ๋“ฑ). ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ž‘์—… #3์œผ๋กœ concat์ด ํ›จ์”ฌ ๋” ๋‚˜์€์ง€ ๊ฒฐ์ •ํ•˜์—ฌ ๋ชจ๋“  ํŒŒ์ผ์˜ ์ž์ฒด ๋ณต์‚ฌ๋ณธ์„ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ์ž์‹ ์˜ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/paulirish/html5-boilerplate/issues/28#issuecomment -1772315

๋ฌผ๋ฆฌํ•™์—์„œ๋Š” concat์ด ์ตœ๊ณ ๋ผ๊ณ  ์ƒ๊ฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ƒˆ๋กœ์šด HTTP ์—ฐ๊ฒฐ์€ CDN์˜ ๋” ๋‚˜์œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋˜ ๋‹ค๋ฅธ ๋Š๋ฆฐ ์‹œ์ž‘ + 100ms ์„ธ๊ธˆ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์„œ์˜ ์ง„์‹ค์€ ๋ฌธ์„œ๊ฐ€ ๋งค์šฐ ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ—ค๋“œ์— ํ•˜๋‚˜์˜ BFJS ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๋ฉด ๋ชจ๋“ˆ ์ดˆ๊ธฐํ™”๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์— ๋กœ๋“œํ•˜๋ฉด ์„ฑ๊ฐ€์‹  FOUC๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์— ๋ชจ๋ฐ”์ผ ์˜ํ–ฅ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. http://www.yuiblog.com/blog/2010/06/28/mobile-browser-cache-limits/

์ด๊ฒƒ์ด Souders์˜ "ํŽ˜์ด๋กœ๋“œ ๋ถ„ํ• " ๊ทœ์น™(http://oreilly.com/server-administration/excerpts/9780596522315/splitting-the-initial-payload.html) ๋’ค์— ์žˆ๋Š” ๋™๊ธฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์†๋„๋„ ๋” ๋นจ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ ์ด๊ฒƒ์ด ์š”์•ฝ๋˜๋Š” ๊ฒƒ์€ "๊ทธ๊ฒƒ์— ๋‹ฌ๋ ค์žˆ๋‹ค"๋Š” ๋Œ€๋‹ต์œผ๋กœ, ์šฐ๋ฆฌ ๋ชจ๋‘๋ฅผ ์ฆ๊ฒ๊ฒŒ ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ์ด ๋ฌธ์ œ๋ฅผ ํฅ๋ฏธ๋กญ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

getJS ํ˜ธ์ถœ์ด ํ์— ๋Œ€๊ธฐ๋˜๊ณ  ์ •ํ•ด์ง„ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์ฃผ๊ธฐ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ๋†€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ชจ๋“ˆ ์ข…์†์„ฑ ์ˆ˜์ค€์—์„œ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๋กœ๋“œํ•˜๋Š” ๋Œ€์‹  RequireJS ์ข…์†์„ฑ ์—ฐ๊ฒฐ). ๋ชจ๋“  ๊ฒƒ์ด ํ”„๋ก ํŠธ ์—”๋“œ์—์„œ ์ฆ‰์„์—์„œ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ์ง€์ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๊ณง ๋ฌด์˜๋ฏธํ•ด์งˆ ๊ฒƒ์ด์ง€๋งŒ ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํฅ๋ฏธ๋กœ์šด ๊ณผํ•™ ์‹คํ—˜์ž…๋‹ˆ๋‹ค.

@getify : ์ด ์‹œ์ ์—์„œ ํผ๋ ˆ์ด๋“œ์— ๋Œ€ํ•ด ๊ฑฐ์˜ ์˜ค์คŒ์„ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค .

์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ๋‹จ์ˆœํžˆ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ๋ณด๋‹ค ๋‚ซ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋œ๋‹ค๋ฉด,
๊ทธ๋Ÿฌ๋ฉด ์šฐ๋ฆฌ๋Š” ์ด ๋ชจ๋“  ๊ด‘๊ธฐ๋ฅผ ๋ฉˆ์ถ”๊ณ  ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ;-)

๋‚˜๋Š” ๋ฑ€ ๊ธฐ๋ฆ„์— ๋Œ€ํ•ด ๋งŽ์€ ๊ฒƒ์„ ๋งํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐ๋ชจ๋„ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

http://jashkenas.s3.amazonaws.com/misc/snake-oil/labjs.html

http://jashkenas.s3.amazonaws.com/misc/snake-oil/vanilla.html

100k์˜ ํ…์ŠคํŠธ, 10๊ฐœ์˜ ์ด๋ฏธ์ง€, 171k์˜ JavaScript๊ฐ€ ์žˆ๋Š” ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ๋ฐ”๋‹๋ผ ๋ฒ„์ „์€ jQuery, jQuery-UI, Underscore, Backbone์ด ํฌํ•จ๋œ ๋‹จ์ผ ์ถ•์†Œ ํŒŒ์ผ๊ณผ ๋กœ๋“œ ์‹œ๊ฐ„ ๊ฒฐ๊ณผ๋ฅผ ์ž‘์„ฑํ•˜๋Š” timer.js ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. LABjs ๋ฒ„์ „์€ LABjs๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 5๊ฐœ์˜ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ถ•์†Œ๋œ JavaScript ํŒŒ์ผ์„ ๊ฐ๊ฐ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

LAB ๋ฒ„์ „์—๋Š” ์ด์ ์ด ์—†์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ถ”๊ฐ€ HTTP ์š”์ฒญ์ด ๋กœ๋“œ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ค๊ณ  ์ด๋ฏธ์ง€์™€ ๊ฐ™์€ ํŽ˜์ด์ง€์˜ ๋‹ค๋ฅธ ์ž์‚ฐ๊ณผ ๊ฒฝ์Ÿํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ชจ๋“  ๊ฒƒ์€ ์ด์ „์— ์—ฌ๋Ÿฌ ๋ฒˆ ์–ธ๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค...

LABjs

Vanilla

๋‚˜๋Š” ๋‹น์‹ ์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์กฐ๊ธˆ์”ฉ ๋กœ๋”ฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋ฐ˜๋ก ์„ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ... ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ๊ธฐ์ˆ ๊ณผ ์™„์ „ํžˆ ์ง๊ตํ•˜๋ฏ€๋กœ ๋…ผ์˜์—์„œ ์ œ์™ธํ•˜์‹ญ์‹œ์˜ค.

๋ถ€๋””, ๊ด‘๊ธฐ๋ฅผ ๋ฉˆ์ถ”์‹ญ์‹œ์˜ค.

@jashkenas ์ „์ฒด, 100% ์Šน์ธ. ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋Š” ์˜ค๋ฒ„ํ—ค๋“œ, ๋ณต์žก์„ฑ ๋ฐ ์‹คํŒจ ์ง€์ ์„ ์ถ”๊ฐ€ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ ์„œ๋ฒ„ ์—ฐ๊ฒฐ ํŒŒ์ผ์€ ์ˆœ์ˆ˜ํ•œ ์ „์†ก ์‹œ๊ฐ„๊ณผ JavaScript ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ํšจ์œจ์„ฑ ๋ฉด์—์„œ ๋ชจ๋‘ ๋น ๋ฅด๊ฒŒ ๋กœ๋“œ๋˜๋ฉฐ, ๋ณด๋„ˆ์Šค๋กœ ํŒŒ์ผ์ด ํ•˜๋‚˜๋ฟ์ธ ๊ฒฝ์šฐ gzipping์ด ๋” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

LABjs ๋ฒ„์ „์€ _๋•Œ๋•Œ๋กœ_ ๋‚ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋” ๋น ๋ฅด๊ฒŒ ๋กœ๋“œ๋˜์ง€๋งŒ(๋ฐ”๋‹๋ผ ํŽ˜์ด์ง€์™€ ๋น„๊ตํ•˜์—ฌ) ์ผ๊ด€๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ onload ๊ฐ€ ํ•ญ์ƒ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฏ€๋กœ... ์ด์ƒํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

์˜ˆ, gzipping์€ ๋” ์ ์€ HTTP ์š”์ฒญ์œผ๋กœ ๋” ๋งŽ์€ ์ „์ฒด ์Šน๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๋…๋‹จ์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ ์ „์ฒด ์•ฑ์— ๋Œ€ํ•ด _๋‹จ์ผ_ JS ํŒŒ์ผ์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. defer ๊ฐ€ ํฌํ•จ๋œ ๋‘ ๊ฐœ ๋˜๋Š” ์„ธ ๊ฐœ๋Š” ๋‚˜์ค‘์— ๋กœ๋“œํ•  ๋•Œ์™€ ๊ฐ™์ด ์„ธ๋ถ„ํ™”๋œ ์บ์‹ฑ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

Google Page Speed โ€‹โ€‹ํŒ€์˜ ์ผ๋ถ€ ์—ฐ๊ตฌ:

http://pagespeed-velocity2011.appspot.com/#8 ์Šฌ๋ผ์ด๋“œ 8-14 ์ฐธ์กฐ


๋‚˜๋Š” ์—ฌ์ „ํžˆ ์Šคํฌ๋ฆฝํŠธ @defer ์†์„ฑ์— ์—ด๊ด‘ํ•˜๋ฉฐ ์ž์‹ ์˜ ๋ณ€ํ˜•์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์— ๋งŽ์€ ์‹œ๊ฐ„/์ผ์„ ํ• ์• ํ•  ๊ณ„ํš์ด ์—†๋‹ค๋ฉด ์ด๊ฒƒ์ด ํ˜„๋ช…ํ•œ ๊ธฐ๋ณธ ๊ธฐ๋ณธ๊ฐ’์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@miketaylr : ์˜ˆ, ์ „์ฒด ๋Š๋‚Œ์„ ์–ป์œผ๋ ค๋ฉด ๊ฐ ํŽ˜์ด์ง€๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ shift-refreshํ•˜์‹ญ์‹œ์˜ค. S3 ๋Œ€๊ธฐ ์‹œ๊ฐ„๊ณผ ์ด๋ฏธ์ง€ ๋กœ๋“œ๋Š” ์‹ค์ œ ์•ฑ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜์—ฌ ์ƒํ™ฉ์„ ์•ฝ๊ฐ„ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์Œ labjs _always_๋Š” shift-refresh๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์š”์†Œ๊ฐ€ ์บ์‹œ๋œ ๊ฒฝ์šฐ์—๋„ ๋‚ด ๋ธŒ๋ผ์šฐ์ €(Safari 5.1)์—์„œ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๊ณ  ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์—ฐ๊ฒฐ๋œ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ณด๋‹ค ๋Š๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค(YUI, requireJS)์€ ์—ฐ๊ฒฐ๋œ ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์™€ ์š”์ฒญ ์‹œ ์—ฐ๊ฒฐํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค(https://github.com/rgrove/combohandler).

์ด ํ† ๋ก ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋Š” ํŠนํžˆ ์‚ฌ์šฉ์ž ์ƒํ˜ธ ์ž‘์šฉ ํ›„ ์š”์ฒญ ์‹œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "๋กœ๊ทธ์ธ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•  ๋•Œ ๋Œ€ํ™” ์ƒ์ž ๋ฐ ์–‘์‹ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋’ค์˜ ๋…ผ๋ฆฌ๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

@jashkenas ์™€ @madrobby ๊ฐ€ ์ผ์„ ์ง€๋‚˜์น˜๊ฒŒ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ตํ™œํ•œ ์˜์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
Steve ๋Š” ๋ณ‘๋ ฌ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋‹ค์–‘ํ•œ ์ฐจ๋‹จ ๋ฌธ์ œ์™€ ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ด์ ์ด

๋‚ด ์›๋ž˜ ๊ฒŒ์‹œ๋ฌผ์— ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ. ๋‚˜๋Š” (jdalton๊ณผ ํ•จ๊ป˜) ๊ณ ๋„๋กœ ํ…Œ์ŠคํŠธ๋˜๊ณ  ํŠน๋ณ„ํ•œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•œ ํŠน์ • ํ™˜๊ฒฝ์—์„œ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์˜ ์ด์ ์ด ๊ฝค ์žˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ๊ธฐ๋ณธ๊ฐ’์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@jdalton์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํฌ๊ธฐ์— ๋งž๋Š” ๋กœ๋”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์‹ค์ œ ํ•„์š”์™€ ํ”„๋กœ์ ํŠธ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” yepnope ๋˜๋Š” LabJS์™€ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ๊ฒƒ์ด ๊ดœ์ฐฎ๊ณ  ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” RequireJS๊ฐ€ ์‹ ์˜ ์„ ๋ฌผ์ž…๋‹ˆ๋‹ค. ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ๊ฐ•์ œ๋กœ ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋กœ ์‰ฝ๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์•„์ด๋””์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค... ๊ทธ๋ž˜์„œ ๋ชฉ์š•๋ฌผ๊ณผ ํ•จ๊ป˜ ์•„๊ธฐ๋ฅผ ๊ทธ๋ƒฅ ๋ฒ„๋ฆฌ์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„.

๋˜ํ•œ @getify ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ์‹ค์ œ๋กœ ๋™์ผํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ์ฒ™ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ณด๊ฐ€ ์—†๋Š” ์ง„์ˆ ์ž…๋‹ˆ๋‹ค.

๊ฐ€์น˜ ์žˆ๋Š” ์ผ์„ ์œ„ํ•ด...
์ด๊ฒƒ

var script = document.createElement('script')
script.src = 'foo.js'
document.getElementsByTagName('head')[0].appendChild(script)

์ด๊ฒƒ๋ณด๋‹ค ๋‚ซ๋‹ค

<script src="foo.js"></script>

์ฐจ๋‹จ๋˜์ง€ ์•Š๋Š” ์ฃผ๋œ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ›„์† ์ด๋ฏธ์ง€ ๋ฐ CSS ํŒŒ์ผ์€ ํ•ด๋‹น ํŒŒ์ผ์ด ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ „์ž๋Š” ๋น„๋™๊ธฐ์‹ โ€” ์ด๊ฒƒ์€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

re: "๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ์‹ค์ œ๋กœ ๋™์ผํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ์ฒ™ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ณด๊ฐ€ ์—†๋Š” ์ง„์ˆ ์ž…๋‹ˆ๋‹ค."

์œ„์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™„๋ฒฝํ•˜๊ฒŒ ๊ณต์ •ํ•˜๊ธฐ ์œ„ํ•ด appendChild ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค... :D

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ AssetRace์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/SlexAxton/AssetRace/blob/master/asyncconcat.html

๊ทธ๊ฒƒ์€ onload ๋ฐœ์‚ฌ๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ํ•˜๋ฏ€๋กœ ์•ฝ๊ฐ„์˜ ์ธ์ง€๋œ ์ด์ ์ด _๊ฐ€๋Šฅ_ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ข…๋ฃŒ ์‹œ๊ฐ„์€ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค ...

@ded : ์—ฌ๊ธฐ์„œ <head> ๋ฌด๋Šฅํ•œ ๋Œ€๊ทœ๋ชจ ์ฐจ๋‹จ <script> ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค ... ์šฐ๋ฆฌ๋Š” defer ๋˜๋Š” async ๊ฐ€ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. <body> ๋์— ๋กœ๋“œ๋˜๋ฉฐ ์ฐจ๋‹จํ•  ํ•ญ๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค.

@jaubourg--

๋˜ํ•œ @getify ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ์‹ค์ œ๋กœ ๋™์ผํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ์ฒ™ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ณด๊ฐ€ ์—†๋Š” ์ง„์ˆ ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์–ป๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ž˜๋ชป๋œ ํ‘œํ˜„์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ๋Œ€๋ถ€๋ถ„์˜ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋Š” ์ตœ๊ณ ์˜ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ์ธก๋ฉด์—์„œ ๋‚ด๊ฐ€ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”(๊ทธ๋ฆฌ๊ณ  LABjs๊ฐ€ ํ˜„์žฌ ํ•˜๊ณ  ์žˆ๋Š”) ์ผ์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ œ ์š”์ ์€ ๊ทธ๋“ค ๋ชจ๋‘๊ฐ€ ์ตœ๊ณ ์˜ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๊ธฐ์ˆ ์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์—๋Š” ์—ฌ์ „ํžˆ ์œ ํ•œํ•œ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” LABjs๊ฐ€ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋งˆ๋ฒ•์˜ ์€์ƒ‰ ์ด์•Œ์„ ์‚ฌ์šฉํ•˜๋Š” ๋กœ๋”๊ฐ€ ์—†๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋ฌด์—‡์„ ํ•˜๋“ , ์–ด๋–ป๊ฒŒ ์ˆซ์ž๋ฅผ ๋งŒ์ง€์ž‘๊ฑฐ๋ฆฌ๋“ , ๋น›์„ ๋น›์˜ ์†๋„๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ๊ฐˆ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์— ์žˆ๋Š” ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ๋…ผ์Ÿํ•˜๋Š” ๊ฒƒ("์ด๋ด, ๋‚ด ๋ฉ‹์ง€๊ณ  ๋” ๋‚˜์€ API๋ฅผ ๋ด"๋ผ๊ณ  ๋งํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ)์€ ๋ฌด์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์˜ ์ตœ๊ณ ์˜ ๊ธฐ์ˆ ์€ ์•Œ๋ ค์ง„ ์œ ํ•œ ์ˆ˜๋Ÿ‰์ž…๋‹ˆ๋‹ค(๋งŽ์€ ๋กœ๋”๊ฐ€ ๋ฌด์ฑ…์ž„ํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„). ์šฐ๋ฆฌ๋Š” ๋” ๋‚˜์€ ๊ธฐ์ˆ ์„ ์ถ”์ง„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ(์ €๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค), ๋ˆ„๊ฐ€ ๋กœ๋”์— ๋” ๋‚˜์€ API๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ† ๋ก ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ ๋ชฉํ‘œ๋ฅผ ์œ„ํ•ด ์•„๋ฌด ์†Œ์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค.


์ด ์Šค๋ ˆ๋“œ๋Š” ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ์ข‹์€์ง€(์ง€์—ฐ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด) ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์–ป๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ, ์šฐ๋ฆฌ๋Š” concat์ด ์‹ค์ œ๋กœ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์˜ ๋งŒ๋Šฅ์ธ์ง€ ์•Œ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(์ด ์Šค๋ ˆ๋“œ์˜ ๊ฒฝ์šฐ) ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ ๋˜ํ•œ ๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (์˜จ๋””๋งจ๋“œ/์ง€์—ฐ ๋กœ๋”ฉ๊ณผ ๊ฐ™์€) ๋งˆํฌ์—… ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋Š” ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๊ทธ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์‹œ์ ์—์„œ ์ฃผ์–ด์ง„ ๊ฒƒ์ด๋ฏ€๋กœ ๊ทธ ์‚ฌ์‹ค์„ ๋‹ค์‹œ ํ™•๋ฆฝํ•˜๋ ค๋Š” ์‹œ๋„๋Š” ๋ฌด์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

NO U

๋กœ๋“œ ๋ ˆ์ด์ง€!

loaders make me rage

์—ฌ๊ธฐ์—์„œ ์›๋ณธ ๊ฒŒ์‹œ๋ฌผ์„ ๋ด…๋‹ˆ๋‹ค.

๋˜ํ•œ, ๋งŒํ™” ํŽ˜๋‹ˆ์Šค์— ๊ธฐ๋ถ„์ด ์ƒํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ/์‚ฌ๋žŒ: ์ธํ„ฐ๋„ท์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์—ฌ๊ธฐ์—์„œ ์—ฌํ–‰ ์„

์ข‹์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์š”์ ์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด 3๊ฐœ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์ˆ˜๋™ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ(๊ธฐ์ค€์„ ์œผ๋กœ):

http://labjs.com/dev/test_suite/test-script-tags.php

DOMContentLoaded(์ผ๋ช… "DOM ์ค€๋น„")๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ๋Šฆ๊ฒŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚˜์œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŽ˜์ด์ง€์˜ ์‹ค์ œ ๋กœ๋“œ ์‹œ๊ฐ„์€ ์ดํ›„ ํ…Œ์ŠคํŠธ์™€ ๊ฐ™์„ ์ˆ˜ ์žˆ์ง€๋งŒ DOM ์ค€๋น„๊ฐ€ ์ฐจ๋‹จ๋˜๋ฉด ํŽ˜์ด์ง€์˜ ์ธ์‹ ๋กœ๋“œ ์‹œ๊ฐ„์€ ํ•ญ์ƒ ํ›จ์”ฌ ๋” ๋Š๋ ค์ง‘๋‹ˆ๋‹ค(๋งŽ์€ ์‚ฌ์ดํŠธ์—์„œ ํด๋ฆญ ๋™์ž‘์„ ์ฒจ๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด DOM ์ค€๋น„๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ ์— JS ๊ธฐ๋ฐ˜ ๊ฐœ์„  ์‚ฌํ•ญ ์ ์šฉ ๋“ฑ).

์ด์ œ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์— defer ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

http://labjs.com/dev/test_suite/test-script-defer-tags.php

์ข‹์Šต๋‹ˆ๋‹ค. DOMContentLoaded ์ง€์—ฐ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ์ง€๋งŒ ์ด์ œ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ ๋ธ”๋ก์€ defer ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰์‹œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. BTW, ์ด๊ฒƒ์€ ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์‚ฌ์–‘์— ๊ตฌ์ฒด์ ์œผ๋กœ ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

http://labjs.com/dev/test_suite/test-LABjs.php

LABjs ํ…Œ์ŠคํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ defer ํ…Œ์ŠคํŠธ์™€ ๋น„๊ตํ•˜์—ฌ ๋™์ผํ•œ(๋˜๋Š” ๋” ๋‚˜์€) ์„ฑ๋Šฅ ์ˆ˜์น˜๋ฅผ ์–ป์ง€๋งŒ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ์ธ๋ผ์ธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‹คํŒจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €(Chrome 13, FF5 ๋“ฑ)์—์„œ ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค. ์ €์—๊ฒŒ LABjs๋Š” ํ•ญ์ƒ defer ํ…Œ์ŠคํŠธ์™€ ๊ฑฐ์˜ ๊ฐ™๊ฑฐ๋‚˜ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ชจ๋“  ์‹œ๋„์—์„œ LABjs๊ฐ€ defer ํ…Œ์ŠคํŠธ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” ๊ฒƒ์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋ธŒ๋ผ์šฐ์ €(์˜ˆ: FF3.5 ๋˜๋Š” IE7)์—์„œ ํ•ด๋‹น ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ๋„ํ•˜๋ฉด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ๋ณด๋‹ค ๋ˆˆ์— ๋„๊ฒŒ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

LABjs ํ…Œ์ŠคํŠธ๋Š” ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์˜ defer ํ…Œ์ŠคํŠธ์™€ ์œ ์‚ฌํ•œ ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ defer ๋ฅผ defer ALL ์ฝ”๋“œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉด ๊ฑฐ๋ž˜ ์ฐจ๋‹จ๊ธฐ์ž…๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํŒŒ์ผ์„ ํ†ตํ•ด ๋กœ๋“œ๋œ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ). ๋งŽ์€ ์‚ฌ์ดํŠธ๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•œ ๋‹ค์Œ ๋ฐฉ๊ธˆ ๋กœ๋“œํ•œ ์ฝ”๋“œ๋ฅผ ํ™œ์„ฑํ™”/์ดˆ๊ธฐํ™”ํ•˜๋Š” ์ธ๋ผ์ธ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. defer ๋Š” ์ด์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ defer ๋Š” "์ผ๋ฐ˜ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ" ๊ธฐ์ˆ ๋กœ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฐจ์„ ์ฑ…์€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์ž…๋‹ˆ๋‹ค.

@getify

๋งˆ์ดํฌ๋กœ ์ตœ์ ํ™”๊ฐ€ ์ „๋ถ€๋Š” ์•„๋‹™๋‹ˆ๋‹ค... ์˜ˆ, API๋Š” ์ค‘์š”ํ•˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐ๋ณธ ๊ธฐ์ˆ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ œํ•œ์˜ ์ข…๋ฅ˜๋ฅผ ์ž˜ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋งˆ์ดํฌ๋กœ(๋˜๋Š” ๋งคํฌ๋กœ) ์ตœ์ ํ™” ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•ญ์ƒ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ๋งŒ ์ด ์ „๋ถ€๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์ข…์†์„ฑ ๊ด€๋ฆฌ, ์ ์ ˆํ•œ ์ƒŒ๋“œ๋ฐ•์‹ฑ ๋ฐ ์‹ค์ œ์ ์ด๊ณ  ์‹ค์ œ์ ์ธ ๋ชจ๋“ˆ์„ฑ์€ ๊ด€์‹ฌ์ด ์—†๋‹ค๊ณ  ํ•ด์„œ ์”ป์–ด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ญ”์ง€ ๋งž์ถฐ๋ด? ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ์‚ฌ๋žŒ๋“ค์ด ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ ํŽ˜์ด์ง€ ๋กœ๋“œ ์„ฑ๋Šฅ์€ ์ •์  ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ๋‹นํžˆ ์ข‹์€ ์ˆ˜์ค€์—์„œ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ์‚ฝ์ž…์ด ์ž‘์—…์— ์ ํ•ฉํ•œ ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒฐ๋ก ์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„์ฃผ ๋ชป์ƒ๊ธด ํ•ดํ‚น์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์˜๋ฏธ์—์„œ ๋‹น์‹ ์€ ์‹ค์ œ๋กœ ๋” ๋‚˜์€ ๊ธฐ์ˆ ์„ ์š”๊ตฌํ•˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค . ์šฐ๋ฆฌ ์ค‘ ๋ˆ„๊ตฌ๋„ ์•„์ง ์ถ”๋ก ํ•  ์ˆ˜ ์—†๋Š” ์ƒˆ๋กœ์šด ์ข…๋ฅ˜์˜ ๊ฒฝ๊ณ  ์™€ ํ•จ๊ป˜

์ •๋ง ํ™”๋‚˜๋Š” ๊ฒƒ์€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์„ ์œ„ํ•œ ์ ์ ˆํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ API๊ฐ€ ์•„๋‹Œ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ์‚ฝ์ž…์„ ์œ„ํ•ด ๋‹จ์ผ ์ธ์ˆ˜๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์„ ๊ฑฐ๋ถ€ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋ชจ๋“  ๊ฒƒ์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ ์—๋Š” ๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€

๋งˆ์นจ๋‚ด ๋‚ด๊ฐ€ ์ง€์ ์ธ ๋Œ€๋‹ต์„ ํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด(๋˜ ๋‹ค๋ฅธ LabJS ๊ด‘๊ณ ์™€ ๋Œ€์กฐ์ ์œผ๋กœ) ๋‚ด ๋ธ”๋กœ๊ทธ์—์„œ ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์ด ์Šค๋ ˆ๋“œ๋Š” ๊ทธ๋Œ€๋กœ ๋‘๋„๋ก ํ•ฉ์‹œ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@jaubourg --
์ง€๋‚œ ๋ฐค์— ๊ท€ํ•˜์˜ ๊ฒŒ์‹œ๋ฌผ์„ ์ž์„ธํžˆ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ฑฐ๊ธฐ์—์„œ ์ œ์‹œํ•œ ์ข‹์€ ์ƒ๊ฐ์— ๋Œ€ํ•ด ๋Œ€์ฒด๋กœ ๋‹น์‹ ์„ ์นญ์ฐฌํ•˜๊ณ  ์นญ์ฐฌํ•˜๋Š” ์‘๋‹ต์œผ๋กœ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ•  ๊ณ„ํš์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„, ๋‹น์‹ ์ด ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์€ ์ด๋ฏธ W3C ๋ฐ WHATWG์— ๋Œ€ํ•œ ํ† ๋ก  ์Šค๋ ˆ๋“œ์˜ ๊ตฌ์„ฑ์›์— ์˜ํ•ด AT LENGTH๋กœ ํ•ด์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ ํŒŒํ‹ฐ์— ๊ฝค ๋Šฆ์—ˆ์–ด์š”.

์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๋กœ๋” API๋ฅผ ์ง€์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋ช‡ ๋ช… ์žˆ์—ˆ๊ณ  ์™œ ๊ทธ๊ฒƒ์ด ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ด ์•„๋‹ ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋ฐ˜๋ก ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ ๋ชจ๋“  ๊ฒƒ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ์‹ ์ค‘ํ•˜๊ณ  ํ•ฉ๋ฆฌ์ ์ธ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์— ๋‹ต๋ณ€์„ ์ž‘์„ฑํ•  ๊ณ„ํš์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ ๋‹น์‹ ์€ ์—ฌ๊ธฐ์— ๊ฐ€์„œ ๊ทธ๋Ÿฐ ๋†ˆ์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ ํ•ฉ๋ฆฌ์ ์ธ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์ด ์‹œ๊ฐ„ ๋‚ญ๋น„๊ฐ€ ๋  ๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ์ด ๋“ญ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋ถ„๋ช…ํžˆ ๋‚ด๊ฐ€ ๋ฐ”๋ณด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋‹น์‹ ์ด ์ œ๊ธฐํ•˜๋ ค๋Š” ๊ฒƒ๋“ค์„ ๊ณ ๋ คํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ๋กœ๋” ๊ธฐ์ˆ ๊ณผ ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์–‘ ๋ฐ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ ˆ๋Œ€์ ์œผ๋กœ ์ง‘์ฐฉํ•˜๋Š” ์ž‘๋…„์˜ ๋” ์ข‹์€ ๋ถ€๋ถ„์„ ๋ณด๋‚ด์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜, ๋‚œ ๋ฐ”๋ณด์•ผ ๋‚˜๋Š” ๋ถ„๋ช…ํžˆ ์ด์ „์— ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ์ด์™ธ์˜ ๋‹ค๋ฅธ ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.


๋‹น์‹ ์€ ๋ถ„๋ช…ํžˆ ๋‚ด๊ฐ€ _this_ ์Šค๋ ˆ๋“œ๊ฐ€ Paul Irish์™€ Alex Sexton์ด ์ œ๊ธฐํ•œ ํŠน์ • ์งˆ๋ฌธ์— ์ดˆ์ ์„ ๋งž์ถ”๋Š” ๋” ๋‚˜์€ ๋ชฉํ‘œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๋งํ•œ 15๋ฒˆ์„ ๋“ฃ์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. defer ์ถฉ๋ถ„ํžˆ ์ข‹์€๊ฐ€์š”? ์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ฒฐ์ด ๋ณ‘๋ ฌ ๋กœ๋”ฉ๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๊นŒ?

๋” ์ค‘์š”ํ•œ ์งˆ๋ฌธ๋“ค์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ "๋กœ๋”" ๊ธฐ์ˆ ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋กœ๋” ๊ธฐ์ˆ ์ด ๋ฌด์—‡์ธ์ง€ ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค๋ฅธ ๋” ๋‚˜์€ ํฌ๋Ÿผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์€. Ian๊ณผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‹น์‹ ์˜ ๋ง์„ ๋“ฃ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด W3C/WHATWG ๋ชฉ๋ก์—์„œ ์ˆ˜์‹ญ ์‹œ๊ฐ„์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค. ๊ทธ๋“ค์€ ์•„๋งˆ ๋ชจ๋‘ ํ•˜ํ’ˆ์„ ํ•˜๊ณ  "์ด๋ฏธ ํ•ด๋ช…ํ–ˆ์œผ๋‹ˆ ๊ฐ€์„ธ์š”."๋ผ๊ณ  ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@getify : ์–ด๋ฆฌ์„์€ ์ŠคํŠธ๋กœ์šฐ๋งจ ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ ์ˆ˜๋ฅผ ์–ป์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ˆœ์ฐจ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ฐจ๋‹จํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ชจ๋‘ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ "์ง€์—ฐ๋œ" ์Šคํฌ๋ฆฝํŠธ ์ „์— ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ œ ์‚ฌ์ดํŠธ์—์„œ ์–ด๋–ค ์‹์œผ๋กœ๋“  ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ „ ์˜คํ•ด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒฝ์šฐ ... ํ…Œ์ŠคํŠธ๋Š” ํ•ญ์ƒ ๊ทธ ์˜คํ•ด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. 20๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ๋Œ€ 20๊ฐœ์˜ LABjs ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ์— ๋Œ€ํ•œ ๋…ผ์Ÿ์€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ํ•œ ์ ์€ ์ˆ˜์˜ HTTP ์š”์ฒญ์œผ๋กœ JavaScript๋ฅผ ์ง€๋Šฅ์ ์œผ๋กœ ํŠธ๋ฆฌ๋ฐ, ์—ฐ๊ฒฐ, ์ถ•์†Œ, gzipping ๋ฐ ๋กœ๋“œํ•œ ๋‹ค์Œ ์บ์‹ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•œํŽธ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์‹ค์ œ ํŽ˜์ด์ง€์—์„œ ํ›จ์”ฌ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ € ์ง€์›, ์˜ค๋žœ ์‹œ๊ฐ„ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์นœ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” ๊ณผ๊ฑฐ์— ๋ธŒ๋ผ์šฐ์ € ์—…๋ฐ์ดํŠธ ํ›„ ์ด๋ฅผ ์‚ฌ์šฉํ–ˆ๋˜ ๋ชจ๋“  ์‚ฌ์ดํŠธ๋ฅผ ์‹ค์ œ๋กœ ๋ง๊ฐ€๋œจ๋ ธ๋˜ ํ•จ๊ป˜ ํ•ดํ‚น๋œ "๊ธฐ์ˆ "์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์ˆ ์€ ํ‰๊ท ์ ์œผ๋กœ ํ›จ์”ฌ ๋” ๋‚˜์œ ์„ฑ๋Šฅ์„ ๋‚ด๊ณ  ํ›จ์”ฌ ๋” ํฐ ์†๋„ ์ฐจ์ด๋ฅผ ๋ณด์ž…๋‹ˆ๋‹ค.

๋‹น์—ฐํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค.

@jashkenas--

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ "์ง€์—ฐ๋œ" ์Šคํฌ๋ฆฝํŠธ ์ „์— ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ œ ์‚ฌ์ดํŠธ์—์„œ ์–ด๋–ค ์‹์œผ๋กœ๋“  ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด... ์ธํ„ฐ๋„ท์— ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ์ดํŠธ์˜ ์•ฝ 98%์—์„œ ์†Œ์Šค ๋ณด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ์‚ฌ์ดํŠธ๋Š” ์‹ค์ œ๋กœ ๋งˆํฌ์—…์—์„œ ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „(์ฐจ๋‹จ)์—์„œ ๋กœ๋“œํ•œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰/์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ํ˜ธ์ถœ.

@paulirish๊ฐ€ ์ œ์•ˆํ•˜๋Š” ๊ฒฝ์šฐ defer ์ถฉ๋ถ„ํ•œ์ด๋ฉฐ ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์‚ฌ์‹ค, ์ด์œ ๋ฅผ ์ง€์ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค ๊ธฐ๋ถ„์ด defer ์ถฉ๋ถ„์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋‹น์‹ ์ด ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ช‡ ๊ฐ€์ง€ ํ‹ˆ์ƒˆ ์‚ฌ์ดํŠธ์—๋งŒ ๊ด€์‹ฌ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‚ฌ์ดํŠธ๋Š” ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ๋“ฑ์— ๋Œ€ํ•ด ๊ณ ๋„๋กœ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์™„์ „ํ•œ ๋Šฅ๋ ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์ €๋Š” ์ธํ„ฐ๋„ท์˜ ๋กฑํ…Œ์ผ ์‚ฌ์ดํŠธ์—์„œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋•๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 6๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ(์ผ๋ถ€๋Š” ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ ๋ธ”๋ก!)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ 6๊ฐœ์˜ $LAB.script() ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ๋กœ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด LABjs๊ฐ€ ํ•ญ์ƒ ์ถ”๊ตฌํ–ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ด€์‹ฌ์ด ์—†๋‹ค๊ณ  ํ•ด์„œ ๊ด€๋ จ์ด ์—†๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

20๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ๋Œ€ 20๊ฐœ์˜ LABjs ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ์— ๋Œ€ํ•œ ๋…ผ์Ÿ์€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์˜ ๋…ผ์Ÿ์€ 3-4๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ( defer ๋˜๋Š” ํฌํ•จํ•˜์ง€ ์•Š์Œ)๊ฐ€ ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ ์œผ๋กœ ๋กœ๋“œ๋œ 3-4๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋” ๋‚˜์˜๊ฑฐ๋‚˜ ๊ฐ™๊ฑฐ๋‚˜ ๋” ๋‚˜์€์ง€์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด "์–ด๋ฆฌ์„์€ ์ŠคํŠธ๋กœ์šฐ๋งจ ํ…Œ์ŠคํŠธ"๋Š” ์‚ฌ์‹ค ์ •ํ™•ํžˆ ๊ทธ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋Š” ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ๊ฐ„์„ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ๋‹จ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ์—ฌ๊ธฐ์„œ ์š”์ ์„ ๋†“์น˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. JavaScript์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋” ํฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • import ๋ฌธ์ด ๋ถ€์กฑํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋ชจ๋“ˆ์‹์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๊ฒƒ์˜ ์‹ ์ค‘ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋งŽ์€ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์ง€ ์•Š๋Š” ํ•œ ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.
  • ์Šคํฌ๋ฆฝํŠธ์˜ ์ข…์†์„ฑ์ด ๋ฌด์—‡์ธ์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

์ข‹์€ ๋ถ€์ž‘์šฉ์ด๊ธด ํ•˜์ง€๋งŒ ๋กœ๋“œ ์†๋„๊ฐ€ ๋” ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— RequireJS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. NodeJS์—์„œ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ JS ์•ฑ์„ ์ž‘์€ ๋ชจ๋“ˆ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ชจ๋“ˆ์€ ์ข…์†์„ฑ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜์—ดํ•˜๊ณ  ์ƒŒ๋“œ๋ฐ•์Šค ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊นจ๋—ํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“ˆ(๋ฐ ํ•ด๋‹น ์ข…์†์„ฑ)์€ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์š”์ฒญ ์‹œ(์˜ˆ: ์‚ฌ์šฉ์ž ํด๋ฆญ ์‹œ) ๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์ง€์—ฐ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์‹ค์ œ๋กœ ๋ฏธ์„ธ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ RequireJS๋Š” ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ์ข…์†์„ฑ์„ ๋‹จ์ผ(๋˜๋Š” ์†Œ์ˆ˜์˜) gzip ์ค€๋น„ ํŒŒ์ผ๋กœ ๊ฒฐํ•ฉํ•˜๊ณ  ์ถ•์†Œํ•˜๋Š” ๋นŒ๋“œ ๋„๊ตฌ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ด ์„ธ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ์ €์—๊ฒŒ ํฐ ์Šน๋ฆฌ์ž…๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ํ† ๋ก ํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์ด ์œ ์ผํ•œ ์š”์ ์ด๊ณ  ๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ RequireJS์™€ ๊ฐ™์€ AMD ๋ชจ๋“ˆ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋…ผ์Ÿ์ด ๋ฌด์˜๋ฏธํ•ด์ง‘๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์€ JavaScript์˜ ๋ฏธ๋ž˜์ž…๋‹ˆ๋‹ค. Mozilla์˜ Dave Herman์€ Apple ๋ฐ Google์˜ ์ด์‚ฌํšŒ ๊ตฌ์„ฑ์›๊ณผ ํ˜‘๋ ฅ ํ•˜์—ฌ ์–ธ์–ด ์ž์ฒด์— ๊ธฐ๋ณธ ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€

@getify

์‚ฌ๋žŒ๋“ค์ด ๋‹น์‹ ์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋Œ€ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ›„์›ํ•˜๋Š” ๊ฒƒ์€ ์ ์ ˆํ•œ ๋ฐ˜์‘์„ ์–ป๋Š” ์˜๋ฆฌํ•œ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ฉฐ(๊ทธ๋ฆฌ๊ณ  ์‹ ์ด ๋‹น์‹ ์„ ํ›„์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค) ์ œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์—์„œ ๋งํ–ˆ๋“ฏ์ด ๋‹น์‹ ์ด ๋ฐ”๋ณด๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋‹น์‹ ์ด ์ง‘์ฐฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹  ์ž์‹  btw) ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์˜ ํŒ๋‹จ์„ ์‹ฌ๊ฐํ•˜๊ฒŒ ์†์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๋‚ด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์—์„œ ๋งํ–ˆ๋“ฏ์ด ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ W3C๋‚˜ WHATWG๊ฐ€ ์•„๋‹ˆ๋ผ EcmaScript ์ž์ฒด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ธŒ๋ผ์šฐ์ € ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ์–ธ์–ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด์ œ, ์›ํ•˜์ง€ ์•Š์œผ๋ฉด ์ด ๋Œ€๋‹ต์„ ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์˜ ํŠน๊ถŒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ฐ€ํ˜นํ•˜๊ฒŒ ์™”์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋‚˜๋Š” ๋‹จ์ง€ ๋‚ด๊ฐ€ ๋ฏฟ๋Š” ๊ฒƒ์„ ์˜นํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์—์„œ ๊ตฌ๋…์„ ์ทจ์†Œํ•˜๊ณ  ๋” โ€‹โ€‹์ด์ƒ ๋Œ“๊ธ€์„ ๋‹ฌ๊ฒ ์Šต๋‹ˆ๋‹ค. @paulirish ์™€ @SlexAxton์ด ํƒˆ์„ ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

@getify

๋‹น์‹ ์€ ๋‹น์‹ ์ด ํ†ต์ œํ•˜๋Š” ์†Œ์ˆ˜์˜ ํ‹ˆ์ƒˆ ์‚ฌ์ดํŠธ์—๋งŒ ๊ด€์‹ฌ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ๋“ฑ์— ๋Œ€ํ•ด ๊ณ ๋„๋กœ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์™„์ „ํ•œ ๋Šฅ๋ ฅ
๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” ๋กฑํ…Œ์ผ ์‚ฌ์ดํŠธ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋•๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ธํ„ฐ๋„ท, 6๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š” ํƒœ๊ทธ(์ผ๋ถ€๋Š” ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ
๋ธ”๋ก!), ์—ฌ๊ธฐ์„œ 6๊ฐœ์˜ $LAB.script() ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ๋กœ
์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด LABjs๊ฐ€ ํ•ญ์ƒ ์ถ”๊ตฌํ–ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์œผ๋‹ˆ๊นŒ
๋‹น์‹ ์ด ์‹ ๊ฒฝ์“ฐ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์€ ๊ทธ๊ฒƒ์ด ๊ด€๋ จ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

LABjs๊ฐ€ ํ‰๋ฒ”ํ•œ ์‚ฌ์ดํŠธ๊ฐ€ ๋กœ๋“œ ๋ถˆ๋Ÿ‰๋ฅ ์„ ์•ฝ๊ฐ„ ๋‚ฎ์ถ”๋„๋ก ๋•๋Š” ๊ฒƒ์ด๋ผ๋ฉด ... ๊ทธ๊ฒƒ์€ ๊ณ ๊ท€ํ•œ ๋ชฉํ‘œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Š๋ฆฌ๊ฒŒ ๋กœ๋“œ๋˜๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ์ง„์ง€ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ๋กœ๋“œํ•˜๋„๋ก ํ•˜๋Š” ๊ฒฝ์šฐ(LABjs๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๋ช‡ ์ดˆ ๋” ๋น ๋ฅผ ์ˆ˜ ์žˆ์Œ) ์—ด๋ฆฐ ๋งˆ์Œ์„ ์œ ์ง€ํ•˜๊ณ  ๋” ์‰ฝ๊ณ  ๋œ ์ทจ์•ฝํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์ˆ ๋„ ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์˜ ๋…ผ์Ÿ์€ 3-4๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ(์ง€์—ฐ ์—ฌ๋ถ€)์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ ์œผ๋กœ ๋กœ๋“œ๋œ 3-4๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ๋ณด๋‹ค ๋” ๋‚˜์˜๊ฑฐ๋‚˜ ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ณด์ž…๋‹ˆ๋‹ค.
๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”. ๋‚˜์˜ "์–ด๋ฆฌ์„์€ ์ŠคํŠธ๋กœ์šฐ๋งจ ํ…Œ์ŠคํŠธ"๋Š” ์‚ฌ์‹ค
์ •ํ™•ํžˆ ๊ทธ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜์‹ญ์‹œ์˜ค.

์ด ์Šค๋ ˆ๋“œ์˜ ๋…ผ์Ÿ์€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ JavaScript๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ ๊ฐ์—๊ฒŒ ๋ฑ€ ๊ธฐ๋ฆ„์„ ํŒ๋งคํ•˜๊ณ  ์›น ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ™๋ณดํ•˜๋Š” ๊ฒƒ์€ ๋‘ ์‚ฌ๋žŒ ๋ชจ๋‘์—๊ฒŒ ํ•ด๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ธํ„ฐ๋„ท์— ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. JS๋ฅผ ์—ฐ๊ฒฐ, ์ถ•์†Œ ๋ฐ ์••์ถ•ํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ์ ์€ ์ˆ˜์˜ HTTP ์š”์ฒญ์œผ๋กœ ํŽ˜์ด์ง€ ํ•˜๋‹จ์— ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๊ฐ€ ๋งํ–ˆ๋‹ค.

@jashkenas--

LABjs๊ฐ€ ํ‰๋ฒ”ํ•œ ์‚ฌ์ดํŠธ๊ฐ€ ๋กœ๋“œ ๋ถˆ๋Ÿ‰์„ ์•ฝ๊ฐ„ ๋œ ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๊ฒƒ์ด๋ผ๋ฉด ... ๊ทธ๊ฒƒ์ด ๊ณ ๊ท€ํ•œ ๋ชฉํ‘œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ง€๋‚œ 2๋…„ ๋™์•ˆ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ $LAB.script() ํ˜ธ์ถœ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ ์™ธ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š์€ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ „๋ฐ˜์ ์œผ๋กœ ๋ชจ๋‘ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค(์ผ๋ถ€๋Š” ํฌ๊ฒŒ, ์ผ๋ถ€๋Š” ์•ฝ๊ฐ„๋งŒ).

๋‹ค์–‘ํ•œ ์‚ฐ์—…(์˜ˆ: ์ „์ž ์ƒ๊ฑฐ๋ž˜, ๋ถ€๋™์‚ฐ ๋“ฑ)์˜ ์‚ฌ์ดํŠธ๊ฐ€ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์–ป๋„๋ก ๋•๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ˜(์™„์ „ํžˆ ๋…๋ฆฝ์ ์ด๊ณ  ๋‚˜์™€ ๊ด€๋ จ๋˜์ง€ ์•Š์€) ์ž‘์„ฑ๋œ ๊ธฐ์‚ฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ $LAB ํ˜ธ์ถœ๋กœ ๋Œ€์ฒดํ•˜๊ณ  ํ•ด๋‹น ๋Œ“๊ธ€ ์Šค๋ ˆ๋“œ์˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๊ณ  ๊ธ์ •์ ์œผ๋กœ ์‘๋‹ตํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์‚ฌ์—์„œ "์ข‹์•„์š”, ๋” ๋งŽ์€ ์„ฑ๋Šฅ์„ ์–ป์œผ๋ ค๋ฉด gzip์„ ์ดํ•ดํ•˜๊ณ  ruby โ€‹โ€‹๋˜๋Š” node.js๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„ ๊ด€๋ฆฌ์ž๋ฅผ ๊ณ ์šฉํ•˜์—ฌ ์ž๋™ํ™”๋œ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค......."๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ธฐ์‚ฌ๋ฅผ ์ฝ๋Š” ๊ฒƒ์€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์ƒ๊ฐ์„ ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ ์ง€๋‚˜์ณค์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €๋Š” "์ด๋ด, <script>๋ฅผ script()๋กœ ๋Œ€์ฒด"๊ฐ€ ๊ทธ๋“ค์ด ์ดํ•ดํ•˜๊ณ  ๊ณต๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ์‰ฌ์šด ๋ฉ”์‹œ์ง€๋ผ๊ณ  ๋ฏฟ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

LABjs์— ๋Œ€ํ•ด ๋‚ด๊ฐ€ ์›ํ–ˆ๋˜ ๊ฒƒ์€ ๋„ˆ๋ฌด ๋งŽ์€ ์ƒ๊ฐ ์—†์ด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์‰ฝ๊ฒŒ ๋ฐฉ๋ฌธํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ์™€ ๊ฐœ์ธ์ ์œผ๋กœ ์ƒ๋‹ดํ•˜๊ณ  ์ตœ์ƒ์˜ ์ตœ์ ํ™”๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋งŽ์€ ์‚ฌ์ดํŠธ์—์„œ ํ›จ์”ฌ ๋” ๋งŽ์€ ์„ฑ๋Šฅ์„ ๋Œ์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋˜ํ•œ ์ด๊ฒƒ์ด ์ธํ„ฐ๋„ท์˜ ๊ธด ๊ผฌ๋ฆฌ๋ฅผ ์œ„ํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ์‚ฌ๋žŒ์˜ ๋Šฅ๋ ฅ์„ ํ›จ์”ฌ ๋›ฐ์–ด ๋„˜๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์ธ์‹ํ•˜๊ณ  ์œ ์‚ฌํ•˜๊ฒŒ ๋ชจ๋“  ์—„๋งˆ&ํŒ ์‚ฌ์ดํŠธ์— "์ด๋ด, ์ž๋™ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ๊ฐ€์ ธ์™€์„œ gzip์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์—๊ฒŒ ๋‚ฏ์„  ์–ธ์–ด๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ. OTOH, "์ด๋ด, ์ € 3๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ๊ฐ€์ ธ์™€์„œ 3๊ฐœ์˜ script() ํ˜ธ์ถœ์„ ๋งŒ๋“œ์„ธ์š”. ์–ผ๋งˆ๋‚˜ ์‰ฌ์› ๋‚˜์š”?"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ๊ฝค ์„ฑ๊ณต์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ, LABjs์— ๋Œ€ํ•œ ๋‚˜์˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‚ฎ์€ ์„ฑ๊ณผ๋ฅผ ๋‚ด๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์–ด๋Š ๊ฒƒ๋„ ์ตœ์ ํ™”์— ๋Œ€ํ•œ ๋ณด๋‹ค ์ •๊ตํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•”์‹œํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋ถ„๋ช…ํžˆ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ œ๊ฐ€ ์ƒ๋‹ดํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ์„ ๋•Œ, ์ €๋Š” ํ™•์‹คํžˆ ๊ทธ๊ฒƒ๋“ค์„ ํƒ๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งŽ์€ ์›น์—์„œ ๊ทธ๋“ค์ด ๊ธฐ๊บผ์ด ๋˜๋Š” ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ๋‹จ์ง€ _๊ทธ_ ์‚ฌ์ดํŠธ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋ฐฉ์‹์œผ๋กœ ๊ฐœ์„ ๋˜๋„๋ก ๋„์šฐ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@jashkenas--

์ž ์žฌ์ ์œผ๋กœ ๋ง ๊ทธ๋Œ€๋กœ LABjs๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ช‡ ์ดˆ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์—ด๋ฆฐ ๋งˆ์Œ์„ ์œ ์ง€ํ•˜๊ณ  ๋” ์‰ฝ๊ณ  ๋œ ๊นจ์ง€๊ธฐ ์‰ฌ์šด ๊ธฐ์ˆ ๋„ ๋” ์„ฑ๋Šฅ์ด ์ข‹๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

LABjs๊ฐ€ ์‚ฌ์ดํŠธ ์†๋„๋ฅผ ํฌ๊ฒŒ ๋Šฆ์ถ”๊ณ  ์žˆ๋‹ค๋Š” ํ™•์‹คํ•œ ์ฆ๊ฑฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ์ดํŠธ์— ๋„์›€์ด ๋œ๋‹ค๋Š” ํ™•๊ณ ํ•œ ์ฆ๊ฑฐ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ด๊ฒƒ์„ ์‚ฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์€ ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹Œ ์‚ฌ์‹ค์„ ๊ฐ€์ •ํ•˜๋Š” ์ž˜๋ชป๋œ ์ „์ œ์ž…๋‹ˆ๋‹ค.

@paulirish ๋Š” defer ์†์„ฑ์˜ ๋ฌธ์ œ๋ฅผ ์ง€์ ํ•˜๋Š” ๊ฒŒ์‹œ๋ฌผ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
http://hacks.mozilla.org/2009/06/defer/

@jashkenas๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ๋ชจ๋ฐ”์ผ ์„ฑ๋Šฅ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ 3g ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋Œ€๊ธฐ ์‹œ๊ฐ„์œผ๋กœ ์ธํ•ด ์—ฌ๋Ÿฌ http ์š”์ฒญ์ด ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋ผ์ธ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋กœ ์—ฐ๊ฒฐ, gzip ๋ฐ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋ฅผ base64๋กœ ๋ฌธ์ž์—ด๋กœ ์ธ์ฝ”๋”ฉํ•œ ๋‹ค์Œ http ์š”์ฒญ์„ ์ค„์ด๊ณ  '์บ์‹ฑ'์„ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด localStorage์— ํ‚ค:๊ฐ’ ์Œ์œผ๋กœ ์ €์žฅํ•˜๋Š” ์ธ๋ผ์ธ ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜๋Š” ๋ฐ ๋งŽ์€ ์—ฐ๊ตฌ๊ฐ€ ์ง„ํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. http://channel9.msdn.com/Events /MIX/MIX11/RES04 ๋Š” Microsoft Research์˜ James Mickens์˜ ํ›Œ๋ฅญํ•œ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์ž…๋‹ˆ๋‹ค.

http://davidbcalhoun.com/present/mobile-performance/ http ์š”์ฒญ์ด ์žˆ๋Š” ๋ชจ๋ฐ”์ผ ์„ฑ๋Šฅ๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์— ๋Œ€ํ•œ ์ข‹์€ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” RequireJS ์—์„œ ์ผํ•˜๊ณ  ์žˆ์œผ๋ฉฐ

1) JS๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ๊ณณ์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š” JS์˜ ๋ชจ๋“ˆ์‹ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
2) ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

"์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ" ๋ถ€๋ถ„์€ ์ฒซ ๋ฒˆ์งธ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. dev์—์„œ๋Š” ๋””๋ฒ„๊น…์„ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ณ  ์ค„ ๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋˜ํ•œ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด JS API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ ์‹œ ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น๋ฉ”์ผ ํฌ๊ธฐ ์•ฑ์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ์„ฑ๋Šฅ ์Šคํ† ๋ฆฌ์˜ ํ•„์ˆ˜ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•˜๋‚˜ ๋˜๋Š” ์ ์€ ์ˆ˜์˜ ์š”์ฒญ์œผ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์ตœ์ƒ์˜ ๋ฐฐํฌ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ requirejs์˜ ๋ชฉํ‘œ๋Š” ์ „์—ญ์„ ์–ต์ œํ•˜๊ณ  ๋ช…์‹œ์  ์ข…์†์„ฑ์„ ์žฅ๋ คํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ์‹ ์ฝ”๋“œ ๋‹จ์œ„๋ฅผ ๋งŒ๋“ค๊ณ  ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” shim/polyfill/๋ฌด์—‡์ด๋“  ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

JS์˜ ๋ชจ๋“ˆ ํ˜•์‹์— ๋Œ€ํ•œ ๋…ผ์˜๋ฅผ ์•Œ๋ฆฌ๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ๋ชจ๋“ˆ์‹ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”( ์ค€์ˆ˜ ํ…Œ์ŠคํŠธ ํฌํ•จ)๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ ์ž‘์—… ํ•œ AMD API ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์‹ค์ œ ๊ตฌํ˜„์„ ํ•˜๊ณ  API์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ํ•ฉ์˜์— ๋„๋‹ฌํ•จ์œผ๋กœ์จ ์ง„ํ–‰๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

ํŠนํžˆ JS์˜ ๋„คํŠธ์›Œํฌ ํŠน์„ฑ๊ณผ โ€‹โ€‹์›น ๋ฌธ์„œ/์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ์˜ ๊ด€๊ณ„๋ฅผ ๊ณ ๋ คํ•  ๋•Œ ๋กœ๋” ํ”Œ๋Ÿฌ๊ทธ์ธ API ๋Š” ES Harmony ๋ชจ๋“ˆ๊ณผ ํ•จ๊ป˜ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์ง€์›๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ , requirejs ๋กœ๋” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉ ํ•˜์—ฌ ํ•˜๋ชจ๋‹ˆ ์ œ์•ˆ์„ ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด :

  • AMD( curl , Dojo 1.7 , loadrunner , requirejs)๋ฅผ ์ง€์›ํ•˜๋Š” ๋กœ๋”๋ฅผ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์„ ํƒ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉฐ, ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜๋Š” "ํ•˜๋‚˜์˜ JS ํŒŒ์ผ์— ์žˆ๋Š” ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ" ์ตœ์ ํ™”์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ฃผ ์ž‘์€ ๊ฒƒ ๊นŒ์ง€๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์ƒ์˜ ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•์„ ๊ถŒ์žฅํ•˜๋ฉด์„œ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ช…์‹œ์  ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์—ญ์„ ํ”ผํ•จ์œผ๋กœ์จ ์ฝ”๋“œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • requirejs ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” Node์—์„œ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๋ฉฐ Rhino์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋งจ๋“œ ๋ผ์ธ ํˆด์ด์ง€๋งŒ ์ตœ์‹  ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜ ์ฝ”๋“œ๋Š” ์ด๋ฅผ Node์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ๋กœ ๋‚ด ๋ณด๋‚ธ๋‹ค . ๋”ฐ๋ผ์„œ ์›ํ•˜๋Š” ๊ฒฝ์šฐ "ํ•ญ์ƒ ํ•˜๋‚˜์˜ ์Šคํฌ๋ฆฝํŠธ ๋‹ค์šด๋กœ๋“œ" ๋ชจ๋“œ์—์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ตœ์ ํ™”๋œ ํŒŒ์ผ์—์„œ ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๋ชจ๋“ˆ์„ ์ œ์™ธํ•˜๋„๋ก ์„ ํƒํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋””๋ฒ„๊ทธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํ‹ฐ์ผ“์˜ ๋งฅ๋ฝ์—์„œ : AMD ํ˜ธํ™˜ ๋กœ๋”(requirejs์ผ ํ•„์š”๋Š” ์—†์Œ)๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ HTML ์ƒ์šฉ๊ตฌ์˜ ๋ชฉํ‘œ์— ๋ถ€ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ฝ”๋“œ์™€ ์„ฑ๋Šฅ ๋ชจ๋‘์—์„œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋กœ ๊ฐ€๋Š” ๊ธธ์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ HTML ์ƒ์šฉ๊ตฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ค์šด ์ผ์ด๊ณ  ์ดํ•ด ๊ด€๊ณ„๊ฐ€ ์ƒ์ถฉ๋˜๊ณ  ์•ฝ๊ฐ„์˜ ๋ฌธ์ฒด๋„ ์žˆ์œผ๋ฏ€๋กœ ํ˜„์žฌ๋กœ์„œ๋Š” ์ด ๋ถ„์•ผ์—์„œ ์ถ”์ฒœํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋Š” ์ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

AMD API๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” requirejs ๋ฐ ๋กœ๋”์˜ ๋ชฉํ‘œ๋Š” ์ „์—ญ์„ ๋คํ”„ํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ „์ฒด, ๋•Œ๋กœ๋Š” ์•”์‹œ์ ์ธ ์ข…์†์„ฑ ํŠธ๋ฆฌ๋ฅผ ํ•ด๊ฒฐํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” ์ผ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ํฐ ์ด์ ์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ์ ์„ ๋ถ„๋ช…ํžˆ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชฉํ‘œ๋Š” ๊ฒฌ๊ณ ํ•œ ์„ฑ๋Šฅ ํ”„๋กœํ•„์„ ๊ฐ€์ง„ ์†”๋ฃจ์…˜์œผ๋กœ ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ด์ „๋ถ€ํ„ฐ ๋‹ค์‹œ ์ดˆ์ ์„ ๋งž์ถ”๋ ค๋ฉด... defer ํ…Œ์ŠคํŠธ๋ฅผ LABjs ํ…Œ์ŠคํŠธ์™€ ๋น„๊ต...( defer ๊ฐ€ ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ ๋ธ”๋ก์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฌด์‹œํ•˜๊ณ ) LABjs ํ…Œ์ŠคํŠธ๊ฐ€ defer ํ…Œ์ŠคํŠธ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์—ฌ๋Ÿฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ, ์‹ฌ์ง€์–ด ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ๋„ ์‹œ๋„ํ•ด ๋ณด์•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ฑฐ์˜ ๊ฐ™์€ ์ˆซ์ž๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

http://labjs.com/dev/test_suite/test-script-defer-tags.php

http://labjs.com/dev/test_suite/test-LABjs.php

@getify

์™œ ๋˜๋Š” ์–ด๋–ป๊ฒŒ ์ด๊ฒƒ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด์ง€๋งŒ 3๋…„ ์ด์ƒ ๋œ MacBook ์ปดํ“จํ„ฐ์—๋Š” ๋‘ ์ œํ’ˆ ์‚ฌ์ด์— ์ผ๊ด€๋œ 3000์˜ ์ฐจ์ด๊ฐ€ ์žˆ์œผ๋ฉฐ ์ด๋Š” @defer ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Firefox์—์„œ๋งŒ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

@espadrine-- ๊ฝค ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ฐ”๋‹ฅ์— ๋„๋‹ฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฒ„์ „์˜ Firefox๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฒฐ๊ณผ ์Šคํฌ๋ฆฐ์ƒท์„ ๋ณด๋‚ด์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  JS์™€ CSS๋ฅผ ์—ฐ๊ฒฐ ๋ฐ ์ถ•์†Œํ•˜๊ณ  HTML ํŽ˜์ด์ง€์— ๋ฐ”๋กœ ์ธ๋ผ์ธ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ HTTP ์š”์ฒญ FTW! :NS

์ง„์ง€ํ•˜๊ฒŒ ๋งํ•˜์ง€๋งŒ ์ด ์ปค๋ฎค๋‹ˆํ‹ฐ์—๋Š” ์•ฑ์ด ๋กœ๋“œ๋˜๋Š” ๋ฐฉ์‹๋ณด๋‹ค ๋” ํฐ ๋ฌธ์ œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์ง‘์ค‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•(ํ•˜๋‹จ์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ)์ด ์ถฉ๋ถ„ํžˆ ๋น ๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ›Œ๋ฅญํ•œ ์•ฑ์„ ์ž‘์„ฑํ•˜๊ณ  ๋งˆ์ง€๋ง‰์— ๋กœ๋”ฉ ์„ฑ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜์‹ญ์‹œ์˜ค. ๋‹ค๋ฅธ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์€ ์„ฑ๊ธ‰ํ•˜๊ฒŒ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์˜ ์‚ฌ๋žŒ๋“ค์€ AMD๊ฐ€ JS ์ฝ”๋“œ ๊ตฌ์„ฑ์˜ ํ™ฉ๊ธˆ ํ‘œ์ค€์ด ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์ผ๋ฐ˜์ ์ธ ํ•ฉ์˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ์˜ต์…˜์„ ์‹ค์ œ๋กœ ๋ณธ ์ ์€ ์—†์ง€๋งŒ Boilerplate๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์ข‹์€ ์ถœ๋ฐœ์ ์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

Firefox UX 8.0a1(2011-08-07) ์—…๋ฐ์ดํŠธ ์ฑ„๋„.

defer
LABjs

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ด์œ ๋Š” ์•Œ ์ˆ˜ ์—†์œผ๋ฉฐ ์•„๋งˆ๋„ ๋งค์šฐ ๊ตฌ์ฒด์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. LABjs๋Š” ์•„๋งˆ๋„ ๋ ˆ๊ฑฐ์‹œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@getify ์˜ ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€๋ฅผ ์›ƒ์Œ ์ด์ƒ์˜ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”. ์ธ์šฉํ•˜๋ ค๋ฉด:

<์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ธฐ src="http://labjs.xhr.me/dev/test_suite/testscript1.php?_=4911710&delay=5"> <์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ธฐ src="http://labjs.xhr.me/dev/test_suite /testscript2.php?_=6146431&delay=3"> <์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ธฐ src="http://labjs.xhr.me/dev/test_suite/testscript3.php?_=9499116&delay=1">

@getify , ์‹ค์ œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ž์œ ๋กญ๊ฒŒ @SlexAxton ์˜ AssetRace repo๋ฅผ ํฌํฌํ•˜๊ณ  LABjs ๋ฒ„์ „์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ _real_์˜ JavaScript ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€๋ฅผ ์‹ค์ œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์œผ๋กœ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.

๋˜ํ•œ ๋‹จ์ผ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ( defer ์—ฌ๋ถ€)์— ๋Œ€ํ•ด JS๋ฅผ ์‹ค์ œ๋กœ ์—ฐ๊ฒฐํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์š”์ ์€ 1๊ฐœ์˜ HTTP ์š”์ฒญ์„ ํ†ตํ•ด ์ œ๊ณต๋˜๋Š” ๋™์ผํ•œ ์ฝ˜ํ…์ธ ๊ฐ€ 10๊ฐœ์˜ HTTP ์š”์ฒญ์—์„œ ์ œ๊ณต๋˜๋Š” ๋™์ผํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ๋Šฅ๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

LABjs๊ฐ€ ์ƒ๋‹นํžˆ ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์‹œ์‚ฌํ•˜๋Š” ์–ด๋–ค ํ™•๋ฆฝ๋œ ์ฆ๊ฑฐ๋„ ์—†์Šต๋‹ˆ๋‹ค.
๋ชจ๋“  ์‚ฌ์ดํŠธ์˜ ์†๋„๋ฅผ ๋Šฆ์ถฅ๋‹ˆ๋‹ค. ๋งŽ์€ ๋„์›€์ด ๋œ๋‹ค๋Š” ์ž…์ฆ๋œ ์ฆ๊ฑฐ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์ดํŠธ์˜. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ด๊ฒƒ์„ ์‚ฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค -- ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€์ •์ด ์ž˜๋ชป๋œ ์ „์ œ์ž…๋‹ˆ๋‹ค
์ฆ๊ฑฐ์— ์—†๋Š” ์‚ฌ์‹ค.

์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์€ LABjs๊ฐ€ ์ด๋ฏธ์ง€, CSS ๋ฐ ๊ธฐํƒ€ ์ž์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งŽ์€ HTTP ์š”์ฒญ์—์„œ JS๊ฐ€ ๊ฒฝ์Ÿํ•˜๊ฒŒ ํ•˜์—ฌ ์‹ค์ œ๋กœ ์‚ฌ์ดํŠธ ์†๋„๋ฅผ ํฌ๊ฒŒ ๋Šฆ์ถ”๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. @getify :

๊ธฐ๋ก์„ ์œ„ํ•ด AssetRace repo ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€์—์„œ ๋” ๋งŽ์€ ์ด๋ฏธ์ง€๋ฅผ ์–ป๋Š” ๊ฒƒ์ด ํ˜„๋ช…ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ํ™•์‹คํžˆ ์ข‹์€ ๊ธฐ์ค€์ด ๋ฉ๋‹ˆ๋‹ค.

@artzstudio AMD ๋กœ๋”๋กœ JS๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ตœ์†Œํ•œ Harmony์˜ ๋ชจ๋“ˆ์ด ์™„์„ฑ๋˜๊ณ  ๋„๋ฆฌ ์ง€์›๋  ๋•Œ๊นŒ์ง€๋Š” ์‹ค์ œ๋กœ ์ตœ๊ณ ์˜ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด AMD ๋ชจ๋“ˆ์—์„œ ๊ธฐ๋ณธ ๋ชจ๋“ˆ๋กœ์˜ ๋ช…ํ™•ํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

AMD ๋ชจ๋“ˆ์ด ํ‘œ์ค€์ด ๋˜๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค(๋‚˜๋„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Œ). ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๋Š” ๋˜‘๋˜‘ํ•œ ์‚ฌ๋žŒ๋“ค(Yehuda Katz์™€ Dan Webb๊ฐ€ ๋– ์˜ค๋ฆ„)์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@danwrong ์˜ loadrunner๋Š” ๋‹น์‹ ์˜ ๊ฐ€๋ฐฉ์ด๋ผ๋ฉด ๋‘˜ ๋‹ค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/danwrong/loadrunner

๊ฝค ์ข‹์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. JS๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋„ ์ž ์žฌ์ ์œผ๋กœ ์กฐ๊ธˆ ๋” ์‹ค์šฉ์ ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด ๋ฌผ๊ฑด์— ๋Œ€ํ•œ AMD ๋ชจ๋“ˆ์„ ์ข‹์•„ํ•˜์ง€๋งŒ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฐ ๋ฒ„์ „์„ ๋ชจ๋“ˆ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๊ณ  ์‹ถ์–ดํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

@strobecorp ๊ฐ€ AMD ๋ชจ๋“ˆ์— ํ•„์š”ํ•œ ์ถ”๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š” ์ž์ฒด ์†”๋ฃจ์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

AMD๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์ง€๋งŒ ๋‹ค์ค‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/newb ๊ด€์ ์—์„œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋งŒํผ ํ˜„๋ช…ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jashkenas--

@getify ์˜ ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€๋ฅผ ์›ƒ์Œ ์ด์ƒ์˜ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”.

๋‹น์‹ ์ด ์˜ˆ์˜ ๋ฐ”๋ฅด๊ฒŒ ํ–‰๋™ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋‚˜๋Š” ๋‹น์‹ ๊ณผ ๋” ์ด์ƒ ๋…ผ์˜ํ•  ์ƒ๊ฐ์ด ์—†์Šต๋‹ˆ๋‹ค. ์„ฑ์‹คํ•˜๊ฒŒ ํ–‰๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•ฝ๊ฐ„์˜ ์ผ๋ฐ˜์ ์ธ ํ’ˆ์œ„๋ฅผ ๋†’์ด ํ‰๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@getify , ์‹ค์ œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

๋‚ด๊ฐ€ ํ•˜๋Š” ์ผ์ด ์™œ ๊ทธ๋ ‡๊ฒŒ ๋ฏธ์ณค๊ณ , ์›ƒ๊ธฐ๊ณ , ๋ฌด์˜๋ฏธํ•œ์ง€ ์„ค๋ช…ํ•ด์ฃผ์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” (๊ทธ์˜ ํ›Œ๋ฅญํ•œ ๊ฒฝํ—˜๊ณผ ์ง€ํ˜œ๋กœ) ๋ชจ๋“  ํ…Œ์ŠคํŠธ์—์„œ ์„œ๋ฒ„ ํƒ€์ด๋ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ œ์–ดํ•˜๊ณ  ํ…Œ์ŠคํŠธ์˜ ๋ณ€๋™์„ ์ค„์ธ๋‹ค๊ณ  ์ œ์•ˆํ•œ Steve Souders๋กœ๋ถ€ํ„ฐ ์ง์ ‘ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋ฐ”๋กœ ๋‚ด๊ฐ€ ํ•˜๋Š” ์ผ์ด๋‹ค.

๋ณด๋‹ค ํ†ต์ œ๋œ ํ…Œ์ŠคํŠธ๋Š” ์œ ํšจํ•œ ๊ธฐ์ค€ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํ™•๋ฆฝ๋œ ๊ณผํ•™์  ๊ด€ํ–‰์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ์‹ค์ œ ํ…Œ์ŠคํŠธ๊ฐ€ ์œ ์šฉํ•˜์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹ˆ์ง€๋งŒ, ์ €๋ฅผ ์ €๊ฒฉํ•˜๋ฉด์„œ "๊ทธ๋ฅผ ๋น„์›ƒ์–ด๋ผ, ๊ทธ๊ฐ€ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฐ”๋ณด์•ผ. ํ•ด์•ผ ํ•œ๋‹ค."

@SlexAxton ์˜ AssetRace ์ €์žฅ์†Œ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋ถ„๊ธฐํ•˜๊ณ  LABjs ๋ฒ„์ „์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

๊ธฐ๊บผ์ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด ํ…Œ์ŠคํŠธ ์„ค์ •์ด ์œ ํšจํ•˜์ง€ ์•Š์€ ์ด์œ ์— ๋Œ€ํ•ด ํ•ฉ๋ฆฌ์ ์ด๊ณ  ์ˆ˜์ค€ ๋†’์€ ์ฃผ์žฅ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ทธ๋Ÿฐ ๋ฐ”๋ณด๊ฐ€๋˜๋Š” ๊ฒƒ์€ ๊ทธ๋งŒ ๋‘์‹ญ์‹œ์˜ค.

@jashkenas--

์š”์ ์€ 1๊ฐœ์˜ HTTP ์š”์ฒญ์„ ํ†ตํ•ด ์ œ๊ณต๋˜๋Š” ๋™์ผํ•œ ์ฝ˜ํ…์ธ ๊ฐ€ 10๊ฐœ์˜ HTTP ์š”์ฒญ์—์„œ ์ œ๊ณต๋˜๋Š” ๋™์ผํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ๋Šฅ๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ (๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค)์ด ์ด ํ† ๋ก ์ด concat๊ณผ not-concat์— ๊ด€ํ•œ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์—ฌ๊ธฐ์—์„œ ๊ณ„์†ํ•ด์„œ ์†Œ๋ฆฌ๋ฅผ ์งˆ๋ €๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ์˜ ํ›จ์”ฌ ๋” ์•ž๋ถ€๋ถ„์„ ์ฝ์—ˆ๋‹ค๋ฉด ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋‘ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ์Œ์„ ์ธ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” ์ง๊ตํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๋งˆํฌ์—…์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋™์  ์Šคํฌ๋ฆฝํŠธ ์š”์†Œ์™€ ๊ฐ™๊ฑฐ๋‚˜ ๋” ์ข‹์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ๊ทธ ์งˆ๋ฌธ์€ ๋‚ด๊ฐ€ ์—ฌ์ „ํžˆ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์•„์ง ์–ป์ง€ ๋ชปํ•œ ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์€ script-concat์ด ํ•ญ์ƒ ๋” ๋‚˜์€์ง€์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ์ด๋ฏธ ๊ทธ๊ฒƒ์„ ํ™•์‹ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๊ทธ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์‹œ์‚ฌํ•˜๋Š” ๋ฐ˜๋Œ€ ์ฆ๊ฑฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์งˆ๋ฌธ๋„ ์ฒ ์ €ํžˆ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ ์ด ์Šค๋ ˆ๋“œ์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‹น์‹ ์˜ ๋ฐฉ๋ฒ•์ด ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๊ณ„์† ์ฃผ์žฅํ•จ์œผ๋กœ์จ, ๋‹น์‹ ์€ ์ „์ฒด ํ† ๋ก ์„ ๋œ ์œ ์พŒํ•˜๊ฒŒ ๋งŒ๋“ค ๋ฟ์ž…๋‹ˆ๋‹ค. ์ œ๊ฐ€ ํ•˜๋ ค๊ณ  ํ•˜๋Š” ์ผ์€ ์ด ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์งˆ๋ฌธ ๊ฐ๊ฐ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ฆ๊ฑฐ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์ถ”์ธก์„ ๋ฉˆ์ถ”๊ณ  ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋‚˜์™€ ๋™์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ด์œ ๋กœ ๋‚˜์—๊ฒŒ ๋ฐ”๋ณด์ง“์„ ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋Œ€์‹ ์— ๋‹น์‹ ์ด ๋„์šธ ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์•„๋‹Œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

defer ํ…Œ์ŠคํŠธ ๋Œ€ LABjs ํ…Œ์ŠคํŠธ์™€ ๊ด€๋ จํ•˜์—ฌ IE9, FF8(์•ผ๊ฐ„) ๋ฐ Chrome15(์นด๋‚˜๋ฆฌ์•„)์—์„œ ๋‘ ๊ฐ€์ง€ ์ผ๋Œ€์ผ ํ…Œ์ŠคํŠธ์˜ ๋น ๋ฅธ ์Šคํฌ๋ฆฐ์บ์ŠคํŠธ ์บก์ฒ˜๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

http://www.screenr.com/icxs

defer ๋‹จ์ ์— ๋Œ€ํ•œ @paulirish ์˜ ์ด์ „ ์งˆ๋ฌธ(https://github.com/paulirish/html5-boilerplate/issues/28#issuecomment-1765361)์— ๋Œ€๋‹ตํ•˜๋ ค๋ฉด IE์—์„œ "DOMContentLoaded"๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์„ธ์š”. defer ํ…Œ์ŠคํŠธ์˜ Chrome ๋ฐ Firefox.

IE9 ๋ฐ Chrome15์—์„œ DOMContentLoaded ์ด๋ฒคํŠธ๋Š” ๋ณด๋ฅ˜(์ฐจ๋‹จ)๋˜๊ณ  ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋  ๋•Œ๊นŒ์ง€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ FF์—์„œ๋Š” DOMContentLoaded ์ด๋ฒคํŠธ๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์‹คํ–‰๋˜๊ณ  ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ทธ ์ดํ›„์— ์‹คํ–‰๋˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ € ์ „๋ฐ˜์— ๊ฑธ์ณ ์—„์ฒญ๋‚œ ๋ถˆ์ผ์น˜์ด๋ฉฐ defer ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์‚ฌ์–‘์„ ์ฝ๊ณ  ์•Œ ์ˆ˜ ์žˆ๋Š” ํ•œ ์–ด๋–ค ๋™์ž‘์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ธŒ๋ผ์šฐ์ € ๊ฐ„์—๋Š” ๋ถ„๋ช…ํžˆ ๊ธฐ๋ฐœํ•˜๊ณ  ์ผ๊ด€์„ฑ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@getify ์ €๋Š” ๋ฐ”๋ณด๊ฐ€ ๋˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋งˆ์Œ์— ์ƒ์ฒ˜๋ฅผ ๋“œ๋ฆฐ ์  ์ง„์‹ฌ์œผ๋กœ ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋‹น์—ฐํžˆ, ๋‹น์‹ ์ด ์š•ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด๋Š” ๊ฒƒ์€ ํ† ๋ก ์˜ ์š”์ ์œผ๋กœ ... ๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ๋ฑ€ ๊ธฐ๋ฆ„์œผ๋กœ ๋ณด๋Š” ๊ฒƒ์„ ๋‹น์‹ ์€ ๋„์›€์ด ๋˜๋Š” ํ•œ ๊ฑธ์Œ์œผ๋กœ ๋ด…๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ ์ง๊ตํ•ฉ๋‹ˆ๋‹ค(์›๋ž˜ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์‚ฌ์šฉํ•œ ์–ธ์–ด).

์ฒซ ๋ฒˆ์งธ๋Š” ๋งˆํฌ์—…์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€
๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋™์  ์Šคํฌ๋ฆฝํŠธ ์š”์†Œ.

์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ณ‘๋ ฌ ๋กœ๋”ฉ์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ์ˆœ์ฐจ ๋กœ๋”ฉ๋ณด๋‹ค ๋น ๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ก , ๋งํ•˜๊ฑฐ๋‚˜, ๋น„ ๋ธ”๋กœํ‚น ๋ฐฉ์‹์œผ๋กœ ๊ทธ ์ผ์„ <body> ๋˜๋Š”๊ณผ ํƒœ๊ทธ defer , ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์˜ ๋ธ”๋กœํ‚น๋ณด๋‹ค ๋” ์ข‹์„ ๊ฒƒ์ด๋‹ค <head> .

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์š”์ ์„ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆœ์ฐจ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์€ ๋น„๊ตํ•˜๊ธฐ ํž˜๋“  ์ผ์ž…๋‹ˆ๋‹ค. JavaScript์˜ ์„ฑ๋Šฅ์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ์€ ์•„๋ฌด๋„ ๊ทธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ˆœ์ฐจ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ณด๋‹ค ๋” ๋น ๋ฅธ ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? _์•„๋ฌด๊ฒƒ_.

์šฐ๋ฆฌ๊ฐ€ ์•„์ง ์–ป์ง€ ๋ชปํ•œ ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์€
script-concat์€ ํ•ญ์ƒ ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด ์งˆ๋ฌธ์„ "์–ป์—ˆ๋‹ค". ์‚ฌ์‹ค, ์ด ํŽ˜์ด์ง€ ์ƒ๋‹จ์— @paulirish ์˜ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์—์„œ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด ์Šค๋ ˆ๋“œ์—์„œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ˆ˜๋…„์— ๊ฑธ์ณ LABjs๊ฐ€ ํ•˜๋Š” ์ผ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ฃผ์žฅ์˜ ํ•ต์‹ฌ์„ ์ฐŒ๋ฆ…๋‹ˆ๋‹ค.

๊ทธ ์งˆ๋ฌธ๋„ ์ฒ ์ €ํžˆ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ณตํ•˜๊ธฐ ์œ„ํ•ด, ์—ฌ๊ธฐ์— (๊ณต์ •ํ•œ) ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ 5๊ฐœ์˜ ์‹ค์ œ ์Šคํฌ๋ฆฝํŠธ, ๋‹ค๋ฅธ ์ž์‚ฐ์ด ์žˆ๋Š” ์ค‘๊ฐ„ ํฌ๊ธฐ ํŽ˜์ด์ง€์— ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๋กœ๋“œ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด LABjs ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์—ฐ๊ฒฐ๋œ ๋‹จ์ผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

http://jashkenas.s3.amazonaws.com/misc/snake-oil/labjs.html

http://jashkenas.s3.amazonaws.com/misc/snake-oil/vanilla.html

์กฐ์‚ฌํ•˜๊ณ  ์‹ถ์€ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€๋‚˜ ์‹คํ—˜ํ•ด๋ณด๊ณ  ์‹ถ์€ ์‹ค์ œ LABjs ์‚ฌ์šฉ ์›น์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ณต์œ ํ•ด ์ฃผ์„ธ์š”.

@SlexAxton ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ Yehuda์˜ ๊ฒฌํ•ด์™€ ๋‹ค๋ฅธ ๊ฐ•๋ ฅํ•œ ์˜๊ฒฌ(๋ฆฌํŒฉํ† ๋งํ•˜๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค๋Š” ์  ์ œ์™ธ)์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฐœ๊ฒฌ ์ด ์ด์•ผ๊ธฐ๋ฅผํ•˜์ง€๋งŒ.

@geddesign ์˜ ์˜๊ฒฌ์„ ๋ช…ํ™•ํžˆ ์˜ค๋Š˜ ํ˜„์žฌ AMD ๋ชจ๋“ˆ์€ ํ•˜๋ชจ๋‹ˆ ๋ชจ๋“ˆ๋กœ ์ƒ๋‹นํžˆ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ํ•˜๋ชจ๋‹ˆ ๋ชจ๋“ˆ ์ œ์•ˆ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์œ ๋™์ ์ด๋ฉฐ ๋‚˜์ค‘์— ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ์—„๊ฒฉํ•œ ๊ตฌํ˜„ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š์•˜์ง€๋งŒ ์–ด๋Š ์ •๋„ ๋‹ค๋ฆฌ๋ฅผ ๋†“๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ์Šค ์ธก๋ฉด์—์„œ AMD ๋กœ๋” + ๋กœ๋” ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ผ๋ถ€ ์กฐํ™” ์•„์ด๋””์–ด๋ฅผ ์‹œ๋„ํ•˜๋Š” ๋ฐ ํ™•์‹คํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@SlexAxton ์˜ ์˜๊ฒฌ:

loadrunner์˜ ๊ฒฝ์šฐ: ๊ตฌ๋ฌธ์ด ๋” ๋‚˜์€์ง€, ๋‹จ์ง€ ๋‹ค๋ฅธ์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. AMD๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

strobe์˜ ๊ฒฝ์šฐ: ์•„์ง ๊ทธ๋“ค๋กœ๋ถ€ํ„ฐ ์ฝ”๋“œ๋ฅผ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” Yehuda๊ฐ€ ๊ทธ ๋ฐœ์ „์„ ์—ด๊ธฐ ์œ„ํ•ด ํ•œ ์ผ์— ๊ฐ์‚ฌํ•˜์ง€๋งŒ ๊ทธ๋“ค์€ ์ƒ๋‹นํžˆ ๋‚ด๋ฉด์— ์ดˆ์ ์„ ๋งž์ถ˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Alex, ๊ทธ๋“ค์ด ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ ‘๊ทผ ๋ฐฉ์‹์ด ์ค‘์ฒฉ๋œ ์ข…์†์„ฑ์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด(๊ด‘๋ฒ”์œ„ํ•œ ์ฝ”๋“œ ๊ณต์œ ์— ํ•„์š”ํ•จ) ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฝ”๋“œ ๋‹จ์œ„์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์˜์กด์„ฑ์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์ข…์†์„ฑ์ด ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•ด๋‹น ์ฝ”๋“œ ์ฃผ์œ„์— ํ•จ์ˆ˜ ๋ž˜ํผ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ํ•ญ์ƒ JS ๊ฐœ๋ฐœ ๋ฒ”์œ„์—์„œ ํ™•์žฅํ•  ์ˆ˜ ์—†๋Š” ๋นŒ๋“œ ๋˜๋Š” XHR ์•ก์„ธ์Šค๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด AMD๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ ๊ตฌ๋ฌธ์€ ๊ฐ€๋Šฅํ•œ ํ•œ ์Šฌ๋ฆผํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ์€ ์ด๋ฆ„๊ณผ ์ผ๋ถ€ ์œ ํ˜•์˜ ๊ตฌ๋‘์ ์„ ๋†“๊ณ  ์‹ธ์šฐ๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์‹œ์ ์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๊ณ , ์ง€๊ธˆ๊นŒ์ง€ Dan Webb ๋˜๋Š” Yehuda๋กœ๋ถ€ํ„ฐ AMD๋ฅผ ์ง€์ง€ํ•  ์ˆ˜ ์—†๋Š” ๊ตฌ์กฐ์  ์•ฝ์ ์— ๋Œ€ํ•ด ๋“ค์–ด๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. requirejs์™€ ๊ฐ™์€ ์ผ๋ถ€ AMD ๋กœ๋”๋Š” ์ผ๋ฐ˜ ์Šคํฌ๋ฆฝํŠธ๋งŒ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ชจ๋“ˆ์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์ฝ”๋“œ ๊ตฌ๋ฌธ์„ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‰ฝ๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ž์‹ ์˜ ๊ฐœ์ธ์ ์ธ ์„ ํ˜ธ๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ AMD๋Š” ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋™์˜๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ–ˆ์œผ๋ฉฐ ๋” ์ค‘์š”ํ•˜๊ฒŒ๋Š” ์ด๋ฅผ ๋ฐฑ์—…ํ•˜๊ธฐ ์œ„ํ•œ ์‹ค์ œ ์ฝ”๋“œ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฝค ๊นŠ์€ ์—ญ์‚ฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. AMD๊ฐ€ ์ ํ•ฉํ•˜์ง€ ์•Š์€ ์ด์œ ์— ๋Œ€ํ•ด ๋งค์šฐ ๋ช…ํ™•ํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์•ผ ํ•˜๋Š” ์ฑ…์ž„์€ ์ด์ œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์ด ํ‹ฐ์ผ“์€ ์ด๋ฅผ ์œ„ํ•œ ์žฅ์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ ์ €์—๊ฒŒ ์—ฐ๋ฝํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ amd-implement list๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค) .

๊ทธ๋Ÿฌ๋‚˜ @SlexAxton ์˜ ๊ฒฌํ•ด์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. HTML ์ƒ์šฉ๊ตฌ์— ๋Œ€ํ•œ AMD ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ‘œ์ค€ํ™”ํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ธฐ์ƒ์กฐ์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ €๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์™„์ „ํžˆ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ƒ์šฉ๊ตฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด AMD๋Š” ๊ด‘๋ฒ”์œ„ํ•œ JS ๊ฐœ๋ฐœ์— ์ ํ•ฉํ•œ ๊ฐ•๋ ฅํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค.

@SlexAxton ๋‹น์‹ ๊ณผ ํ•จ๊ป˜ ํ•ด์š”. ๋‚ด ์ž์‹ ์˜ ์ฝ”๋“œ๋Š” AMD์ž…๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ๋Œ€์‹  ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ์ง€๋งŒ ์šด ์ข‹๊ฒŒ๋„ RequireJS๋Š” ์ผ๋ฐ˜ ์Šคํฌ๋ฆฝํŠธ์™€ ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Yehuda์˜ handlebars.js ํ…œํ”Œ๋ฆฟ์„ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒฝ์šฐ RequireJS์™€ ๋งค์šฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ํ…œํ”Œ๋ฆฟ์„ ์ปดํŒŒ์ผ/์บ์‹ฑํ•˜๊ณ  ํ…œํ”Œ๋ฆฟ ๊ธฐ๋Šฅ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ.

define(['tmpl!navigation.html'], function(nav){
   $('body').append(nav(data));
});

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ด ์ง„์ˆ ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

AMD๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์ง€๋งŒ ๋‹ค์ค‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/newb ๊ด€์ ์—์„œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋งŒํผ ํ˜„๋ช…ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Newbs๋Š” ์ „์—ญ ๋ณ€์ˆ˜ ์ถฉ๋Œ์— ๋” ์ทจ์•ฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— AMD๊ฐ€ ๋…ธ๋ จํ•œ ๊ฐœ๋ฐœ์ž๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ๊นจ๋—ํ•œ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ชจ๋“ˆ๋กœ๋ถ€ํ„ฐ ๋ง‰๋Œ€ํ•œ ์ด์ ์„ ์–ป์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ณง ์ถœ์‹œ๋  Dojo 1.7 ๋ฐ Mootools 2.0์ด AMD๋กœ ์ด๋™ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. jQuery๊ฐ€ ํƒ‘์žฌ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํฐ ๋ถˆ๋งŒ ์ค‘ ํ•˜๋‚˜๋Š” "์ „๋ถ€ ์•„๋‹ˆ๋ฉด ์ „๋ฌด"์ž…๋‹ˆ๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜, ajax, ์ด๋ฒคํŠธ ๋“ฑ๋„ ํŽ˜์ด์ง€์— ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ ๋Š” ๋›ฐ์–ด๋‚œ DOM ์กฐ์ž‘์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋„ค, AMD๋Š” ์œˆ์œˆ์ž…๋‹ˆ๋‹ค. HTML5 Boilerplate๊ฐ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์•Œ๋ ค์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด AMD๋ฅผ ์ œ์™ธํ•˜๋Š” ๊ฒƒ์€ ๋ถ€๋„๋Ÿฌ์šด ์ผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. JavaScript์˜ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ์šฐ์•„ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

ํ™•์‹คํ•˜๊ฒŒ. ๋‚˜๋Š” ๋™์˜ํ•œ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ํ•„์š”๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๋“ค์ด ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์•„์ง AMD๊ฐ€ ๋ชจ๋“  ์ง„์ง€ํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•  ์œ ํ–‰์–ด๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ์ง€ ๋ชปํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ƒ์‚ฌ์™€ ํ–ฅํ›„ ์ธํ„ฐ๋ทฐ์—์„œ ์ž์‹ ์ด ์•Œ๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์„ ๋งํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์šฐ๋ฆฌ์˜ ๋ชซ์„ ๋‹คํ•˜๊ณ  "์‰ฝ๊ณ  ๋” ์ข‹๊ณ  ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๊ณ  ์œ ํ–‰์–ด๋กœ ๋งŒ๋“ ๋‹ค๋ฉด ๋ฌด๋ฆฌ๋Š” ์ž์‹ ์˜ ๊ฒฝ๋ ฅ์„ ์œ„ํ•ด ๋”ฐ๋ผ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@jashkenas--

์ฒซ ๋ฒˆ์งธ๋Š” ๋งˆํฌ์—…์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋™์  ์Šคํฌ๋ฆฝํŠธ ์š”์†Œ์™€ ๊ฐ™๊ฑฐ๋‚˜ ๋” ์ข‹์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค, ๋‚˜๋Š” ๋™์  ์Šคํฌ๋ฆฝํŠธ ์š”์†Œ ๋กœ๋”ฉ์ด ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ณด๋‹ค ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์ด๋Œ์–ด๋‚ผ ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ๋ชจ๋‘๊ฐ€ ๋™์˜ํ•œ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ์ด ์Šค๋ ˆ๋“œ์— ์ฐธ์—ฌํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ @paulirish ์™€ @slexaxton ์€ ๋ชจ๋‘ _this_ ์Šค๋ ˆ๋“œ์—์„œ ์ด๋Ÿฌํ•œ ๊ฐ€์ •์— ์˜๋ฌธ์„ ์ œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@paulirish ๋Š” defer ๊ฐ€ ์ผ๋ฐ˜ ol' ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ๋™์  ์Šคํฌ๋ฆฝํŠธ ์š”์†Œ ๋กœ๋”ฉ ๋Œ€์•ˆ๋ณด๋‹ค ์ข‹๊ฒŒ(๋˜๋Š” ๋” ์ข‹๊ฒŒ) ๋งŒ๋“œ๋Š” ์ถฉ๋ถ„ํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” defer ๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์ด์ œ ๊ทธ ์ด์œ ๋ฅผ ๋ช‡ ๊ฐ€์ง€ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์„ ๊ฒ€ํ† ํ•˜๊ณ  defer ๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋ณด๋‹ค ๋‚˜์€์ง€ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ํƒ€๋‹นํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. defer ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ œํ•œ๋œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜ํ™”๋œ ๊ฒฝ์šฐ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋Š” ๋ชจ๋“  ๋‹จ์ ์„ ์ฒ˜๋ฆฌ/์ •๊ทœํ™”ํ•˜๋Š” ๋ฐ˜๋ฉด defer ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์— ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด defer ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์ด์œ ๋ฅผ ๋ณด๊ฑฐ๋‚˜ ๋™์˜ํ•˜๋Š”์ง€ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ณตํ•˜๊ธฐ ์œ„ํ•ด, ์—ฌ๊ธฐ์— (๊ณต์ •ํ•œ) ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ 5๊ฐœ์˜ ์‹ค์ œ ์Šคํฌ๋ฆฝํŠธ, ๋‹ค๋ฅธ ์ž์‚ฐ์ด ์žˆ๋Š” ์ค‘๊ฐ„ ํฌ๊ธฐ ํŽ˜์ด์ง€์— ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๋กœ๋“œ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด LABjs ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์—ฐ๊ฒฐ๋œ ๋‹จ์ผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‹น์‹ ๊ณผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ž˜๋ชป๋œ ํ…Œ์ŠคํŠธ ์ „์ œ์ž…๋‹ˆ๋‹ค. ์ €๋Š” 1๊ฐœ ๋Œ€์‹  5๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ๋” ๋น ๋ฅผ ๊ฒƒ์ด๋ผ๊ณ  ์ฃผ์žฅํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ ˆ๋Œ€. ํ•ญ์ƒ. ๋” ๋ช…ํ™•ํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ „์ œ๋Š” 5 ๋Œ€ 1์ด ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ๋Š” 3๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์™€ 3๊ฐœ์˜ script() ํ˜ธ์ถœ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์ด ๊ณต์ •ํ•œ ํ…Œ์ŠคํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋น„๋””์˜ค์™€ ํ…Œ์ŠคํŠธ๋Š” ๊ทธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์ด ์œ ์ตํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ, ๊ทธ๋ฆฌ๊ณ  ํ›จ์”ฌ ๋” ๋ณต์žกํ•œ ํ…Œ์ŠคํŠธ ์งˆ๋ฌธ์€ ์ด๋ฏธ ๋ชจ๋“  JS๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๋กœ๋“œํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์ดํŠธ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์„ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋™์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ฐธ๊ณ : ์ด ์งˆ๋ฌธ์ด ์ง๊ตํ•˜๋Š” ์ด์œ ๋Š” ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ document.createElement("script") ์œ ํ˜• ๋™์  ๋กœ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋‹จ์ผ ์—ฐ๊ฒฐ ํŒŒ์ผ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์–ด๋Š ์ชฝ์ด๋“  ๋‹จ์ผ concat ํŒŒ์ผ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์€ ์œ ํšจํ•œ ์งˆ๋ฌธ์ด์ง€๋งŒ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ๋˜๋Š” ๋™์  ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ์ด ๋” ๋‚˜์€์ง€ ์—ฌ๋ถ€์™€๋Š” ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์™€ ๋‹ค๋ฅธ ๋งŽ์€ ์ปจํ…์ŠคํŠธ(์ฃผ์ œ์— ๋Œ€ํ•œ ๋ชจ๋“  ํšŒ์˜, ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ ๋“ฑ ํฌํ•จ)์—์„œ ์ œ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋งํ•˜๋Š” ๊ฒƒ์„ ๋“ค์—ˆ์„ ๋•Œ ๋‹จ์ผ JS ํŒŒ์ผ ์—ฐ๊ฒฐ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. "์ฒญํฌ"(ํฐ ์—ฐ๊ฒฐ ํŒŒ์ผ์„ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ)๋ฅผ 2๊ฐœ ๋˜๋Š” 3๊ฐœ์˜ ์ฒญํฌ๋กœ(์ตœ๋Œ€) ์ชผ๊ฐœ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. ์ฒญํฌ๊ฐ€ ~๊ฐ™์€ ํฌ๊ธฐ์ด๊ณ  ๋ณ‘๋ ฌ๋กœ ๋กœ๋“œ๋˜๋Š” ๊ฒฝ์šฐ "Keep-Alive" ์—ฐ๊ฒฐ, ๋ณ‘๋ ฌ ๋กœ๋“œ ํšจ๊ณผ ๋“ฑ์œผ๋กœ ์ธํ•ด ์ถ”๊ฐ€ HTTP ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ๋”๋ผ๋„ ํŽ˜์ด์ง€๊ฐ€ ๋” ๋นจ๋ฆฌ ๋กœ๋“œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์ €๋Š” LABjs์˜ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค ์งํ›„์ธ 2009๋…„ 11์›”์— ์ด ์ฃผ์ œ์— ๋Œ€ํ•ด ๊ธ€์„ ์“ฐ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. http://blog.getify.com/2009/11/labjs-why-not-just-concat/

๊ทธ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์—์„œ, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ดํ›„๋กœ ์ €๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๋Š” ์œ„์น˜์— ์žˆ๋‹ค๋ฉด(๋ชจ๋“  ์‚ฌ๋žŒ์ด... ์‚ฌ์‹ค, ๋Œ€๋ถ€๋ถ„์˜ ์›น์ด ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ) ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ. ๊ธฐ๊ฐ„. ์–ธ์ œ๋‚˜. ํ•ญ์ƒ 10-20๊ฐœ์˜ ๋กœ์ปฌ ํŒŒ์ผ์—์„œ ํ›จ์”ฌ ์ ์€ ์ˆ˜๋กœ ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹จ์ผ ์—ฐ๊ฒฐ ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ๋‹จ์ผ ํŒŒ์ผ์„ 2-3๊ฐœ์˜ ์ฒญํฌ๋กœ ๋ณ‘๋ ฌ๋กœ ๋กœ๋“œํ•˜๊ณ (์Šคํฌ๋ฆฝํŠธ ๋กœ๋” ์‚ฌ์šฉ) ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋” ๋‚˜์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์— ๊ทธ๊ฒƒ์„ ๋‚˜์—ดํ–ˆ์ง€๋งŒ ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ :

  1. ๋ณ‘๋ ฌ ๋กœ๋”ฉ ํšจ๊ณผ๋Š” ์‹ค์ œ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด bit-torrent ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌธ์˜ํ•˜์‹ญ์‹œ์˜ค. HTTP ์˜ค๋ฒ„ํ—ค๋“œ๋„ ์‹ค์ œ์ ์ด๋ฉฐ ์ด์— ๋Œ€์‘ํ•˜์—ฌ ๊ทธ ์ด์ ์„ ์ œ๊ฑฐํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด ์ด์ต์„ ์–ป๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ Keep-Alive๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 2-3๊ฐœ์˜ ๋™์‹œ ์—ฐ๊ฒฐ์„ ์–ป์„ ์ˆ˜ ์žˆ๊ณ (2-3๊ฐœ์˜ ์ „์ฒด ์—ฐ๊ฒฐ ์˜ค๋ฒ„ํ—ค๋“œ ํŒจ๋„ํ‹ฐ ์—†์ด) ๋” ์งง์€ ์‹œ๊ฐ„์— ์ฝ”๋“œ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 3๊ฐœ์˜ ์ฒญํฌ๋กœ ๋กœ๋“œํ•˜๋ฉด 1/3(60-70% ๋” ๋น ๋ฆ„)์ด ๋ ๊นŒ์š”? ์•„๋‹™๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 20-30% ๋” ๋น ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋‹จ์ผ ํŒŒ์ผ์—์„œ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•˜๋ฉด ๋‹ค๋ฅธ ์ˆ˜๋ช… ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์บ์‹œ ํ—ค๋”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, jquery๋Š” ๋งค์šฐ ์•ˆ์ •์ ์ด๋ฉฐ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์ดํŠธ์˜ UX ์ค‘์‹ฌ ์ฝ”๋“œ๋Š” ๋งค์šฐ ๋ณ€๋™์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ผ์ฃผ์ผ์— ํ•œ ๋ฒˆ ์ด์ƒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Œ). ๋‹จ์ผ concat ํŒŒ์ผ์—์„œ ์งง์€ ์บ์‹ฑ ํ—ค๋”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆํ•„์š”ํ•œ ์•ˆ์ •์ ์ธ ์ฝ”๋“œ๋ฅผ ๋” ์ž์ฃผ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ concat ํŒŒ์ผ์—์„œ ๊ธด ์บ์‹ฑ ํ—ค๋”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋„ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์บ์‹œ๋œ ํŒŒ์ผ(cache bust param ๋“ฑ)์„ ๋ฌดํšจํ™”ํ•˜๊ณ  ์ „์ฒด ํŒŒ์ผ์„ ๊ฐ•์ œ๋กœ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋” ํœ˜๋ฐœ์„ฑ ์ฝ”๋“œ. ๋”ฐ๋ผ์„œ ํฐ concat ํŒŒ์ผ์„ 2๊ฐœ์˜ ์ฒญํฌ๋กœ ์ฒญํฌํ•˜๋ฉด ํ•˜๋‚˜๋Š” ์•ˆ์ •์ ์ธ ์ฝ”๋“œ์šฉ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ํœ˜๋ฐœ์„ฑ ์ฝ”๋“œ์šฉ์œผ๋กœ ๊ฐ ์ฒญํฌ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์บ์‹ฑ ํ—ค๋”๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์บ์‹œ๋ฅผ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ดํŠธ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐฉ๋ฌธํ•  ๋•Œ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ž ์žฌ์ ์œผ๋กœ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์—ฐ๊ตฌ์— ๋”ฐ๋ฅด๋ฉด ํ‰๊ท ์ ์œผ๋กœ ๋‹จ์ผ ํŽ˜์ด์ง€ ์กฐํšŒ๋Š” ํŽ˜์ด์ง€์— ๋กœ๋“œ๋˜๋Š” JS์˜ 100% ๋ฏธ๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค(์ผ๋ถ€ ์ถ”์‚ฐ์— ๋”ฐ๋ฅด๋ฉด ์ฝ”๋“œ์˜ ์•ฝ 20-30%). ํŽ˜์ด์ง€ ๋กœ๋“œ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ์— ๋ชจ๋‘ ๋กœ๋“œํ•˜๋ฉด ํ•„์š”ํ•˜์ง€ ์•Š์€ ํŒŒ์ผ์˜ 70-80%๋ฅผ ํ‘ธ์‹œํ•˜๊ธฐ ์œ„ํ•ด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ค„์„ ํ˜ผ์žกํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ 2๊ฐœ์˜ ์ฒญํฌ๋กœ ๋˜์–ด ์žˆ๊ณ (ํ•˜๋‚˜๋Š” ๋” ์ค‘์š”ํ•œ ์ฝ”๋“œ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋œ ์ค‘์š”ํ•œ ์ฝ”๋“œ) ์ฒซ ๋ฒˆ์งธ ์ฒญํฌ๋ฅผ ์ฆ‰์‹œ ๋กœ๋“œํ•˜๊ณ  ํŽ˜์ด์ง€ ๋กœ๋“œ ํ›„ ๋ช‡ ์ดˆ ํ›„์— ๋‘ ๋ฒˆ์งธ ์ฒญํฌ๋ฅผ ๋กœ๋“œํ•˜๋ฉด ํ›จ์”ฌ ๋” ์ค‘์š”ํ•œ ์ด๋ฏธ์ง€/css ๋ฐ ์ฝ˜ํ…์ธ ๋ฅผ ์œ„ํ•œ ํŒŒ์ดํ”„์ž…๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ ์ฒญํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์€... concat ๋Œ€ ๋ณ‘๋ ฌ์˜ ์ฃผ์ œ์— ๋Œ€ํ•ด... ๋‚˜๋Š” _ํ•ญ์ƒ_ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค.

@getify ์ž˜ ๋งํ–ˆ๋‹ค.

Kyle์˜ LABjs๊ฐ€ ์ œ ์ง€์›์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์ดํŠธ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋•๋Š” ์ปจ์„คํ„ดํŠธ๋กœ์„œ ์ €๋Š” LABjs๊ฐ€ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ(100ms๊ฐ€ ์•„๋‹ˆ๋ผ 1์ดˆ ์ด์ƒ) ๊ฐœ๋ฐœ์ž๋“ค๋„ ์ข‹์•„ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์ด ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด "Kyle์—๊ฒŒ LABjs์— ๋Œ€ํ•œ ํฐ ์ง€์›์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ œ ๊ธฐ๋Œ€์น˜๋ฅผ ๋ช‡ ๋ฒˆ์ด๋‚˜ ์ดˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค."๋ผ๊ณ  ๊ณต๊ฐœ์ ์œผ๋กœ ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ Keep-Alive๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 2-3๊ฐœ์˜ ๋™์‹œ ์—ฐ๊ฒฐ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(2-3๊ฐœ์˜ ์ „์ฒด ์—ฐ๊ฒฐ ์˜ค๋ฒ„ํ—ค๋“œ ํŒจ๋„ํ‹ฐ ์—†์ด).

HTTP๋Š” ์‘๋‹ต์„ mux/interleaveํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋จผ์ € ์—ฌ๋Ÿฌ ์—ฐ๊ฒฐ์„ ์—ด์ง€ ์•Š๊ณ  ๋ณ‘๋ ฌ ๋‹ค์šด๋กœ๋“œ๋ฅผ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜๊ตฌ ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ ์—ฐ๊ฒฐ์˜ ์ด์ƒ์ ์ธ ๊ฒฝ์šฐ๋Š” ๋‹จ์ผ ํŒŒ์ผ(+ ์†Œ์ˆ˜์˜ ํ—ค๋”)์„ ์—ฐ์†์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@ํฌ๋ฅด๋„ฌ--

์ €๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹จ์ผ ์„œ๋ฒ„์— ๋Œ€ํ•ด ๋ณ‘๋ ฌ๋กœ ์—ฌ๋Ÿฌ ์—ฐ๊ฒฐ์„ ์—ด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ง์ ‘ ๋ณด์•˜๊ณ  ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ์œ ์ง€๊ฐ€ ์ž‘๋™ํ•˜๋ฉด ๋‘ ๋ฒˆ์งธ ๋ฐ ์„ธ ๋ฒˆ์งธ ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์—ฐ๊ฒฐ๋ณด๋‹ค ํ›จ์”ฌ ์ ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ๋งํ•˜๋Š” ํšจ๊ณผ์ž…๋‹ˆ๋‹ค.

@getify Fantastic, ์ €๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ผ์ข…์˜ ํ•ฉ์˜์— ๋„๋‹ฌํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์–ต์„ ์ƒˆ๋กœ ๊ณ ์น˜๋ ค๋ฉด:

๋‚˜๋Š” ๋‹น์‹ ์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์กฐ๊ธˆ์”ฉ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋ฐ˜๋ก ์„ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...
๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ๊ธฐ์ˆ ๊ณผ ์™„์ „ํžˆ ์ง๊ตํ•˜๋ฏ€๋กœ ์ƒ๋žตํ•˜์‹ญ์‹œ์˜ค.
ํ† ๋ก ์˜.

์˜ˆ, ์˜๊ตฌ ์Šคํฌ๋ฆฝํŠธ์™€ ๋‹ค๋ฅธ JS ํŒŒ์ผ์—์„œ ํœ˜๋ฐœ์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ํŽ˜์ด์ง€์—๋งŒ ํ•„์š”ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•ด๋‹น ํŽ˜์ด์ง€์—๋งŒ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์›น ๊ฐœ๋ฐœ์ž์ด๊ณ  ๋งŽ์€ JavaScript๊ฐ€ ํฌํ•จ๋œ ํŽ˜์ด์ง€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? LABjs๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์˜๊ตฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์—ฐ๊ฒฐํ•˜๊ณ  ํœ˜๋ฐœ์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค๋ฅธ ํŒŒ์ผ์— ์—ฐ๊ฒฐํ•˜๊ณ  <script defer="true"> body ํƒœ๊ทธ์˜ ๋งจ ์•„๋ž˜์— ๋‘˜ ๋‹ค ๋กœ๋“œํ•ฉ๋‹ˆ๊นŒ?

์™œ ๋‚ด ์•ฑ์ด ์บ์‹ฑ ๋ฌธ์ œ, ๋ธŒ๋ผ์šฐ์ € ๋น„ํ˜ธํ™˜์„ฑ, ํŽ˜์ด์ง€ ์ƒ์˜ ์ด๋ฏธ์ง€ ๊ฒฝ์Ÿ, ๊ทธ๋ฆฌ๊ณ  ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ๊ฐ€์ ธ์˜ค๋Š” ๋‚˜๋จธ์ง€ ๋ฌธ์ œ์— ๋…ธ์ถœ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์„ฑ๋Šฅ์„ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ „์ฒด ์ „์ œ๊ฐ€ ๋‘ ๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋ผ๋ฉด ... ๋ธŒ๋ฃจํด๋ฆฐ์—์„œ ํŒ๋งคํ•  ๋‹ค๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@getify ๋Š” ์›น ์„œ๋ฒ„๋ฅผ ๋‘ ๋ฒˆ ์ด์ƒ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ์œ ์ง€๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ๋™์‹œ ์š”์ฒญ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉฐ ํ›„์† ์š”์ฒญ์˜ ๋น„์šฉ๋งŒ ์ ˆ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ์œ ์ง€๊ฐ€ ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ํ›„์† ์š”์ฒญ์ด ์žˆ๋Š” ๋ถ„ํ•  ๋ณธ๋ฌธ์€ ๋‹จ์ผ ์š”์ฒญ๋ณด๋‹ค ์—ฌ์ „ํžˆ ๋น„์Œ‰๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ๋ณธ๋ฌธ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋‘ ๊ฐœ์˜ ๋™์‹œ ์š”์ฒญ์ด ์žˆ์œผ๋ฉด ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €๋Š” ์ œํ•œ๋œ ์ˆ˜์˜ ๋™์‹œ ์š”์ฒญ(๋ธŒ๋ผ์šฐ์ € ๋ฐ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ์•ฝ 5๊ฐœ ์ •๋„)๋งŒ ์—ด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์—ผ๋‘์— ๋‘์‹ญ์‹œ์˜ค. ์„ธ ๊ฐœ์˜ js ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ @jashkenas ๊ฐ€ ๋‘ ๋ฒˆ ์ด์ƒ ์ง€์ ํ–ˆ๋“ฏ์ด ์ด๋ฏธ์ง€ ๋˜๋Š” CSS ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์ž์‚ฐ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

@jashkenas-

๋‚ด๊ฐ€ ์›น ๊ฐœ๋ฐœ์ž์ด๊ณ  ๋งŽ์€ JavaScript๊ฐ€ ํฌํ•จ๋œ ํŽ˜์ด์ง€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? LABjs๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์˜๊ตฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์—ฐ๊ฒฐํ•˜๊ณ  ํœ˜๋ฐœ์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค๋ฅธ ํŒŒ์ผ์— ์—ฐ๊ฒฐํ•˜๊ณ  <script defer="true">๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ body ํƒœ๊ทธ ๋งจ ์•„๋ž˜์— ๋‘˜ ๋‹ค ๋กœ๋“œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

TL;DR: ๋‘˜ ๋‹ค

์ฒซ์งธ, ์›น์˜ ๋งŽ์€ ์‚ฌ์ดํŠธ๊ฐ€ CMS๋กœ ์กฐํ•ฉ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ธ๋ผ์ธ ์Šคํฌ๋ฆฝํŠธ ๋ธ”๋ก์ด ํŽ˜์ด์ง€ ์ „์ฒด์— ํฉ์–ด์ ธ ์žˆ๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ฉฐ "๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ์ด๋™"์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์œ ์ง€ ๊ด€๋ฆฌ ์ธก๋ฉด์—์„œ ํ•ด๊ฒฐํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ _๋Œ€๋ถ€๋ถ„์˜_ ์‚ฌ์ดํŠธ๊ฐ€ ๋‹ค๋ฅธ ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋กœ๋“œ ๋ฐ ์‹คํ–‰๋œ ํ›„ ์‹คํ–‰ํ•  "์ธ๋ผ์ธ ์ฝ”๋“œ" ์—†์ด๋„ ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ „์ œ๋Š” ๊ธฐ๊ปํ•ด์•ผ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‘˜์งธ, ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ €์—์„œ defer ๊ฐ€ DOMContentLoaded ์— ๋Œ€ํ•ด ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ DOM ์ค€๋น„๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋˜๊ณ  ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” DOM ์ค€๋น„ ์ดํ›„์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. DOM ์ค€๋น„ ์ „ํ›„์— ๋ฐœ์ƒํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์— ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ defer ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ๋‚˜ ์˜คํ•ด์™€ ํ˜ผ๋ž€์ด ๋งŽ์€ ๋ฏผ๊ฐํ•œ ๋ถ€๋ถ„์ด๋ผ ๊ธˆ์„ธ "๋‹จ์ˆœํ•œ ํ•ด๋ฒ•์ด ์•„๋‹ˆ๋‹ค"๋ผ๋Š” ๋ง์ด ๋‚˜์˜ค๋Š” ๊ฒŒ ์‚ฌ์‹ค์ด๋‹ค. ํ›จ์”ฌ ๋” ๋งŽ์€ ์ƒ๊ฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์…‹์งธ, ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ž์‹ ์˜ ๋งˆํฌ ์—…์„ ๋ณ€๊ฒฝ, ์‚ฌ์ดํŠธ์˜ ๋งŽ์€์— ๋Œ€ํ•œ ์ƒ๊ฐ $LAB.script() ๋Œ€์‹  &lt;script> ์— ์ผ๋ถ€ ์ž๋™ (๋˜๋Š” ์ˆ˜๋™) bulid ๊ณผ์ •์„ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ทธ๋“ค์—๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ์‰ฝ๊ฒŒ ๋งŽ์€ ๊ทธ๋“ค์˜ ์„ฌ๊ธฐ๋Š” ์‚ฌ๋žŒ. ํŠนํžˆ ํ•ด๋‹น ์‚ฌ์ดํŠธ๊ฐ€ ๊ณต์œ  ํ˜ธ์ŠคํŒ…(๋Œ€๋ถ€๋ถ„์˜ ์›น์ด ์žˆ์Œ)์— ์žˆ๊ณ  ์„œ๋ฒ„์˜ ๋งŽ์€ ๋ถ€๋ถ„์„ ์‹ค์ œ๋กœ ์ œ์–ดํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ์„ฑ์ด ์†์‹ค๋˜์ง€ ์•Š๋„๋ก ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํŒŒ์•…ํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์€... ๊ธ€์Ž„์š”. .. ์‚ฌ์†Œํ•˜์ง€ ์•Š์€.

์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๋„ค. ๋ฌผ๋ก  ๊ทธ๋“ค์€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š”(DOM ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ๊ณผ ๊ฐ™์€) ์‹ค์ œ๋กœ ์ฝ”๋“œ๋ฅผ ํž˜๋“ค๊ฒŒ ์กฐ์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์„ ์ •๋ฆฌํ•˜๋ ค๋ฉด ์ด ๋ถ„์•ผ์—์„œ ํ—Œ์‹ ์ ์ธ ๋…ธ๋ ฅ๊ณผ ๋งŽ์€ ์ „๋ฌธ ์ง€์‹๊ณผ ์—ด์ •์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์กฐ์ ์œผ๋กœ &lt;script> ํƒœ๊ทธ ๋Œ€์‹  LABjs์—์„œ "๋น ๋ฅธ ์Šน๋ฆฌ"๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๊ฐํ•ด์•ผ ํ•  ๊ฒƒ์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค( document.write() ์ œ์™ธ). ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ "๊ทธ๋ƒฅ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค". ๊ทธ๋ฆฌ๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํŽ˜์ด์ง€ ๋กœ๋“œ ์†๋„๊ฐ€ ์ฆ‰์‹œ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์ดํŠธ์—์„œ ์ด๋Š” ํฐ ์Šน๋ฆฌ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•ด, ์ œ๊ฐ€ ์ „์— ๋งํ–ˆ๋“ฏ์ด, ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ๋ฅผ ํ•˜๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋จผ์ € LABjs์— ๋“œ๋กญํ•˜๊ณ , ์ฆ‰๊ฐ์ ์ธ ์†๋„ ์ฆ๊ฐ€๋ฅผ ๋ณด์‹ญ์‹œ์˜ค. ์ด์ œ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 15๊ฐœ ํŒŒ์ผ์—์„œ 2๊ฐœ ํŒŒ์ผ(1๊ฐœ ํŒŒ์ผ์€ ๋ฐ˜๋กœ ์ชผ๊ฐœ์ง)๋กœ ์ด๋™ํ•˜๋Š” ์ด์ ์„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡๊ฒŒ ํ•  ๋•Œ(๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ๋Œ€๋ถ€๋ถ„์€ ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค) ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ •๋ง ์›ํ•˜๋ฉด LABjs๋ฅผ ๋ฒ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ ํ•ด๋Š” ์—†์Šต๋‹ˆ๋‹ค(๋ชจ๋ฐ”์ผ์—์„œ๋„ ์ž‘๊ณ  ์บ์‹œ๊ฐ€ ์ž˜ ๋จ). ๋‘ ํŒŒ์ผ ์ฒญํฌ๋ฅผ ๊ณ„์† ์ž˜ ๋กœ๋“œํ•˜๊ณ  defer ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ์—†์ด ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ LABjs๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ๋‚˜์ค‘์— "๊ฒŒ์œผ๋ฅธ/์ฃผ๋ฌธํ˜• ๋กœ๋“œ"ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š” 3๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ฆฌ์„๊ฒŒ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ๋กœ๋” ์—†์ด๋Š” ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. LABjs๊ฐ€ ์ด๋ฏธ ์žˆ๊ณ  ์นœ์ˆ™ํ•˜๋‹ค๋Š” ๊ฒƒ์€ ํ•ด๋‹น ์ฃผ๋ฌธํ˜• ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ „ํ˜€ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

@rkh--

(ํŠนํžˆ Apache์—์„œ Keep-Alive ์„ค์ •์„ ํ† ๊ธ€ํ•˜์—ฌ) ์—ฌ๋Ÿฌ ๋ณ‘๋ ฌ ์š”์ฒญ์ด ์–ด๋–ป๊ฒŒ ์˜ํ–ฅ์„ ๋ฐ›์•˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค(Keep-Alive๊ฐ€ ์žˆ์„ ๋•Œ ๊ธ์ •์ ์œผ๋กœ). ์ €๋Š” ์ด ๋ถ„์•ผ์˜ ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋…ผํ•˜๋Š” ๊ฒƒ์€ ์ œ ๋ชซ์ž…๋‹ˆ๋‹ค. Keep-Alive๊ฐ€ ์žˆ์„ ๋•Œ ์š”์ฒญ #2์˜ ํƒ€์ด๋ฐ์ด ์š”์ฒญ #1์˜ ํƒ€์ด๋ฐ๋ณด๋‹ค ์ ์—ˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•œ ๋ฐฉ๋ฒ•์€ ๋ถ€๋ถ„์ ์œผ๋กœ๋งŒ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ ์œ ์ง€๊ฐ€ ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ํ›„์† ์š”์ฒญ์ด ์žˆ๋Š” ๋ถ„ํ•  ๋ณธ๋ฌธ์€ ๋‹จ์ผ ์š”์ฒญ๋ณด๋‹ค ์—ฌ์ „ํžˆ ๋น„์Œ‰๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‘ ๋ฒˆ์งธ ์š”์ฒญ์ด ๋ฌด๋ฃŒ๋ผ๊ณ  ์ฃผ์žฅํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‘ ๋ฒˆ์งธ ์š”์ฒญ์ด ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ๋งŒํผ ๋น„์‹ธ์ง€ ์•Š๋‹ค๊ณ  ์ฃผ์žฅํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ ์–ด๋„ ํ•˜๋‚˜์˜ ์š”์ฒญ์ด ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ ๋‘ ๋ฒˆ์งธ ์š”์ฒญ์„ ๋ณ‘๋ ฌ๋กœ ๊ฐ–๋Š” ๊ฒƒ์€ ์˜ค๋ฒ„ํ—ค๋“œ ๋˜๋Š” ์‹œ๊ฐ„ ๋น„์šฉ ์ธก๋ฉด์—์„œ ๋™์ผํ•œ ์„œ๋ฒ„์— ๋Œ€ํ•ด ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ๋‘ ์—ฐ๊ฒฐ์„ ๊ฐ–๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋Œ€๋กœ ์š”์ฒญ #1์€ ์„œ๋น„์Šค์— ๋Œ€ํ•œ X์ด๊ณ  #2๋Š” Keep-Alive์™€ ๋ณ‘ํ–‰ํ•˜์—ฌ 0.7X์ธ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ๋‘ ๋ฒˆ์งธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ๊ธฐ์กด ์—ฐ๊ฒฐ ์˜ค๋ฒ„ํ—ค๋“œ ์ค‘ ์ผ๋ถ€๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๋น„์šฉ์ด ์กฐ๊ธˆ ๋” ์ €๋ ดํ•ด์ง„๋‹ค๊ณ  ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ์œ ์ง€๊ฐ€ ํ•ด์ œ๋œ ์ƒํƒœ์—์„œ ๋‘ ๋ฒˆ์งธ ์š”์ฒญ์—๋Š” ์ธก์ • ๊ฐ€๋Šฅํ•œ ๊ฐ์†Œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.


์ด ๋ชจ๋“  ํ† ๋ก ์€ ์‹ฌ๊ฐํ•˜๊ฒŒ ๊นŠ์€ ํ† ๋ผ ๊ตฌ๋ฉ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์„œ๋ฒ„ ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ํ•„์š” ์—†์–ด ๋‚˜๋Š” ์ด ์ •ํ™•ํ•œ ์ฃผ์ œ์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ๋ณด์•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋Š” ๊ฒƒ๋งŒ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค... ๋‹จ์ผ 100k ํŒŒ์ผ ๋กœ๋“œ ์‹œ๊ฐ„๊ณผ ๋™์ผํ•œ ํŒŒ์ผ์˜ ๋‘ ์ ˆ๋ฐ˜์„ ๋ณ‘๋ ฌ๋กœ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‘ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ๋Š” ์ธก์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ธˆ์•ก์ด ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด, ๋‚˜๋Š” ์ฒญํฌ ์ธ ๋ณ‘๋ ฌ ํ…Œ์ŠคํŠธ์—์„œ 15-25% ๋” ๋น ๋ฅธ ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ํ–ˆ๊ณ  ๋”์ฐํ•œ "OMG HTTP RESPONSE OVERHEAD IS TERRIBLE" ํšจ๊ณผ๋ฅผ ์–ด๋–ป๊ฒŒ๋“  ๋”ฐ๋ผ์žก์•˜๊ณ  ์—ฌ์ „ํžˆ ๋‘ ๊ฐœ์˜ ๋ณ‘๋ ฌ ๋กœ๋”ฉ์˜ ์ด์ ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ณผํ•™์ ์œผ๋กœ ์ฆ๋ช…ํ•  ์ž๊ฒฉ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๊ด€์ฐฐ์— ์˜ํ•ด ํ™•์‹คํžˆ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๋ง™์†Œ์‚ฌ, ๋นจ๋ฆฌ ํƒ€์ž. ์ฝ๊ธฐ๋ฅผ ๋งˆ์น˜๊ณ  ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ๋Œ“๊ธ€์ด 9๊ฐœ ๋” ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์ด ํ•„์š”ํ•ด ๋‚˜๋Š” ์ด ์Šค๋ ˆ๋“œ์—์„œ _๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ HTML ํŒŒ์ผ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ฒƒ_์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ _์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์Šค๋„ค์ดํฌ ์˜ค์ผ_์ธ์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•œ ์ •ํ™•ํ•œ ์œ„์น˜๋ฅผ ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.

@getify , ๋‹น์‹ ์€ ํ™•์‹คํžˆ LABjs๋ฅผ ๋ฐฉ์–ดํ•˜๊ณ  ์Šค๋ ˆ๋“œ์—์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ํ•œ ํŠน์ • ๋น„ํŒ์— ์‘๋‹ตํ•ด์•ผ ํ•˜์ง€๋งŒ (@jashkenas ์ œ์™ธ) LABjs๋ฅผ ๋น„ํŒํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์ด ์ƒ์šฉ๊ตฌ์— ๋Œ€ํ•œ ์ตœ์ƒ์˜ ์†”๋ฃจ์…˜์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. script[defer] ๋ณด๋‹ค๋Š” ๋ ˆ๊ฑฐ์‹œ ํŽ˜์ด์ง€๋ฅผ LABjs๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š”๋ฐ ๊ทธ๊ฒƒ์ด ์‚ฌ์‹ค์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ƒ์šฉ๊ตฌ HTML ํŒŒ์ผ(์ •์˜์ƒ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘)์— ์ ์šฉ๋ฉ๋‹ˆ๊นŒ?

๋‹น์‹ ์€ ๊ทธ๊ฒƒ์ด ๋ฉ‹์ง„ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค๊ณ  ๋งํ•˜์ง€๋งŒ, ๋‹น์‹ ์€ ๋˜ํ•œ ์—ฐ๊ฒฐ, ๋™์ผํ•œ ํฌ๊ธฐ์˜ ์ฒญํฌ๋กœ ๋ถ„ํ•  ๋ฐ ๋ณ‘๋ ฌ ๋กœ๋”ฉ์„ ์˜นํ˜ธํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ์˜ ์ž‘์—…์ด ์•„๋‹Œ๊ฐ€์š”? ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง€๋Šฅํ˜• ๊ธฐ๋ณธ๊ฐ’์„ ์ œ๊ณตํ•˜๋„๋ก ์„ค๊ณ„๋œ ์ƒ์šฉ๊ตฌ์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ์„ ํƒ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ 20-30% ์†๋„ ์ฆ๊ฐ€๋ฅผ ์›ํ•˜๋ฉด ์ƒ์šฉ๊ตฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚˜์ค‘์— ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋„๋ก ์„ ํƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Š” ์‚ฌ์†Œํ•œ ์ž‘์—…์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์„ ๋งํ–ˆ์ง€๋งŒ ์—ฌ๋Ÿฌ๋ถ„์ด ์ผ๋ฐ˜์ ์ธ ์ฃผ์ œ("์Šคํฌ๋ฆฝํŠธ ๋กœ๋”: ๊ท€์ค‘ํ•œ ๋„๊ตฌ ๋˜๋Š” ๋ฑ€ ๊ธฐ๋ฆ„?")๋กœ ๊ณ„์† ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ธฐ๊บผ์ด ํŒ์ฝ˜์„ ๋งŒ๋“ค๊ฒ ์Šต๋‹ˆ๋‹ค.

@getify : ๋‘ ๋ฒˆ์งธ ๋ฐ ์„ธ ๋ฒˆ์งธ ์—ฐ๊ฒฐ์ด ์ฒซ ๋ฒˆ์งธ ์—ฐ๊ฒฐ๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ์—ด๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์—ฐ๊ฒฐ์€ DNS๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์•„๋งˆ๋„ ์ฒซ ๋ฒˆ์งธ ํŒจํ‚ท์„ ์„œ๋ฒ„๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ๊ฒƒ์ด ๋‚˜๋จธ์ง€๋ฅผ ๋™์ผํ•œ ๊ฒฝ๋กœ๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์•ฝ๊ฐ„ ๋Š๋ฆฝ๋‹ˆ๋‹ค. HTTPS์—์„œ SSL ์„ธ์…˜ ์บ์‹œ๋Š” ํ›„์† ์—ฐ๊ฒฐ์— ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ด ์ƒํ™ฉ์—์„œ Keep-Alive์˜ ๊ด€๋ จ์„ฑ์„ ๋ณด์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ํ›„์† _requests_๋Š” Keep-Alive๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘๋˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์š”์ฒญ์€ ์—ฐ๊ฒฐ ๋‚ด์—์„œ ์ง๋ ฌ์ž…๋‹ˆ๋‹ค.

์ด์ œ ๊ฑฐ์˜ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ง‰ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”์™€ ๊ด€๋ จํ•˜์—ฌ "๋ฏธ์ณค๊ณ  ๋” ์ด์ƒ ์ฐธ์ง€ ์•Š์„ ๊ฒƒ"์ด๋ผ๋Š” ์ˆœ๊ฐ„์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธด ํ•˜์ง€๋งŒ, ํ™”์—ผ ์ถ•์ œ๋ฅผ ์œ„ํ•œ ์ด ์Šค๋ ˆ๋“œ๋Š” ์‹ค์ œ๋กœ ์ƒ๋‹นํžˆ ์ƒ์‚ฐ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. LABjs๊ฐ€ ๋ถˆ์šดํ•˜๊ณ  ๋ฌด๋Šฅํ•œ ์›น ์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ์ฃผ์žฅ์„ ํŽผ์น˜๊ณ  ์‹ค์ œ๋กœ ์‚ฌ์ดํŠธ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋กœ๋“œํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์„ ํ™€๋กœ ๋‚ด๋ฒ„๋ ค ๋‘๋ฉด ํฐ ์ง„์ „์ž…๋‹ˆ๋‹ค.

์นœ๊ตฌ, ์ง„์ •

@savetheclocktower--

๊ณต์ •ํ•œ ์งˆ๋ฌธ.

๋‚˜๋Š” LABjs(๋˜๋Š” ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”)๊ฐ€ h5bp์— ํฌํ•จ๋  ๊ฒƒ์„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์˜นํ˜ธํ•˜๋Š” ์ด ์Šค๋ ˆ๋“œ์— ์ฐธ์—ฌํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ(์•„๋ž˜ ์ฐธ์กฐ), ์ž ์ด ๋œ ๊นฌ ๊ฒƒ์€ ๋‚ด ์ฃผ์š” ๊ด€์‹ฌ์‚ฌ๊ฐ€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ์ด ์Šค๋ ˆ๋“œ๋Š” "์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ"์ธ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์ „๋ฉด์ ์ธ ๊ณต๊ฒฉ์œผ๋กœ ๋ณ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ๋‚ด๊ฐ€ ์กฐ๊ธˆ ๋” ์‹ ๊ฒฝ ์“ฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๊ทธ๊ฒƒ์ด ๋ฉ‹์ง„ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค๊ณ  ๋งํ•˜์ง€๋งŒ, ๋‹น์‹ ์€ ๋˜ํ•œ ์—ฐ๊ฒฐ, ๋™์ผํ•œ ํฌ๊ธฐ์˜ ์ฒญํฌ๋กœ ๋ถ„ํ•  ๋ฐ ๋ณ‘๋ ฌ ๋กœ๋”ฉ์„ ์˜นํ˜ธํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ์˜ ์ž‘์—…์ด ์•„๋‹Œ๊ฐ€์š”?

์ €๋Š” ๋จผ์ € ์ˆ˜์‹ญ ๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ๋ชจ๋‘ LABjs์™€ ๊ฐ™์€ ๋ณ‘๋ ฌ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ์ง€์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งˆํฌ์—…์„ ์กฐ์ •ํ•˜๋Š” ๋Šฅ๋ ฅ ์ด์ƒ์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด๊ฒƒ์€ mom&pop ์‚ฌ์ดํŠธ์— ์ž๋™ํ™”๋œ node.js ๊ธฐ๋ฐ˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ์‰ฝ๊ณ  ๋œ ์œ„ํ˜‘์ ์ธ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํŒŒ์ผ ๋นŒ๋“œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด LABjs๊ฐ€ ์ด๋Ÿฌํ•œ ์ฒญํฌ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋กœ๋“œํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ์ด์ ์ด ์žˆ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ฒญํฌ๊ฐ€ ์–ด๋–ค ์‹์œผ๋กœ๋“  ์œ ์šฉํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด defer ๋ณด๋‹ค LABjs๋ฅผ ์‚ฌ์šฉํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฒญํฌ๊ฐ€ _์œ ์šฉํ•œ_ ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์—์„œ _๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค_ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง€๋Šฅํ˜• ๊ธฐ๋ณธ๊ฐ’์„ ์ œ๊ณตํ•˜๋„๋ก ์„ค๊ณ„๋œ ์ƒ์šฉ๊ตฌ์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ์„ ํƒ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ ๋กœ๋”(ํŠนํžˆ LABjs์™€ ๊ฐ™์ด ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์™€ script() ํ˜ธ์ถœ ๊ฐ„์— ์ผ๋Œ€์ผ ๋งคํ•‘์„ ๊ฐ–๋„๋ก ์„ค๊ณ„๋œ)๊ฐ€ ์ƒ์šฉ๊ตฌ์—์„œ ์ด์ ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š” ์ƒ์šฉ๊ตฌ์—์„œ , ํƒœ๊ทธ์™€ ๊ฐ™์€ ๊ฒƒ์˜ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ž์ฃผ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝํ–ฅ์€ ํ•„์š”ํ•œ ๋งŒํผ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒ์šฉ๊ตฌ์— ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์€ ํŒจํ„ด(์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ)์ด ์žˆ์œผ๋ฉด ์‚ฌ๋žŒ๋“ค์€ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ์ˆ˜์‹ญ ๋ฒˆ ๋ณต์ œํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ‰๊ท ์ ์œผ๋กœ $LAB.script() ํ˜ธ์ถœ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณต์ œํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์˜ˆ์ „๋งŒํผ ๋‚˜์˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ์ด ์Šค๋ ˆ๋“œ์— ์ฐธ์—ฌํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ์œ ์ผํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ @paulirish ์˜ "๋งน๋ชฉ์ ์ธ ๋ฏฟ์Œ" ๋Œ“๊ธ€์„ ์—ฌ๊ธฐ ์Šค๋ ˆ๋“œ์—์„œ ๋ฌธ์ œ๋กœ

๊ทธ๋ ‡๊ตฐ์š”.


๋‚˜๋Š” ์ด ๋…ผ์˜๊ฐ€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๊ฐ€ h5bp ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€๋‚˜์ณ ๊ฐ”๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ฃผ์ œ๋Š” ํƒ์ƒ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ข‹์Šต๋‹ˆ๋‹ค.


์–ด์จŒ๋“  ์ €๋Š” ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์™€ ํ•จ๊ป˜ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋งค์šฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ @defer ์— ๋Œ€ํ•œ ์‚ฌ์–‘์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•จ๊ป˜ ์ œ๊ณตํ•˜๋Š” ์ผ๋ถ€ ๋ถˆ๊ทœ์น™ํ•œ ๋™์ž‘์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ ํ–‰๋™์€ ๋ฌธ์„œํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ค€๋น„๊ฐ€ ๋˜๋ฉด MDC๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์„ ๋„์™€๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €, ๋‹ค์–‘ํ•œ ์—ฐ๊ฒฐ ์œ ํ˜• ๋ฐ ๋„คํŠธ์›Œํฌ ํšจ๊ณผ๋ฅผ ์บก์ฒ˜ํ•˜๋Š” ์ด๋Ÿฌํ•œ ๋™์ž‘์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ๋ฌธ์„œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์žฅ๋น„๊ฐ€ cuzillion ๋˜๋Š” assetrace๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/paulirish/lazyweb-requests/issues/42์— ๋Œ€ํ•œ ๊ด€์‹ฌ์„ ๋ชจ์œผ๊ธฐ ์œ„ํ•ด ํ‹ฐ์ผ“์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

webperf ์—ฐ๊ตฌ ๋ฐ ์ฆ๊ฑฐ ๋ฌธ์„œํ™”๋ผ๋Š” _superfun_ ์ž‘์—…์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ์ €์™€ ํ•จ๊ป˜ ํ•˜์‹ญ์‹œ์˜ค.

์—ฌ๋Ÿฌ๋ถ„, ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋‹ซ์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ์‹œ๋‹ค.

@jrburke ๊ฐ€ ๊ทธ์˜ ์˜๊ฒฌ์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ง€์—ฐ ๋กœ๋”ฉ์€ AMD ๋ชจ๋“ˆ์˜ ํ•ต์‹ฌ ์ด์ ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ AMD ๋ชจ๋“ˆ์„ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ ์ฃผ๋œ ์ด์œ ๋Š” ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์†Œ์Šค ํŒŒ์ผ์„ ์ž‘๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์ค‘์— CSS @import ์‚ฌ์šฉํ•˜๊ณ  ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ๊ฒฐํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ์ž๋™ํ™”๋œ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๋„ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ๊ถŒ์žฅ๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค...

์ž‘๋…„์— ์“ด ์ด ๊ฒŒ์‹œ๋ฌผ์ด ๋‹ค์Œ ์ฃผ์ œ์— ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค . ์„ฑ๋Šฅ ๋„๊ทธ๋งˆ -

๊ทธ๋ฆฌ๊ณ  ์ €๋Š” @SlexAxton ๊ณผ ํ•จ๊ป˜ RequireJS ์˜ตํ‹ฐ๋งˆ์ด์ € Ant ์ž‘์—… ) ๋Œ€์‹  RequireJS ์˜ตํ‹ฐ๋งˆ์ด์ €๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ƒˆ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฝค ๋ฉ‹์ง€๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„, ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋‹ซ์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ์‹œ๋‹ค.

@paulirish AMD ์ง€์›์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์–ด๋””์—์„œ ๋…ผ์˜ํ•ด์•ผ ํ• ๊นŒ์š”?

@benatkin ์ƒˆ ํ‹ฐ์ผ“์„ ์—ฝ๋‹ˆ๋‹ค ํ˜•.

@paulirish ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. @jrburke ์‹œ์ž‘ํ•œ ํ† ๋ก ์„ ๊ณ„์†ํ•˜๋ ค๋ฉด ์ƒˆ ํ‹ฐ์ผ“์„ ์—ด์–ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์˜๊ฒฌ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ AMD ์ง€์› ์‚ฌ๋ก€๋ฅผ ์—ฌ๋Ÿฌ๋ถ„๋งŒํผ ์ž˜ ์ •๋ฆฌํ•  ์ˆ˜๋Š” ์—†์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์žฌ๋ฏธ์žˆ๊ณ  ์œ ์ตํ•œ ์ •๋ณด. ๊ณ ๋งˆ์›Œ ์–˜๋“ค์•„.

๋ˆ„๊ตฐ๊ฐ€ ์ƒˆ๋กœ์šด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋” ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  "Issue28"์ด๋ผ๊ณ  ์ด๋ฆ„์„ ์ง€์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. :)

๊ฐ€์žฅ ๊ด‘๋ฒ”์œ„ํ•œ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งจ ์•„๋ž˜์— ๋†“๊ณ , ์ถ•์†Œํ•˜๊ณ , gzipํ•˜๋ฉด ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฐ๊ธฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ ์–ด๋„ ๋ช‡ ๋…„ ๋™์•ˆ ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์ด ์ผ๊ด€๋  ๋•Œ๊นŒ์ง€๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ณ‘๋ชฉ ํ˜„์ƒ์€ ๊ด‘๊ณ , ๋„ˆ๋ฌด ๋งŽ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ๋ถ€ํ’€๋ ค์ง„ HTML, ๋„ˆ๋ฌด ๋งŽ์€ CSS, ๋„ˆ๋ฌด ๋งŽ์€ iframe, ๋„ˆ๋ฌด ๋งŽ์€ ์š”์ฒญ, ์„œ๋ฒ„ ๋Œ€๊ธฐ ์‹œ๊ฐ„, ๋น„ํšจ์œจ์ ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋„ˆ๋ฌด ๋งŽ์€ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ ๊ทธ ์ด์ƒ์œผ๋กœ ๋Œ€๋ถ€๋ถ„ ๋ถ€ํ’€๋ ค์ง„ HTML, ์ž˜๋ชป๋œ HTML, ๋„ˆ๋ฌด ๋งŽ์€ CSS ๋ฐ ๋น„ํšจ์œจ์ ์ธ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋งŽ์€ ๋ฌธ์ œ๋„ ์žˆ๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Twitter๋Š” ๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์˜ jQuery์™€ ๋‘ ๊ฐœ์˜ onscroll ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅธ์ชฝ ์—ด onscroll์ด ํŠ€๋Š” ํ˜„์ƒ์„ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ๊ฒƒ์€ ์ž์‹ ์ด ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ๋ฉด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. jQuery ๋˜๋Š” ๋ฐ‘์ค„๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ›จ์”ฌ ์ž‘์Šต๋‹ˆ๋‹ค. ๊นจ๋—ํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๋ฉฐ ์œ ํšจํ•œ HTML ๋ฐ CSS๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ํŽ˜์ด์ง€๊ฐ€ ๋” ๋นจ๋ฆฌ ๋กœ๋“œ๋˜๊ณ  ์•ฑ์ด ๋ณ€๊ฒฝ ์ธก๋ฉด์—์„œ ๋” ์œ ์—ฐํ•ด์ง€๋ฉฐ SEO๊ฐ€ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ถ€๋‹นํ•œ ๋ณต์žก์„ฑ๊ณผ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

https://github.com/BroDotJS/AssetRage

ํŒ”! ๋‚˜๋Š” ํด๋Ÿฝ์„ ๋‹ซ๊ณ  ์‹ค์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.

๋ฌด์Šจ ์Šค๋ ˆ๋“œ ... ์™€์šฐ.

Imo, ํ† ๋ก ์€ ์›น ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ถœ๋ฐœ์ ์œผ๋กœ ์˜๋„๋œ h5bp์˜ ๋งฅ๋ฝ์—์„œ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ h5bp๋ฅผ ์‚ฌ์šฉํ•˜๋Š” webdev๋Š” ์‹ค์ œ๋กœ ๊นจ๋—ํ•œ HTML, ๊นจ๋—ํ•œ CSS, ์ข‹์€ .htaccess ๋“ฑ์„ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ด๋ฉฐ ๋„ˆ๋ฌด ๋งŽ์€ ์ด๋ฏธ์ง€, ๋น„ํšจ์œจ์ ์ธ JS, ๋งŽ์€ ํ˜•ํŽธ์—†๋Š” ์ œ3์ž JS ๋“ฑ์œผ๋กœ ์ธํ•ด _์–ด์ฉŒ๋ฉด_ _๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณ ์„ฑ๋Šฅ h5bp๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ์„ ํƒํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์— ๊ด€์‹ฌ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๋น„ h5bp ํ•ญ๋ชฉ์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ์—์„œ, ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๋งฅ๋ฝ์—์„œ ๋ถˆํ–‰ํžˆ๋„ ์ตœ์ข… ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ๊ธฐ์— ์ถฉ๋ถ„ํ•œ ์ฆ๊ฑฐ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ €๋Š” Paul๊ณผ ํ•จ๊ป˜ ์—ฐ๊ตฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•ด์•ผ ํ•  ์‚ฌํ•ญ์„ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋ฅผ ๋ฐ”์šธ๋กœ ์„ธ์–ด ๋ณด์‹ญ์‹œ์˜ค.

์‚ฌ์ด๋“œ๋…ธํŠธ. ์ €๋Š” AMD์— ๋Œ€ํ•ด ์ž˜ ์•Œ์ง€ ๋ชปํ•˜๋ฉฐ, ์–ธ๋œป ๋ณด๊ธฐ์— ์ €์—๊ฒŒ ์œ„ํ˜‘์ ์ด๊ฑฐ๋‚˜ ์ ์–ด๋„ ์ œ๊ฐ€ ์‰ฝ๊ฒŒ ์ง‘์–ด๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ '์ผ๋ฐ˜' ์›น ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์˜ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
h5bp์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ์€ ์ง„์ž… ์žฅ๋ฒฝ์ด ๋‚ฎ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  h5bp์˜ ํก์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋ณด๋‹ค ๋Š๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
AMD์™€ ๊ฐ™์€ ๊ฒƒ์ด h5bp์— ์†ํ•˜๋Š”์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.
๊ฐ„๋‹จํ•˜๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ๋˜ํ•˜๋‚˜์˜ ๋Œ“๊ธ€....
'์ตœํ•˜๋‹จ์— ์Šคํฌ๋ฆฝํŠธ ๋„ฃ๊ธฐ' ๋ฐ 'JS ํŒŒ์ผ์„ ๋‹จ์ผ ํŒŒ์ผ๋กœ ์—ฐ๊ฒฐ'์€ ์ˆ˜๋…„ ๋™์•ˆ Web Perf ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋ชฉ๋ก์—์„œ ์ƒ์œ„์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž์™€ ์ตœ๊ณ ์˜ ๋ธŒ๋žœ๋“œ ์—์ด์ „์‹œ๊ฐ€ ๊ตฌ์ถ•ํ•œ ํ‰๊ท  ์‚ฌ์ดํŠธ์˜ 90% ์ด์ƒ์— ์—ฌ์ „ํžˆ HEAD์— ์—ฌ๋Ÿฌ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ •๋ง, ์™œ ๊ทธ๋ž˜?

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€ 9%๋Š” HEAD์— ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ๋œ JS ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ผ๋ถ€ ์ตœ๊ณ ์˜ ์›น ์„ฑ๋Šฅ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งจ ์•„๋ž˜์— ํ•˜๋‚˜์˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌ์ถ•ํ•œ _not_ '๋ณดํ†ต' ์‚ฌ์ดํŠธ๋ฅผ ๊ฑฐ์˜ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋Š” ๋ช‡ ๋…„ ๋™์•ˆ ๊ณ„์†ํ•ด์„œ ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์ดํŠธ ์†Œ์œ ์ž๋Š” ๋””์ž์ธ๊ณผ ๊ธฐ๋Šฅ์„ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž‘์—… ๋ฐฉ์‹, ๋นŒ๋“œ ์‹œ์Šคํ…œ, ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ... ๊ทธ๊ฒƒ์€ ์‰ฝ๊ณ , ์•„์ฃผ ์‰ฌ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

HEAD์˜ JS๋ฅผ ๋‹จ์ผ ํŒŒ์ผ๋กœ ๊ฒฐํ•ฉํ•˜๊ณ  BODY์˜ ๋งจ ์•„๋ž˜์— ๋กœ๋“œํ•˜๋ฉด ์‚ฌ์ดํŠธ์˜ ํŽ˜์ด์ง€๊ฐ€ ์†์ƒ๋˜๋Š” ๋งŽ์€ ์‚ฌ์ดํŠธ์—์„œ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ์—”? ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํ•œ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ฌ๊ฐํ•œ ๋ฆฌํŒฉํ† ๋ง์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค... ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์ง€์‹ ๋ถ€์กฑ, ํŠนํžˆ ์‹œ๊ฐ„ ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

(์•„ ๋งž๋‹ค, ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋‹ซํ˜”๋‹ค...)

jQuery์™€ Modernizr์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋นŒ๋“œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ๋งํ•ด์ค๋‹ˆ๋‹ค. ๋ˆ„๊ฐ€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ? ์˜ค, ์  ์žฅ, ๋‘ ๊ฐœ์˜ jQuery๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์†Œ์Šค ์ฝ”๋“œ์—๋„ ๋‹ค์Œ์ด ํฌํ•จ๋œ Twitter.com์„ ์žŠ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค.

 352ํ–‰, 6์—ด: ๋ ํƒœ๊ทธ div๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ ์—ด๋ฆฐ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
 ์˜ค๋ฅ˜ ๋ผ์ธ 350, ์—ด 6: ๋‹ซํžˆ์ง€ ์•Š์€ ์š”์†Œ ul.
 ์˜ค๋ฅ˜ ์ค„ 330, ์—ด 6: ๋‹ซํžˆ์ง€ ์•Š์€ ์š”์†Œ ul.

๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์˜ ๋ฌธ์ œ๋Š” HTML4๊ฐ€ ์˜ค๋ฅ˜ ์ˆ˜์ • ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ •์˜ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ˆ„๊ฐ€ ์–ด๋””์„œ ๋ฌด์—‡์„ ์•Œ๊ณ  ์žˆ๋Š”์ง€๋ฅผ ์•Œ๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  HTML5๋Š” ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ์ •์˜ํ•˜์ง€๋งŒ ์†Œ๊ธ‰ ์ ์šฉ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ "์˜ค๋ž˜๋œ" ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์  ์žฅ, ์—ฌ๊ธฐ ๋ˆ„๊ตฐ๊ฐ€ jQuery ES5 shim์„ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

BTW, "h5bp๋ฅผ ์‚ฌ์šฉํ•˜๋Š” webdev๊ฐ€ ์‹ค์ œ๋กœ ๊นจ๋—ํ•œ HTML์„ ๊ฐ€์งˆ ๊ฒƒ"์ด๋ผ๊ณ  aaronpeters์˜ ์ง„์ˆ ์— ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@GarrettS ok, ok, "์•„๋งˆ๋„ _ ๊นจ๋—ํ•œ HTML์„ ๊ฐ€์งˆ ๊ฒƒ"์ด๋ผ๊ณ  ์ผ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

:-D ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ํฌ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๋‚˜๋Š” ์ฃฝ์€ ๋ง์„ ์ด๊ธฐ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค ... ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์ด ํฅ๋ฏธ๋กœ์šด ํ† ๋ก ์„ ํ•˜๊ณ  ์žˆ๋Š” ๋™์‹œ์— ํ˜„์žฌ ๋ฒ„์ „์˜ LABjs์—๋Š” ์‹ค์ œ๋กœ ์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ JavaScript๊ฐ€ ์ž˜๋ชป๋œ ์ˆœ์„œ๋กœ ์‹คํ–‰๋˜๋„๋ก ํ•˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค: https: //github.com/getify/LABjs/issues/36

์˜ค, ์•„์ด๋Ÿฌ๋‹ˆ.

ํ•ด์•ผํ•˜๋‹ค. ์ €ํ•ญํ•˜๋‹ค. ์ „๊ธฐ. ์™„์ „ํžˆ. [๋ถ€์ ์ ˆ]. ์˜์ƒ. ์„์œ„ํ•œ. ์ด์ „. ์„ฑ๋ช….... ์–ด์ด์ฟ ! ๊ณ ๋‡Œ!

๋‚ด๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ๋ถ€๋ถ„์€ dhtmlkitchen.com (ํ˜„์žฌ ์™„์ „ํžˆ ์—‰๋ง์ง„์ฐฝ) ์„ ๋งŒ๋“  ์นœ๊ตฌ๊ฐ€ ๋งˆํฌ์—… ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์„ ์Šต๋‹ˆ๋‹ค .

ํ•ด๋‹น ์‚ฌ์ดํŠธ๋Š” Paulo Fragomeni์—๊ฒŒ ์ด์ „๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋งŒ๋“ค์—ˆ๊ณ  ์—ฌ๊ธฐ์—์„œ ๋‚ด๊ฐ€ ์“ด ๊ฒƒ์„ ์ž๋ž‘์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•ฝํ•œ ์•„๋ฐ”ํƒ€์˜ ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐ์œผ์„ธ์š”.

...์ด ์ž‘์—…์„ ๋งˆ์นœ ํ›„์—๋Š” ๊ณ ๊ฐœ๋ฅผ ๊ฐธ์›ƒ๊ฑฐ๋ฆฌ๋ฉฐ ๋‚ด ์˜ค๋ž˜๋œ ๊ฐœ์ธ ์›น์‚ฌ์ดํŠธ(์ด๋Š” ๋” ์ด์ƒ ๋‚ด๊ฐ€ ์œ ์ง€ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์Œ)์™€ ํŒ€์—์„œ ๊ฐœ๋ฐœํ•˜๊ณ  ์žฌ์ • ์ง€์›์„ ๋ฐ›๋Š” ์›น์‚ฌ์ดํŠธ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์ดํ•ดํ•˜๋ ค๊ณ  ์ˆ˜์ต์„ ๋‚ด๋Š” ์ˆ˜๋ฐฑ๋งŒ ๋‹ฌ๋Ÿฌ์˜ ํšŒ์‚ฌ(ํŠธ์œ„ํ„ฐ์˜ ๊ฐ€์น˜๋Š” AFAIK ์ˆ˜์‹ญ์–ต ๋‹ฌ๋Ÿฌ์ผ ์ˆ˜ ์žˆ์Œ).

์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ๊ณ ๊ธ‰์Šค๋Ÿฝ๊ฒŒ ์œ ์ง€ํ•˜๊ณ  _์ฃผ์ œ์— ๋Œ€ํ•ด_ ๋‹คํ–‰์ž…๋‹ˆ๋‹ค.

jashkenas๋Š” ์ด ํ† ๋ก ์˜ ์ดˆ๊ธฐ์— ๊ด€๋ จ ์ •๋ณด๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฐ˜๋ฐœ์ด ๊ฑฐ์…Œ๋‹ค. ์•„๋‹ˆ์š”! ๊ทธ๊ฒƒ์€ ์•ˆ๋œ๋‹ค! Souders๋Š” ๊ทธ๊ฒƒ์„ ํ•  ๋งํ–ˆ๋‹ค! ๊ทธ๋ฆฌ๊ณ  ์‹คํŒจํ–ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ์‹คํŒจํ•˜๋Š”์ง€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  defer๋ฅผ ์‚ฌ์šฉํ•˜๋ผ๋Š” ๋‚˜์œ ์กฐ์–ธ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์•„์ด๋Ÿฌ๋‹ˆํ•˜๊ฒŒ๋„, ์–ด๋””์„ ๊ฐ€ h5bp ์‚ฌ์šฉ์ž๋“ค์ด ์ œ๋Œ€๋กœ ์ผ์„ ํ•  ๊ฒƒ์ด๋ผ๋Š” ์ฃผ์žฅ์ด ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์˜๊ฒฌ์€ ๋ถ„๋ช…ํžˆ ์ž˜๋ชป๋œ ๋งˆํฌ์—…์„ ์ƒ์„ฑํ•˜๊ณ  ๋งŽ์€ ์ œ3์ž ์ถ”์ƒํ™” ๊ณ„์ธต(๋ฐ ๋”์ฐํ•œ ๊ณ„์ธต)์„ ์‚ฌ์šฉํ•˜๋Š” ์ง€์ง€์ž๋“ค์˜ ์˜๊ฒฌ์ด _ํ›„์—_ ๋‚˜์™”๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ์•„์ด๋Ÿฌ๋‹ˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  defer ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ฃผ์„ ํ›„.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด ์ค‘ dhtmlkitchen.com์ด ๋‹ค์šด๋˜๋Š” ๊ฒƒ๊ณผ ์–ด๋–ค ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ „ํ˜€, ๋ถ„๋ช…ํžˆ. ๊ทธ๊ฒƒ์€ ๋น„ํŒ์„ ์ฐธ์„ ์ˆ˜ ์—†๋Š” h5bp ํฌํฌ์˜ ์•ฝํ•œ ์žฝ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ๋”์Šค
๋…€์„.
๋ธŒ๋ผ๋”์Šค

์ด ์Šค๋ ˆ๋“œ๋Š” ๋‹ซํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์–ตํ•˜๋‹ค? ์ง‘์— ๊ฐˆ ํ•„์š”๋Š” ์—†์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ๋ถˆ์„ ๋ถ™์ผ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ด๋ด, ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ํ† ๋ก , ๊ฐœ์ธ์ ์ธ ๋ถˆ๊ฝƒ ์ „์Ÿ, ์‚ฌ๋ฐฉ์—์„œ ์‚ฌ๋žŒ๋“ค์ด ํ™”๋ฅผ๋‚ด๋Š” ์‚ฌ๋žŒ๋“ค, ์™ธ์„ค์  ์ธ ์ด๋ฏธ์ง€ ํ•œ๋‘ ๊ฐœ, ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์ฃผ์œ„์— ์ข‹์€ ์‹œ๊ฐ„์ด ์žˆ์—ˆ๋˜ ์žฅ๋Œ€ํ•œ ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ๋˜ ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ฌด๋ฃŒ์˜€๋‹ค๋Š”๊ฒŒ ๋ฏฟ๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์–ธ์  ๊ฐ€ ๊ทธ๊ฒƒ์„ ๋‹ค์‹œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰