Ng-lazyload-image: ๋ ˆ์ด์ง€๋กœ๋“œ ๋ฐ srcset

์— ๋งŒ๋“  2017๋…„ 07์›” 18์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: tjoskar/ng-lazyload-image

์•ˆ๋…•ํ•˜์„ธ์š”, ๋ฌด์—‡๋ณด๋‹ค ๋…ธ๊ณ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ •๋ง ์ข‹์Šต๋‹ˆ๋‹ค :)

์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. srcset์„ ์‚ฌ์šฉํ•˜์—ฌ img ํƒœ๊ทธ์— ์ง€์—ฐ ๋กœ๋”ฉ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์กฐ๊ธˆ ๊ณต๋ถ€ํ–ˆ๋Š”๋ฐ srcset์ด ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋น ์ง„ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ ‡๋‹ค๋ฉด ํ•ด์ƒ๋„๊ฐ€ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€์˜ ์˜ˆ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (1x, 2x ๋“ฑ...)

๋‹น์‹ ์˜ ๋„์›€์„ ์ฃผ์…”์„œ ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

NS.

help wanted

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

์•ˆ๋…•ํ•˜์„ธ์š”,

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ถˆํ–‰ํžˆ๋„ srcset์„ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋‹นํžˆ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ srcset์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ์ดํ•ดํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€์›ํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ต์…˜ 1:

์šฐ๋ฆฌ๋Š” srcset์„ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๋กœ ์ทจ๊ธ‰ํ•˜๊ณ  ๋ฐฐ๊ฒฝ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๋ ค๊ณ  ํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  ์ด๋ฏธ์ง€๊ฐ€ ๋ทฐํฌํŠธ์ผ ๋•Œ srcset ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ html ํƒœ๊ทธ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
<img [defaultImage]="defaultImage" lazyLoad="small.jpg 300w, large.jpg 500w">
์ด๋ฏธ์ง€๊ฐ€ ๋ทฐํฌํŠธ์— ์žˆ์„ ๋•Œ srcset ์‚ดํŽด๋ณด๊ณ  lazyLoad ์— srcset -string์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ๊ฐ์ง€ํ•˜๊ณ  ํƒœ๊ทธ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
<img srcset="small.jpg 300w, large.jpg 500w">

์ฐฌ์„ฑ:
๊ฐ„๋‹จํ•œ ๊ตฌํ˜„
๋ฒ”์ฃ„์ž:
์‚ฌ์šฉ์ž๋Š” "defaultImage"๋ฅผ ์ ˆ๋Œ€ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋™์•ˆ ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ต์…˜ 2:

์šฐ๋ฆฌ๋Š” srcset ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ์ตœ์ƒ์˜ ์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค(๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ˆ˜ํ–‰ํ–ˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ).
๋‹ค์Œ html ํƒœ๊ทธ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
<img [defaultImage]="defaultImage" lazyLoad="small.jpg 300w, large.jpg 500w">
lazyLoad ์— srcset ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ๊ฐ์ง€ํ•˜๊ณ  ๋ฌธ์ž์—ด์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
[ { url: 'small.jpg', width: 300 }, { url: 'large.jpg', width: 500 } ]
๋ธŒ๋ผ์šฐ์ € ๋„ˆ๋น„(๋ฐ ์žฅ์น˜ ํ”ฝ์…€ ๋น„์œจ )์™€ ๋น„๊ตํ•˜์—ฌ ์ตœ์ƒ์˜ ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๊ณ  ๋กœ๋“œ๋  ๋•Œ srcset ํ•˜๊ณ  ์ด๋ฏธ์ง€๊ฐ€ ์บ์‹œ์— ์žˆ์œผ๋ฏ€๋กœ ์ฆ‰์‹œ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

์ฐฌ์„ฑ:
์ด๋ฏธ์ง€๊ฐ€ ์ง€์—ฐ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค ๐ŸŽ‰
์‚ฌ์šฉ์ž๋Š” ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋ฅผ ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค( srcset ์—์„œ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ์˜ค๋ฅ˜ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?).
๋ฒ”์ฃ„์ž:
๋ธŒ๋ผ์šฐ์ €์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ž์—ด์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์€ ํ•ญ์ƒ ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์•„๋งˆ๋„ ์ผ๋ถ€ ์—ฃ์ง€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋†“์น  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‚ด ์ดํ•ด์— ๋”ฐ๋ฅด๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์บ์‹œ์— ์ €์žฅ๋œ ๊ฒฝ์šฐ ํ•ญ์ƒ ๊ฐ€์žฅ ํฐ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ๋กœ๋“œ๋˜์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฏ€๋กœ ๊ฐ€์žฅ ์ž˜ ๋งž๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ srcset ์„ค์ •ํ•œ ํ›„์— ๊ฐ€์žฅ ํฐ ์ด๋ฏธ์ง€๊ฐ€ ํ‘œ์‹œ๋จ). ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ srcset small.jpg 300w, large.jpg 500w ์žˆ๊ณ  ํ™”๋ฉด์ด 500ํ”ฝ์…€ ๋ฏธ๋งŒ์ด์ง€๋งŒ large.jpg ๊ฐ€ ์ด๋ฏธ ๋กœ๋“œ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ดํ•ด์— ๋”ฐ๋ฅด๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์บ์‹œ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— large.jpg ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜์ง€๋งŒ small.jpg ๋กœ๋“œํ• ์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋“œ๋  ๋•Œ srcset ๋ฐ ๋ธŒ๋ผ์šฐ์ €๋Š” large.jpg (๊ทธ๋Ÿฌ๋‚˜ ํ‹€๋ฆด ์ˆ˜ ์žˆ์Œ). ์ฆ‰, ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก :

๋‚˜๋Š” ์˜ต์…˜ 2๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ (๋„ˆ๋ฌด ์–ด๋ ต์ง€ ์•Š์•„์•ผ ํ•จ) ์šฐ๋ฆฌ๊ฐ€ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ์€ ์‹œ๊ฐ„์ด ๋งค์šฐ ์ œํ•œ๋˜์–ด ์žˆ์ง€๋งŒ ๊ธฐ๊บผ์ด PR์„ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค. :)

@tjoskar๋‹˜ , ๋น ๋ฅธ ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์˜ต์…˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋งˆ๊ฐ ์‹œ๊ฐ„์ด ์–ผ๋งˆ ๋‚จ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ์€ ์‹œ๊ฐ„์ด ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹œ๊ฐ„์ด ๋” ์ƒ๊ธฐ๋ฉด ์ด ๊ธฐ๋Šฅ์— ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋‚ด๊ฐ€ ์ด๋ฏธ ๊ฒŒ์œผ๋ฅธ ์ง€์›์„ ์œ„ํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋™์ž‘์„ ํ™•์žฅํ–ˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด hlink.href ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ํƒœ๊ทธ ๋กœ๋“œ :)

๋˜๋Š” ๊ธฐ๋ณธ ๋ธŒ๋ผ์šฐ์ € srcset ์˜ต์…˜์„ ๋ฌด์‹œํ•˜๊ณ  ์ž์‹ ์˜ ์˜์‚ฌ ๊ฒฐ์ • ํ”„๋กœ์„ธ์Šค๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์‹œ๊ฐ„์„ ๋‘๊ณ  ์กฐ์ •ํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ๊ณ ๊ฐ€ ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. :)

ํˆฌ๊ธฐ

์‚ฌ์–‘๋งŒ ์ค€์ˆ˜ํ•˜๋ฉด ๋˜๋ฉฐ ์‚ฌ์–‘์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

๋ฐ˜์‘ํ˜• ์ด๋ฏธ์ง€ ์ง€์›์„ ๋‘˜ ๋‹ค์— ์ถ”๊ฐ€ํ•˜๋Š” ํ’€ ๋ฆฌํ€˜์ŠคํŠธ(#231)๋ฅผ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์–ด๋–ค ์ž…๋ ฅ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ 3.4.0 ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. @sapierens ๊ฐ์‚ฌ

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