ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 제로부터 시작하는 Node.js - 4. 기본 내장 모듈
    내가 보기 위해 쓰는 것/Node.js 2019. 11. 1. 13:37

    저번 글에서 모듈을 만들고 사용하는 법을 알아봤는데요.

    이번에는 Node.js가 제공하는 내장된 모듈들에 대해서 알아보겠습니다.

     

    우선 내장 모듈은 굉장히 많아서 전부 외우는건 불가능합니다.

    그러니까 모듈의 정보를 찾는법, 활용법을 알 수있는 방법들에 더 중점을 두고 알아봅시다.

    이 글에서는 모듈 사용법, util모듈, file system모듈을 다룰 것입니다.

     

    node.js가 제공하는 기본 모듈은 버전에 따라서 정리된 공식 문서가 있습니다.

    저의 경우 12.~ LTS 버전을 사용하고 있으니 https://nodejs.org/dist/latest-v12.x/docs/api/

     

    Index | Node.js v12.13.0 Documentation

     

    nodejs.org

    이곳을 참고하면 되겠네요. 

     

    알게됬으니 모듈 사용법도 복습할 겸 하나 사용해봅시다.

    저는 url 모듈을 사용해보겠습니다.

     

    URL 문서를 한번 봅시다.

     

    모듈 추출법부터 알려주네요.

    url 멤버중 parse메서드를 사용해보겠습니다.

     

    const url = require('url')
    
    console.log(url.parse('https://kss7547.tistory.com/'))
    

     

     

    제 블로그 url을 객체화 시켜서 리턴했습니다.

     

    util모듈을 사용해보겠습니다. 간단한 모듈입니다.

     

    util모듈의 메서드는 format이 있습니다.

     

    const util = require('util')
    
    const data = util.format('%d + %d = %d', 123, 456, 123 + 456)
    console.log(data)
    

     

    마치 printf 같지만, 출력이 아니라 return을 하는 메서드네요.

     

    이제 file system 모듈입니다.

    꽤 중요한 모듈임으로 자세히 알아보겠습니다.

     

    메서드 설명
    readFile(file, encoding, callback) 파일을 비동기적방식으로 읽습니다.
    readFileSync(file, encoding) 파일을 동기방식으로 읽습니다.
    writeFile(file, data, encoding, callback) 파일을 비동기방식으로 씁니다.
    writeFIleSync(file, data, encoding) 파일을 동기적으로 씁니다.

     

    파일을 다루기 위해서 간단한 텍스트파일을 준비합니다.

     

    세팅

    간단하게 파일을 읽는 코드입니다.

     

    const fs = require('fs')
    
    let text = fs.readFileSync('./file.txt', 'utf8')
    
    console.log(text)
    
    

     

    Sync가 없는 비동기 방식으로도 사용해봅시다. 

     

    const fs = require('fs')
    
    fs.readFile('./file.txt', 'utf8', (err, data) => {console.log(data)})

    콜백형식으로 콘솔로그 처리를 했습니다.

     

    이제 write메서드도 사용해봅시다.

     

    const fs = require('fs')
    
    let data = 'im not dumb'
    
    fs.writeFile('./otherFile.txt', data, 'utf8', function (error) {
      console.log('data insert COMPLETE!!!!')
    })
    

     

    기존 파일에 write를 하면 붙여서 쓰이는게 아니라 덮어쓰기가 되니까 주의합시다.

     

    마지막으로 예외처리에 대해서 알아보고 마무리 할까 합니다.

    파일을 건드는 일은 생각보다 위험한 일입니다.

    읽으려 했는데 파일이 없거나, write권한이 없는폴더, 없는폴더에 쓰려고 하면 예외가 발생해 프로그램이 바로 종료됩니다.

     

    예외상황이 있다면 예외처리를 해줘야겠죠?

    동기와 비동기 방식에 대해서 둘다 예외처리법을 알아봅시다.

     

    동기처리의 예외처리법입니다.

     

    const fs = require('fs')
    
    try {
      let data = fs.readFileSync('./file.txt', 'utf8')
      console.log(data)
    } catch (error) {
      console.log(error)
    }
    
    try{
      fs.writeFileSync('./otherFile2.txt', 'hello file2', 'utf8')
      console.log('FILE WRITE COMPLETE')
    } catch (error) {
      console.log(error)
    }
    

     

    익숙한 try~catch문이네요.

     

    비동기처리의 예외처리법입니다.

     

    const fs = require('fs')
    
    fs.readFile('./File.txt', 'utf8', function (error, data) {
      if(error) console.log(error)
      else console.log(data)
    })
    
    fs.writeFile('./otherFile3.txt', 'hello file3', 'utf8', function (error) {
      if (error) console.log(error)
      else console.log('FILE WRITE COMPLETE')
    })
    

     

    콜백함수의 첫번째 매개변수는 에러정보가 뜨는 것을 이용한 콜백 예외처리입니다.

     

    이 글은 여기까지입니다. 나온 모듈을 외우라는 의미가 아닌 모듈 사용법과 모듈 멤버등을 알아볼 수 있는 방법에 초점을 둔 글임을 생각해주세요.

     

    다음글은 이벤트처리입니다.

    댓글

Designed by Tistory.