๊ด€๋ฆฌ ๋ฉ”๋‰ด

Daily Front_Minhhk

Optimization ์ตœ์ ํ™” ๋ณธ๋ฌธ

Code๊ฐœ๋ฐœ์ผ์ง€

Optimization ์ตœ์ ํ™”

Minhhk 2023. 2. 1. 16:33
๐Ÿฅถ ์ตœ์ ํ™”, optimization
  • ์ฃผ์–ด์ง„ ์ƒํ™ฉ์—์„œ ์›ํ•˜๋Š” ๊ฐ€์žฅ ์•Œ๋งž์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •.
  • ์ตœ์ ํ™”๋Š” ํ—ˆ์šฉ๋œ ์ž์›์˜ ํ•œ๊ณ„ ๋‚ด์—์„œ ์ฃผ์–ด์ง„ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑ์‹œํ‚ค๋ฉด์„œ ์ตœ์„ ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š” ๊ณผ์ •์ด๋‹ค.

     

์ปดํ“จํ„ฐ ๊ณตํ•™์—์„œ์˜ ์ตœ์ ํ™” :

์ตœ์†Œํ•œ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋ชจํ•˜๋ฉด์„œ ๊ฐ€๋Šฅํ•œ ํ•œ ๋น ๋ฅด๊ฒŒ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ!

 

์ตœ์ ํ™”์˜ ํ•„์š”์„ฑ ๋ฐ ํšจ๊ณผ

 

1. ์ดํƒˆ๋ฅ  ๊ฐ์†Œ

2. ์ „ํ™˜์œจ ์ฆ๊ฐ€

3. ์ˆ˜์ต ์ฆ๋Œ€

4. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ํ–ฅ์ƒ

 

๐Ÿ“ŒHTML, CSS ์ฝ”๋“œ ์ตœ์ ํ™”ํ•˜๊ธฐ

1. HTML ์ตœ์ ํ™” ๋ฐฉ๋ฒ•

(1) DOM ํŠธ๋ฆฌ ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“ค๊ธฐ

(2) ์ธ๋ผ์ธ ์Šคํƒ€์ผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ

2. CSS ์ตœ์ ํ™” ๋ฐฉ๋ฒ•

(1) ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” CSS ์ œ๊ฑฐํ•˜๊ธฐ

(2) ๊ฐ„๊ฒฐํ•œ ์…€๋ ‰ํ„ฐ ์‚ฌ์šฉํ•˜๊ธฐ

 

 

 

๐Ÿ“Œ๋ฆฌ์†Œ์Šค ๋กœ๋”ฉ ์ตœ์ ํ™”ํ•˜๊ธฐ

 

1. CSS ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ → CSSOM ํŠธ๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•œ ๋น ๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก HTML ๋ฌธ์„œ ์ตœ์ƒ๋‹จ์— ๋ฐฐ์น˜

2. JavaScript ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ → ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ์ด ๋๋‚ ๋•Œ๊นŒ์ง€ DOMํŠธ๋ฆฌ ์ƒ์„ฑ์ด ์ค‘๋‹จ๋˜์–ด ๋ Œ๋”๋ง์ด ๋Š๋ ค์ ธ์„œ DOMํŠธ๋ฆฌ ์™„์„ฑ ํ›„์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์ตœํ•˜๋‹จ์— ์œ„์น˜ํ•˜๋„๋ก ํ•œ๋‹ค.

 

 

 

๐Ÿ“Œ๋ธŒ๋ผ์šฐ์ € ์ด๋ฏธ์ง€ ์ตœ์ ํ™”ํ•˜๊ธฐ

 

1. ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ

  • ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ ๊ธฐ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ชจ์•„ ํ•˜๋‚˜์˜ ์Šคํ”„๋ผ์ดํŠธ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค๊ณ  CSS์˜ background-position์†์„ฑ์„ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€์˜ ์ผ์ • ๋ถ€๋ถ„๋งŒ ํด๋ž˜์Šค ๋“ฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋กœ ์‚ฌ์šฉํ•˜๋˜, ํ‘œ์‹œํ•˜๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์— ๋งž์ถฐ width, height, background-position ์†์„ฑ์„ ์ฃผ์–ด ์•„์ด์ฝ˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค

2. ์•„์ด์ฝ˜ ํฐํŠธ ์‚ฌ์šฉํ•˜๊ธฐ

(1) CDN์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

(2) Font Awesome ๋ชจ๋“ˆ ์„ค์น˜ํ•˜๊ธฐ

(3) WebP ๋˜๋Š” AVIF ์ด๋ฏธ์ง€ ํฌ๋งท ์‚ฌ์šฉํ•˜๊ธฐ → ์šฉ๋Ÿ‰๊ฐ์†Œ, ๋‹จ ํ˜ธํ™˜๋ฌธ์ œ ๋ฐœ์ƒ

์ด๋ฏธ์ง€ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ „ํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” JPEG ๋˜๋Š” PNG ํ˜•์‹์ด ์•„๋‹Œ ์ƒˆ๋กญ๊ฒŒ ๋“ฑ์žฅํ•œ ์ด๋ฏธ์ง€ ํฌ๋งท์ธ WebP ๋˜๋Š” AVIF๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šฉ๋Ÿ‰์„ ๋”์šฑ ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. WebP๋Š” PNG์™€ ๋น„๊ตํ•ด 26% ์šฉ๋Ÿ‰์ด ๊ฐ์†Œ๋˜๋ฉฐ JPEG์™€ ๋น„๊ตํ–ˆ์„ ๋• 25-35% ๋” ๊ฐ์†Œ๋ฉ๋‹ˆ๋‹ค. AVIF๋Š” JPEG์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ ๋ฌด๋ ค ์šฉ๋Ÿ‰์˜ 50%๊ฐ€ ๊ฐ์†Œ๋˜๋ฉฐ WebP์™€ ๋น„๊ตํ–ˆ์„ ๋• 20% ๊ฐ์†Œ๋ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ“ŒCDN ์‚ฌ์šฉํ•˜๊ธฐ
  • CDN์€ ์œ ์ €๊ฐ€ ๊ฐ€๊นŒ์šด ๊ณณ์— ์œ„์น˜ํ•œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ(์„œ๋ฒ„)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋‹ฌ๋˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์ณ์•ผํ•˜๋Š” ์„œ๋ฒ„์˜ ๊ฐฏ์ˆ˜๊ฐ€ ํฌ๊ฒŒ ์ค„๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

 

 

์บ์‹œ ์‚ฌ์šฉํ•˜๊ธฐ

์บ์‹œ(Cache)๋Š” ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋‚˜ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด ๋†“๋Š” ์ž„์‹œ ์žฅ์†Œ๋ฅผ ๋œปํ•จ

  1. ์„œ๋ฒ„์—์„œ ์‘๋‹ต์„ ๋ณด๋‚ด์ค„ ๋•Œ ์ด๋ฏธ์ง€ ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ํ—ค๋”์— Cache-Control์„ ์ž‘์„ฑํ•ด์„œ ๋ณด๋‚ธ๋‹ค.
  2. ๋‘๋ฒˆ์งธ ์š”์ฒญ๋ถ€ํ„ฐ๋Š” ์บ์‹œ๋ฅผ ์šฐ์„ ์กฐํšŒํ•œ๋‹ค. ์ด๋•Œ ์บ์‹œ๊ฐ€ ์œ ํšจํ•˜๋‹ค๋ฉด ์บ์‹œ์—์„œ ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  3. ์บ์‹œ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋ฉด ์„œ๋ฒ„์—์„œ ๋‹ค์‹œ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์•„์˜ค๊ฒŒ ๋œ๋‹ค.
  • ์ด๋•Œ ์œ ํšจ ์‹œ๊ฐ„์€ ์ง€๋‚ฌ์ง€๋งŒ ์บ์‹œ์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ์ด๋ฏธ์ง€์™€ ๋ฐ›์•„์™€์•ผ ํ•˜๋Š” ์ด๋ฏธ์ง€๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์บ์‹œ ๊ฒ€์ฆ ํ—ค๋”์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ํ™œ์šฉํ–ˆ์„ ๋•Œ์˜ ํšจ๊ณผ

  • ์บ์‹œ๊ฐ€ ์œ ํšจํ•œ ์‹œ๊ฐ„ ๋™์•ˆ ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์•„๋‚„ ์ˆ˜ ์žˆ์Œ
  • ํŒŒ์ผ์„ ๋‹ค์‹œ ๋ฐ›์•„์˜ฌ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ธŒ๋ผ์šฐ์ € ๋กœ๋”ฉ์ด ๋นจ๋ผ์ง
  • ๋กœ๋”ฉ์ด ๋นจ๋ผ์ง„ ๋งŒํผ ๋น ๋ฅธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ œ๊ณต ๊ฐ€๋Šฅ

 

 

์บ์‹œ ๊ฒ€์ฆ ํ—ค๋”

์บ์‹œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์™€ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์ผํ•œ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์€ ์‘๋‹ต ํ—ค๋”

  • Last-Modified : ๋ฐ์ดํ„ฐ๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜์ •๋œ ์‹œ์ ์„ ์˜๋ฏธํ•˜๋Š” ์‘๋‹ต ํ—ค๋”๋กœ, ์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋”์ธ If-Modified-Since ์™€ ๋ฌถ์–ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Etag : ๋ฐ์ดํ„ฐ์˜ ๋ฒ„์ „์„ ์˜๋ฏธํ•˜๋Š” ์‘๋‹ต ํ—ค๋”๋กœ, ์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋”์ธ If-None-Match ์™€ ๋ฌถ์–ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋”

์บ์‹œ์˜ ๋ฐ์ดํ„ฐ์™€ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด ์žฌ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด๋‹ฌ๋ผ๋Š” ์˜๋ฏธ์˜ ์š”์ฒญ ํ—ค๋”

  • If-Modified-Since : ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค์˜ Last-Modified ๊ฐ’ ์ดํ›„์— ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์ˆ˜์ •๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • If-None-Match : ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค์˜ ETag ๊ฐ’๊ณผ ํ˜„์žฌ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค์˜ ETag ๊ฐ’์ด ๊ฐ™์€์ง€ ํ™•์ธํ•˜๊ณ , ๊ฐ™์œผ๋ฉด ์บ์‹œ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

1. ์ฒซ๋ฒˆ์งธ ์š”์ฒญ์—์„œ ์บ์‹œ ์œ ํšจ์‹œ๊ฐ„์ด 60์ดˆ์ธ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๊ฐ™์ด ๋ฐ›์•„์˜ด. ์ด๋•Œ Last-Modified ํ—ค๋”์— ๋‹ด๊ธด ๋‚ด์šฉ๋„ ์บ์‹œ์— ํ•จ๊ป˜ ์ €์žฅ (์„œ๋ฒ„์˜ ํŒŒ์ผ ๋ฒ„์ „์„ ์˜๋ฏธํ•˜๋Š” Etagํ—ค๋”์— ๋‹ด๊ธด ๋‚ด์šฉ๋„ ์บ์‹œ์— ํ•จ๊ป˜ ์ €์žฅ)

2. ์บ์‹œ ์œ ํšจ์‹œ๊ฐ„์„ ์ง€๋‚œ ํ›„ ๋‘๋ฒˆ์งธ ์š”์ฒญ์—์„œ

  • If-Modified-Since๋ฅผ ์ž‘์„ฑํ•ด ์ €์žฅํ•ด๋‘” Last-Modified ๊ฐ’๊ณผ ํ•จ๊ป˜ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. ์ด ๊ฐ’์„ ์ด์šฉํ•ด ์„œ๋ฒ„๋ฐ์ดํ„ฐ์˜ ์ตœ์ข… ์ˆ˜์ •์ผ๊ณผ ์บ์‹œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์ •์ผ์ด ๊ฐ™์€์ง€ ํ™•์ธํ•œ๋‹ค. (If-None-Match๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์บ์‹œ์— ํ•จ๊ป˜ ์ €์žฅํ•ด๋†“์•˜๋˜ Etag ๊ฐ’์„ ๋‹ด์•„ ์š”์ฒญ์„ ๋ณด๋‚ด์–ด ์ด ๊ฐ’์„ ์ด์šฉํ•ด ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ์˜ Etag์™€ ์บ์‹œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ Etag๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ผ๋ฉด ๋‘ Etag๊ฐ’์ด ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

 

3. ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ 304 Not Modified ์‘๋‹ต.์บ์‹œ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์‹œ๊ฐ„์ด ๊ฐฑ์‹ ๋˜์–ด ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

 

 

ํŠธ๋ฆฌ์‰์ดํ‚น(Tree Shaking)์ด๋ž€?

๋ง ๊ทธ๋Œ€๋กœ ๋‚˜๋ฌด๋ฅผ ํ”๋“ค์–ด ์ž”๊ฐ€์ง€๋ฅผ ํ„ธ์–ด๋‚ด๋“ฏ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ

1. JavaScript ํŒŒ์ผ์˜ ํฌ๊ธฐ ์ฆ๊ฐ€

  • HTTP ์š”์ฒญ ์ˆ˜ ๋˜ํ•œ ๋ฐ์Šคํฌํƒ‘์—์„œ 155.6%, ๋ชจ๋ฐ”์ผ์—์„œ 425.0% ์ฆ๊ฐ€ํ•จ. ํฌ๊ธฐ๊ฐ€ ํ›จ์”ฌ ์ปค์ง„ JavaScript ํŒŒ์ผ์ด ๋Š˜์–ด๋‚œ ์š”์ฒญ ํšŸ์ˆ˜๋งŒํผ ๋” ์˜ค๊ฐ€๋Š” ๊ฒƒ์ด๋‹ˆ, ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค ์†Œ๋ชจ๊ฐ€ ๊ทธ๋งŒํผ ์ปค์กŒ๋‹ค.

2. JavaScript ํŒŒ์ผ์˜ ์‹คํ–‰ ์‹œ๊ฐ„ ์ฆ๊ฐ€

 

 

JavaScript ํŠธ๋ฆฌ์‰์ดํ‚น

1. ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋งŒ import ํ•˜๊ธฐ

import { useState, useEffect } from 'react'

๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š์€ ์ฝ”๋“œ๋Š” ๋นŒ๋“œํ•  ๋•Œ ์ œ์™ธ๋˜๋ฏ€๋กœ ์ฝ”๋“œ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

2. Babelrc ํŒŒ์ผ ์„ค์ •ํ•˜๊ธฐ

{
  “presets”: [
    [
      “@babel/preset-env”,
      {
	    "modules": false
      }
    ]
 ]
}

Babel : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์ด ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—๋„ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•˜๋„๋ก ES5 ๋ฌธ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜.

es5๋Š” import๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•„ commonJS๋ฌธ๋ฒ•์˜ require๋กœ ๋ณ€๊ฒฝ์‹œํ‚จ๋‹ค.

require์€ export๋˜๋Š” ๋ชจ๋“  ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ชจ๋“ˆ๊นŒ์ง€ ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋œ๋‹ค.

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ!!

modules๊ฐ’์„ true๋กœ ์„ค์ •ํ•˜๋ฉด ํ•ญ์ƒ ES5 ๋ฌธ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜

 

3. sideEffects ์„ค์ •ํ•˜๊ธฐ

const crews = ['kimcoding', 'parkhacker']

const addCrew = function (name) {
	crews.push(name)
}

addCrewํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ์™ธ๋ถ€์— ์žˆ๋Š” ๋ฐฐ์—ด์ธ crews๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ค๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

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

 

์ด๋Ÿด ๋•Œ package.json ํŒŒ์ผ์—์„œ sideEffects๋ฅผ ์„ค์ •ํ•˜์—ฌ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š์„ ๊ฒƒ์ด๋ฏ€๋กœ ์ฝ”๋“œ๋ฅผ ์ œ์™ธ์‹œ์ผœ๋„ ๋จ์„ ์›นํŒฉ์—๊ฒŒ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์—์„œ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

{
  "name": "tree-shaking",
  "version": "1.0.0",
  "sideEffects": false
}

ํ˜น์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜์—ฌ ํŠน์ • ํŒŒ์ผ์—์„œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

{
  "name": "tree-shaking",
  "version": "1.0.0",
  "sideEffects": ["./src/components/NoSideEffect.js"]
}

 

4. ES6 ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ ์‚ฌ์šฉํ•˜๊ธฐ

ES5 ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ์„ ํ†ต์งธ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์ƒ๊ด€X

ES5 ์ผ๋ถ€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ๋ชจ๋“ˆ์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์œผ๋ฉด์„œ ES6๋ฅผ ์ง€์›ํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

ES6 ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋ชจ๋“ˆ์—์„œ๋„ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ import ํ•ด์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋Š” ๋นŒ๋“œํ•  ๋•Œ ์ œ์™ธ๋˜๊ธฐ ๋•Œ๋ฌธ!

 

 

Lighthouse

์‚ฌ์ดํŠธ๋ฅผ ๊ฒ€์‚ฌํ•ด ์„ฑ๋Šฅ ์ธก์ •์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์„ฑ๋Šฅ๊ฒ€์‚ฌ + ๊ฐœ์„ ์ฑ…๋„ ์ œ๊ณต

 

  1. ํฌ๋กฌ์—์„œ ๊ฒ€์‚ฌํ•˜๊ณ  ์‹ถ์€ ํŽ˜์ด์ง€์˜ url์„ ์ž…๋ ฅ
  2. ๊ฐœ๋ฐœ์ž ๋„๊ตฌ > Lighthouse 
  3. Generate report๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. Categories์—์„œ ํŠน์ •ํ•œ ์ง€ํ‘œ๋งŒ ์„ ํƒํ•˜์—ฌ ๊ฒ€์‚ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๋Œ€๋žต 30-60์ดˆ๊ฐ„ ๊ฒ€์‚ฌ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฆฌํฌํŠธ๊ฐ€ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋‚ด์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

'Code๊ฐœ๋ฐœ์ผ์ง€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

CI / CD  (0) 2023.02.03
AWS  (0) 2023.02.02
TDD(Test-driven Development)  (0) 2023.01.31
Graph QL  (0) 2023.01.31
์ปดํ“จํ„ฐ ๊ณตํ•™ - ๊ตฌ์กฐ, ์šด์˜์ฒด์ œ  (0) 2023.01.27