codeStates front-end/Java Script

[JS] chapter20. 비동기2 - node.js

ν™˜ν…Œν¬ 2023. 1. 19. 17:26
λ°˜μ‘ν˜•

 

 

 

 

 

πŸ“Œ 비동기

 

 

비동기 μ²˜λ¦¬λž€, νŠΉμ • μ½”λ“œμ˜ 싀행이 μ™„λ£Œλ  λ•ŒκΉŒμ§€ 기닀리지 μ•Šκ³  λ‹€μŒ μ½”λ“œλ₯Ό μˆ˜ν–‰ν•˜λŠ” 것

jsλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ 기반 λ™μž‘ μ–Έμ–΄λΌμ„œ 동기적 μž‘λ™μ΄μ§€λ§Œ ν™˜κ²½(λŸ°νƒ€μž„)μ—μ„œ 비동기 처리λ₯Ό 도와주기 λ•Œλ¬Έμ—

비동기 처리 λ˜ν•œ κ°€λŠ₯ν•˜λ‹€.

 

 

πŸ’» node.js λͺ¨λ“ˆ

 

λΈŒλΌμš°μ €μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” 비동기 흐름은 타이머 λ˜λŠ” dom 이벀트 λ“± λ‹€μ†Œ ν•œμ •μ μ΄μ§€λ§Œ,

node.js 경우 λ§Žμ€ APIκ°€ λΉ„λ™κΈ°λ‘œ μž‘μ„±λ˜μ–΄ μžˆλ‹€.

 

node.js λž€?

 

비동기 이벀트 기반 javascript λŸ°νƒ€μž„

 

node.js λͺ¨λ“ˆ

 

λͺ¨λ“ˆ - μ–΄λ–€ κΈ°λŠ₯을 쑰립할 수 μžˆλŠ” ν˜•νƒœ 

fs λͺ¨λ“ˆ - pc의 νŒŒμΌμ„ μ½κ±°λ‚˜ μ €μž₯ν•˜λŠ” λ“±μ˜ 일을 λ„μ™€μ€Œ

 

 

λ‚΄μž₯ λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜λŠ” 방법  - 링크

 

Node.js v16.14.2 Documentation

 

Index | Node.js v16.19.0 Documentation

 

nodejs.org

 

 

πŸ“ λ‚΄μž₯ λͺ¨λ“ˆ - fs λͺ¨λ“ˆ

 

readFile - νŒŒμΌμ„ 읽을 λ•Œμ— μ“°λŠ” λ©”μ„œλ“œ

writeFile - νŒŒμΌμ„ μ €μž₯ν•  λ•Œμ— μ“°λŠ” λ©”μ„œλ“œ

 

<script src="λΆˆλŸ¬μ˜€κ³ μ‹Άμ€_슀크립트.js"></script> // λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λΆˆλŸ¬μ˜€λŠ” κ³Όμ •
// js μ½”λ“œ 상단에 require ꡬ문을 μ΄μš©ν•˜μ—¬ λ‹€λ₯Έ νŒŒμΌμ„ λΆˆλŸ¬μ˜¨λ‹€
const fs = require('fs'); // 파일 μ‹œμŠ€ν…œ λͺ¨λ“ˆμ„ λΆˆλŸ¬μ˜΅λ‹ˆλ‹€
const dns = require('dns'); // DNS λͺ¨λ“ˆμ„ λΆˆλŸ¬μ˜΅λ‹ˆλ‹€

// 이제 fs.readFile λ©”μ„œλ“œ 등을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€!

 

 

πŸ“ 3rd-party λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜λŠ” 방법

 

μ„œλ“œ νŒŒν‹° λͺ¨λ“ˆ - ν•΄λ‹Ή ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ κ³΅μ‹μ μœΌλ‘œ μ œκ³΅ν•˜λŠ” 빌트인 λͺ¨λ“ˆμ΄ μ•„λ‹Œ λͺ¨λ“  μ™ΈλΆ€ λͺ¨λ“ˆ

 

μ‹€μŠ΅) underscore μ„€μΉ˜ ν›„ μ‚¬μš©

 

npm install underscore // ν„°λ―Έλ„μ—μ„œ underscore μ„€μΉ˜
const _ = require('underscore'); // λ‚΄μž₯ λͺ¨λ“ˆ μ‚¬μš©ν•˜λ“― μ‚¬μš©

 

 

πŸ“ fs.readFile(path[, options], callback)

 

λ©”μ„œλ“œ fs.readFile은 λΉ„λ™κΈ°μ μœΌλ‘œ 파일 λ‚΄μš© 전체λ₯Ό μ½λŠ”λ‹€

이 λ©”μ„œλ“œλ₯Ό μ‹€ν–‰ν•  λ•Œμ—λŠ” μ „λ‹¬μΈμžλ₯Ό 3개 λ°›λŠ”λ‹€

 

path : <string> <Buffer> <URL> <integer>

파일 이름을 μ „λ‹¬μΈμžλ‘œ λ°›λŠ”λ‹€ 일반적으둠 string νƒ€μž…μ„ λ°›λŠ”λ‹€

options : <Object> <string>

넣을 μˆ˜λ„ 있고 λ„£μ§€ μ•Šμ„ μˆ˜λ„ μžˆλ‹€. λŒ€κ΄„ν˜ΈλŠ” 선택적 μ „λ‹¬μΈμžλ₯Ό 의미

λ¬Έμžμ—΄ λ˜λŠ” 객체 ν˜•νƒœλ‘œ λ°›λŠ”λ‹€. ex) utf-8

callback : <Function>

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

콜백 ν•¨μˆ˜λŠ” 두 κ°€μ§€ λ§€κ²Œλ³€μˆ˜κ°€ 쑴재

  • err \<Error> | \<AggregateError>
  • data \<string> | \<Buffer>

errλŠ” null 이 되며, dataλŠ” λ¬Έμžμ—΄μ΄λ‚˜ bufferλΌλŠ” 객체가 μ „λ‹¬λœλ‹€. dataλŠ” 파일 λ‚΄μš©

 

 

예제 μ½”λ“œ

 

fs.readFile('test.txt', 'utf8', (err, data) => {
  if (err) {
    throw err; // μ—λŸ¬λ₯Ό λ˜μ§‘λ‹ˆλ‹€.
  }
  console.log(data);
});

 

 

 

λ°˜μ‘ν˜•