Node.jsμ μκ° λ¬Έμμμ μ μνλ Node.jsλ "λΉλκΈ° μ΄λ²€νΈ κΈ°λ°μ JavaScript λ°νμ"μ΄λ€.
About Node.js
As an asynchronous event-driven JavaScript runtime, Node.js is designed to build scalable network applications.
λΈλΌμ°μ μμ μ¬μ©ν μ μλ λΉλκΈ°(Web APIs)λ setTimeout()
, DOM events
, XMLHttpRequest()
λ±μΌλ‘ λ€μ νμ μ μ΄μ§λ§, Node.jsμ κ²½μ° λ§μ APIκ° λΉλκΈ°λ‘ μμ±λμ΄ μλ€.
λ¨Όμ Node.js λͺ¨λμ μ¬μ©νλ λ°©λ²μ νμ΅νκ³ , μ΄λ₯Ό ν΅ν΄ λΉλκΈ° μν©μ μ°μΆνκ³ μ°μ΅ν΄λ³΄μ.
λͺ¨λ : μ΄λ€ κΈ°λ₯μ 쑰립ν μ μλ ννλ‘ λ§λ κ²
Node.js v16.17.1 documentation (Node.js λ΄μ₯ λͺ¨λ λͺ©λ‘)
require()
λͺ¨λ λͺ¨λμ λͺ¨λμ μ¬μ©νκΈ° μν΄ λΆλ¬μ€λ κ³Όμ μ΄ νμνλ€.
Node.jsμμλ JavaScript μ½λ μλ¨μ require()
ꡬ문μ μ΄μ©ν΄ λ€λ₯Έ νμΌμ λΆλ¬μ¨λ€.
const fs = require('fs'); // File System λͺ¨λμ λΆλ¬μ¨λ€.
const dns = require('dns'); // DNS λͺ¨λμ λΆλ¬μ¨λ€.
3rd-party λͺ¨λ
: ν΄λΉ νλ‘κ·Έλλ° μΈμ΄μμ 곡μμ μΌλ‘ μ 곡νλ λΉνΈμΈ λͺ¨λμ΄ μλ λͺ¨λ μΈλΆ λͺ¨λ
underscoreλ Node.js 곡μ λ¬Έμμ μλ λͺ¨λμ΄λ―λ‘ μλ νν° λͺ¨λμ΄λ€.μ¬μ©λ²
- μλ νν° λͺ¨λμ λ€μ΄λ‘λνκΈ° μν΄μλ npmμ μ¬μ©νλ€.
npm install underscore # underscore λͺ¨λμ μ€μΉνλ€.
- μ΄λ κ² node.modules ν΄λμ λͺ¨λμ λ€μ΄λ°μ ν, Node.js λ΄μ₯ λͺ¨λμ λΆλ¬μ€λ λ°©λ²μ λκ°μ΄
require()
ꡬ문μ μ΄μ©ν΄ λΆλ¬μ€λ©΄ λλ€.const _ = require('underscore'); // underscore λͺ¨λμ λΆλ¬μ¨λ€.
: νμΌμ μ½κ±°λ μ μ₯νλ κΈ°λ₯μ ꡬννλλ‘ λλ λͺ¨λ
File System λͺ¨λμ λ©μλ λͺ©λ‘μ μ΄ν΄λ³΄λ©΄, νμΌμ μ½μ λ μΈ λ²ν λ©μλ μ΄λ¦μ μ°Ύμ μ μλ€.
readFile()
: νμΌμ μ½μ λ μ¬μ©ν μ μλ λ©μλwriteFile()
: νμΌμ μ μ₯ν λ μ¬μ©ν μ μλ λ©μλfs.readFile()
fs.readFile(path, [options], callback)
: λΉλκΈ°μ μΌλ‘ νμΌ λ΄μ© μ½μ ν μ½λ°± ν¨μλ₯Ό μ€ννλ λ©μλ
path
, [options]
, callback
options
λ λ£μ μλ μκ³ , λ£μ§ μμ μλ μλ€.fs.readFile() λ©μλ μ¬μ©λ² - fs.readFile 곡μ API λ¬Έμ
path
: νμΌ μ΄λ¦μ μ λ¬μΈμλ‘ λ°λλ€.
string
Buffer
URL
integer
λ€ μ’
λ₯μ νμ
μ μ λ¬ν μ μμ§λ§, μΌλ°μ μΌλ‘ λ¬Έμμ΄ νμ
μ λ°λλ€.fs.readFile('/etc/password');
// /etc/password νμΌμ λΆλ¬μ¨λ€.
options
: μ΅μ μ λ¬Έμμ΄ λλ κ°μ²΄ ννλ‘ λ°μ μ μλ€.
fs.readFile('/etc/password', 'utf8');
// /etc/password νμΌμ utf8μ μ¬μ©ν΄μ μ½λλ€.
let options = {
encoding = 'utf8', // utf8 μΈμ½λ© λ°©μμΌλ‘ μ°λ€.
flag = 'r' // μ½κΈ° μν΄ μ°λ€.
}
fs.readFile('/etc/password', options);
// /etc/password νμΌμ utf8μ μ¬μ©ν΄μ μ½κΈ° μ μ©μΌλ‘ μ½λλ€.
callback
callback(err, data)
: νμΌμ μ½κ³ λ νμ λΉλκΈ°μ μΌλ‘ μ€νλλ μ½λ°± ν¨μλ₯Ό μ λ¬λ°λλ€.
μ΄λ, μ΄ μ½λ°± ν¨μμλ 2κ°μ§ 맀κ°λ³μκ° μ‘΄μ¬νλ€.
err
data
(νμΌμ λ΄μ©)μλ¬κ° λ°μνμ§ μμΌλ©΄ err
λ null
μ΄ λκ³ , data
μλ λ¬Έμμ΄μ΄λ Buffer
λΌλ κ°μ²΄κ° μ λ¬λλ€.
fs.readFile('test.txt', 'utf8', (err, data) => {
if(err) {
throw err; // μλ¬λ₯Ό λμ§λ€.
}
console.log(data); // dataλ₯Ό μ½μμ μΆλ ₯νλ€.
})
Buffer κ°μ²΄
λ²νΌ ννμ λ°μ΄ν°λ₯Ό μλμ λ¬Έμλ‘ λ€μ λ°κΎΈλ €λ©΄
toString()
λ©μλλ₯Ό μ΄μ©νλ©΄ λλ€.data.toString()
fs.readFile()
λ©μλλ₯Ό μ΄μ©ν΄ νμΌμ λ΄μ©μ λΆλ¬μ€λ ν¨μ getDataFromFile()
err
, λ λ²μ§Έ μΈμμ null
μ μ λ¬νλ€.null
, λ λ²μ§Έ μΈμμ data
μ μ λ¬νλ€.const fs = require("fs")
const getDataFromFile = function(filePath, callbackFn) {
return fs.readFile(filePath, 'utf-8', (err, data) => {
if(err) {
callback(err, null);
} else {
callback(null, data);
}
});
};
getDataFromFile('test.txt', (err, data) => console.log(data));
// 맀κ°λ³μλ‘ err, dataλ₯Ό λ°μ μ½μ λ‘κ·Έμ dataλ₯Ό μΆλ ₯νλ μ½λ°± ν¨μ