🌲Node.js module μ‚¬μš©λ²•

Node.js module μ‚¬μš©λ²•

node.js : 비동기 이벀트 기반 μžλ°”μŠ€ν¬λ¦½νŠΈ λŸ°νƒ€μž„

λΈŒλΌμš°μ €μ—μ„œλŠ” μ…‹νƒ€μž„μ•„μ›ƒ λ“± 비동기 api κ°€ ν•œμ •μ μ΄λΌ ν•˜λ©΄, node.js ν™˜κ²½μ—μ„œλŠ” λ§Žμ€ λΆ€λΆ„μ˜ api κ°€ λΉ„λ™κΈ°λ‘œ μž‘μ„±λ˜μ–΄ μžˆλ‹€κ³  ν•œλ‹€.

λͺ¨λ“ˆμ˜ μ •μ˜?

κ±΄μΆ•μœΌλ‘œλΆ€ν„° λΉ„λ‘―λœ λͺ¨λ“ˆμ΄λΌλŠ” λ‹¨μ–΄λŠ”, μ–΄λ–€ κΈ°λŠ₯을 λ–Όμ„œ 쑰립할 수 μžˆλŠ” ν˜•νƒœλ‘œ λ§Œλ“  λΆ€λΆ„μž…λ‹ˆλ‹€.

fs(File System) λͺ¨λ“ˆμ€, νŒŒμΌμ„ μ½κ±°λ‚˜ μ €μž₯ν•˜λŠ” λ“±μ˜ 일을 ν•  수 있게 λ•λŠ” node.js의 ν•œ λΆ€λΆ„μž…λ‹ˆλ‹€.

Node.js λ‚΄μž₯ λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜κΈ°

μ•„λž˜ λ§ν¬μ—μ„œ FileSystem 을 눌러보면,

https://nodejs.org/dist/latest-v12.x/docs/api/

fs.readFile(path[, options], callback)

λΌλŠ” nodejs 의 λ‚΄μž₯ν•¨μˆ˜λ₯Ό μ“°λŠ” ꡬ문이 λ‚˜μ˜¨λ‹€.

νŒŒμΌμ„ μ½λŠ” (readFile) node.js 의 λ‚΄μž₯ν•¨μˆ˜ 이닀.

μ‚¬μš©μ„ μœ„ν•΄ μ μš©ν•΄μ•Ό ν•  사항은?

μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ κ°€μž₯ 상단에 require ꡬ문을 μ΄μš©ν•œλ‹€. How?

const fs = require(β€˜fs’) // 파일 μ‹œμŠ€ν…œ λͺ¨λ“ˆμ„ λΆˆλŸ¬μ˜΅λ‹ˆλ‹€

μ–΄? μ €λŠ” μ΄λŸ¬μ΄λŸ¬ν•œ λͺ¨λ“ˆμ„ μ“°κ³  싢은데 node.js μ—λŠ” μ—†λ‚˜ λ³Έλ°μš”?

그럴 땐 npm, yarn 같은 νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €μ—μ„œ μ•Œμ•„μ„œ μ°Ύμ•„ λͺ¨λ“ˆμ„ λ‹€μš΄λ°›μœΌμ„Έμš”.

μ»€μŠ€ν…€ λͺ¨λ“ˆμ„ λ§ν•˜λŠ” κ΅¬λ‚˜!

fs.readFile을 톡해 μ•Œμ•„λ³΄λŠ” node.js 곡식 λ¬Έμ„œ κ°€μ΄λ“œ

fs.readFile(path[, options], callback)

fs.readFile μ΄λΌλŠ” λͺ¨λ“ˆμ€ 둜컬 νŒŒμΌμ„ μ½μ–΄μ˜€λŠ” λ©”μ†Œλ“œ 이닀. λ˜ν•œ 비동기 적으둜 파일 λ‚΄μš© 전체λ₯Ό 읽어듀인닀고 ν•œλ‹€.

1. path 의 νƒ€μž…

path <string> | <Buffer> | <URL> | <integer>

첫번째 인자인 path μ—λŠ” μœ„μ™€ 같이 넀가지 μ’…λ₯˜μ˜ νƒ€μž…μ„ λ„˜κΈΈ 수 μžˆλ‹€. 보톡은 λ¬Έμžμ—΄λ‘œ λ„˜κΈ΄λ‹€κ³  ν•œλ‹€.fs.readFile(β€˜/etc/passwd’, …, …)

2. options 의 νƒ€μž…

options <Object> | <string>

λ‘λ²ˆμ§Έ 인자 options λŠ” 넣을 μˆ˜λ„ μ•ˆλ„£μ„ μˆ˜λ„ μžˆλ‹€. λŒ€κ΄„ν˜ΈλŠ” 선택적 인자λ₯Ό μ˜λ―Έν•¨.

μœ„μ™€ 같이 객체 ν˜•νƒœ λ˜λŠ” λ¬Έμžμ—΄ ν˜•νƒœλ‘œ λ„˜κΈΈ 수 μžˆλ‹€.

λ¬Έμžμ—΄λ‘œ 넣을 κ²½μš°μ—λŠ” 인코딩인 β€˜utf-8’ 을 λ„˜κΈ°κ²Œ λœλ‹€.

3. callback 의 νƒ€μž…. function

인자둜 λ“€μ–΄μ˜€λŠ” νƒ€μž…μ€,

err <Error>
data <string> | <Buffer>

νŒŒμΌμ„ 읽고 λ‚œ 뒀에 λΉ„λ™κΈ°μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” ν•¨μˆ˜μΈ 콜백 ν•¨μˆ˜λ₯Ό λ„˜κΈ΄λ‹€.

콜백 ν•¨μˆ˜μ—λŠ” 두 가지 νŒŒλΌλ―Έν„°κ°€ μ‘΄μž¬ν•œλ‹€. μœ„μ™€ 같이 err, data 이닀.

보톡 인자의 μ²«λ²ˆμ§Έμ— err κ°€ μ˜¨λ‹€κ³  ν–ˆλ‹€.

μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•ŠμœΌλ©΄ err λŠ” null 이 되며 data 에 λ¬Έμžμ—΄μ΄λ‚˜ Buffer λΌλŠ” 객체가 전달될 것이닀.

Q. data μ—λŠ” λ¬Έμžμ—΄μ΄λ‚˜ Buffer κ°€ μ „λ‹¬λ©λ‹ˆλ‹€. μ–΄λ–€ κ²½μš°μ— λ¬Έμžμ—΄λ‘œ μ „λ‹¬λ˜λŠ” κ²ƒμΌκΉŒμš”?

fs.readFile 의 λ‘λ²ˆμ§Έ options μΈμžμ— β€˜utf-8’ μ΄λΌλŠ” 인코딩을 λͺ…κΈ°ν•΄ μ£Όμ—ˆμ„ λ•Œ?? μ•„λ‹ˆλΌλ©΄ Buffer κ°€ 전달될 것이닀.

Buffer 의 ν˜•νƒœλŠ” μ•„λž˜μ™€ κ°™λ‹€.

<Buffer ec bd 94 eb 93 9c ed 85 8c ec 9d b4 ec 8a a4 ed 8a b8 20 ec a0 9c eb 8f 84 eb 8a 94 20 ec 97 86 eb 82 98 ec 9a 94 3f 20 e3 85 a0 e3 85 a0 20 ec 8b 9d ... 36 more bytes>

Written by@[DotoriMook]
ν”„λ‘ νŠΈμ—”λ“œ μ£Όλ‹ˆμ–΄ 개발자 λ„ν† λ¦¬λ¬΅μ˜ 기술개발 λΈ”λ‘œκ·Έ μž…λ‹ˆλ‹€.

GitHubMediumTwitterFacebook