IIEF, Modules and Namespace

πŸ’πŸ»β€β™‚οΈContents

1. JavaScript Module
2. IIFE, Namespace
3. ES Module

JavaScript Module

Β κΈ°λŠ₯상 성격이 λΉ„μŠ·ν•œ λ˜λŠ” μ—°κ΄€μ„± μžˆλŠ” 뢀뢄듀이

쑰립된 덩어리

πŸ™‹πŸ»β€β™‚οΈμ™œ λͺ¨λ“ˆμ΄ ν•„μš”ν•œκ°€μš”?

● abstract code

● encapsulate code

● reuse code

● manage dependencies

Β 

Β 

μ½”λ“œ 뢄리

물리적인 파일둜 μœ„μΉ˜λ₯Ό 뢄리

Namespace

IIFE

CommonJS

ES Module

IIFE, Namespace

Function Declarations

Function Expressions

IIFE

ν•¨μˆ˜λ₯Ό ν‘œν˜„μ‹μœΌλ‘œ λ°”κΎΈκ³  μ¦‰μ‹œ μ‹€ν–‰ν•˜λŠ” 것이닀

Function Expressions

ν•¨μˆ˜ ν‘œν˜„μ‹μ„ λ§Œλ“œλŠ” 또 λ‹€λ₯Έ 방법

IIFE

이해가 μ•ˆλ˜μš”...

IIFE의 ν™œμš© - private variables

IIFE의 ν™œμš© - alias

IIFE의 ν™œμš© - module

ES Module

import, export

ν•΄λ‹Ή ν‚€μ›Œλ“œλ₯Ό 톡해 λͺ¨λ“ˆλ‚΄μ˜ 값을 내보내고 λΆˆλŸ¬μ˜¨λ‹€

Module μ‚¬μš©

type 속성을 module둜 μ„€μ •ν•˜μ—¬ λΈŒλΌμš°μ €μ—μ„œ λͺ¨λ“ˆλ‘œ μ²˜λ¦¬ν•  수 μžˆλ‹€

기쑴과의 차이

1. λͺ¨λ“ˆμ—μ„œλŠ” λͺ…μ‹œν•˜μ§€ μ•Šμ•„λ„ 기본적으둜 엄격λͺ¨λ“œκ°€ μ μš©λœλ‹€

Β 

2. HTML μŠ€νƒ€μΌ 주석 ꡬ문을 μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.

Β 

Β 

Β 

Β 

Β 

Β 

3. λͺ¨λ“ˆμ€ μ΅œμƒμœ„ λ ‰μ‹œμ»¬ μŠ€μ½”ν”„λ₯Ό κ°€μ§„λ‹€.

Β 

Β 

Β 

기쑴과의 차이

mjs ν™•μž₯자

1. ν•΄λ‹Ή 파일이 λͺ¨λ“ˆμž„을 λΆ„λͺ…ν•˜κ²Œ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.
Β  Β  Β - κΈ°μ‘΄ μŠ€ν¬λ¦½νŠΈμ™€ μ·¨κΈ‰λ˜λŠ”κ²Œ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— μ£Όμ˜κ°€ ν•„μš”ν•˜λ‹€.

Β 

2. node.jsμ—μ„œ ES Module을 κ΅¬λΆ„ν•œλ‹€.

Β 

Module specifiers

πŸ™…πŸ»β€β™‚οΈ μ§€μ›λ˜λŠ” μ•ŠλŠ” μ§€μ •μž

Β 

Β 

Β 

πŸ™†πŸ»β€β™‚οΈ μ§€μ›λ˜λŠ” μ§€μ •μž

Β 

μ ˆλŒ€ 경둜 λ˜λŠ” μƒλŒ€κ²½λ‘œλ₯Ό λͺ…μ‹œν•΄μ€˜μ•Ό ν•œλ‹€

defer attribute

λͺ¨λ“  쒅속 λͺ¨λ“ˆμ—λ„ λ™μΌν•˜κ²Œ μ μš©λœλ‹€

Performance recommendations

● Keep bundling (Trade-off)

● Use fine-grained modules

● Preload modules

● Use HTTP/2

Β 

Β 

Appendix

ES6 와 IIFE

ES6 μ΄ν›„λ‘œ IIFE의 ν•„μš”μ„±μ΄ 더 이상 μ—†μ„κΉŒ?

ES6 와 IIFE

ES6 μ΄ν›„λ‘œ IIFE의 ν•„μš”μ„±μ΄ 더 이상 μ—†μ„κΉŒ?

ES6 와 IIFE

ES6 μ΄ν›„λ‘œ IIFE의 ν•„μš”μ„±μ΄ 더 이상 μ—†μ„κΉŒ?

Made with Slides.com