TIL | Node의 특징 / npm , 포맷터, 린터

김윤희·2022년 9월 24일
0

📍 Node의 특징, 강점, 약점

  • io는 지금까지와는 다르게 되어야한다 라고 node를 개발한 사람은 말했다
    • 이는 노드가 무엇을 위해서 만들어졌는지 알려주는 핵심적인 말이다
    • 비동기 성질을 이용해 I/O bound 프로그램에 가장 큰 문제인 요청하고 기다리기를 해결하는 열쇠로 보았다
      • JavaScript식 비동기 처리 방식은 cllback을 사용하도록 되어있는데, 이것은 기존 io 방식에서 한 줄씩 실행되야 다음줄로 넘어가던 걸 응답이 오기 전에도 다음줄을 실행할 수 있다 - 일단 다 요청을 보내버리고 돌아오면 하나씩 대응하도록 ) - 기존 JavaScript의 특성
  • Offloading 방식
    • 저수준의 오래걸리는 일은 Node에게,
      고수준의 로직은 메인 스레드에서
    • Node가 빠른 속도와 매우 높은 확장성을 가지는 근본적인 이유이다
  • Node의 대표적인 약점은 저수준( 컴퓨터 친화적인 ) 처리는 Node가 빠르게 처리하기에 매우 어렵다
    ❗ 그래서 Node는 C와 WebAssembly모듈을 바인딩해 사용하는 방법을 제공한다
  • 방대한 오픈 소스 생태계로부터 많은 정보를 얻을 수 있다는게 장점인데 npm에 전부 오픈소스로 등록되어있다
    npm = Node를 위한 패키지 매니저

📍 npm , 포맷터, 린터

  • Node 패키지 매니저로 대표적인 건 npm인데, 노드를 설치할 때 자동으로 함께 설치가 된다
  • npm외에도 여러가지 패키지 매니저가 있는데(yarn, pnpm) 사용하려면 따로 설치해주어야한다
  • npm init -y
    • package.json을 생성
    • 아무것도 없는 빈 폴더에 package.json을 생성하게 되면 name, main 등.. 필드들이 있는데, node 패키지로 보고 생성을 하는 요소들이라서 패키지를 만들기 전에는 큰 의미가 없다
      • 만약 다 지운다면 scripts 하나가 남는데, npm을 사용하면서 자주 사용하게 되는 script들을 간단하게 호출할 수 있도록 만들어 준 필드이다
      • npm run [scripts안에 들어있는 명령어]

  • Node 프로젝트를 진행하다보면 여러가지 문제가 생길 수 있다( 포매팅이 계속 잘못될 수도 있고, 여러사람이 작업을 하면 엉망인 코드가 계속 들어올 수도 있고, 혹은 테스트가 되지 않은 코드들이 들어올수도 있고 등... )
  • 이런 여러가지 문제들을 IDE에서 제공하는 린터 , 포맷터 기능들을 사용해서 어느정도 해소할 수 있다
  • 우리가 완전히 문제에 맞닥뜨리기 전에, run 타임에 코드가 넘어가기 전에, 사용자들이 우리 서비스를 사용하기 전에 최대한 문제들을 잡아줄 수 있도록 환경을 만들어준다
  • Formatting : prettier
    • npm install --save-dev prettier
    • vscode 확장프로그램중에 prettier install 하기
    • 설정파일 작성해주기
  • Linting : ESLint
    • npm install --save-dev eslint
    • 설정파일 작성해주기
    • npm install --save-dev eslint-config-airbnb-base eslint-plugin-import
      (에어비앤비에서 내놓은 ESLint 플러그인이 있다)
      npm install --save-dev eslint-config-prettier
      (prettier로 클론을 지워주라는걸 같이 사용하고 있으면 에러나서 충돌이 생기면 설치)
      module.exports ={
      	extends: ['airbnb-base','prettier'] // prettier잘 동작하기 위해서는 맨뒤에 위치해야한다
      }
      // 아래와 같이 작성한다면 해당줄에 eslint 룰을 꺼준다 [no-console] 끌 룰까지 작성해주는게 좋다
      /*eslint-disable-next-line no-console*/ 
      console.log('Hello, world!')
    • npm install --save-dev eslint-plugin-node
      module.exports ={
      	extends: ['airbnb-base','plugin:node/recommended','prettier']
      }
      exports = 3 // 이렇게 작성하면 설치 한 plugin-node 해당룰이 잡아서 빨간줄이 뜬다

이렇게 Formatting, Linting를 사용한다면, 여러사람이 같이 코드를 작성하게 되면 이렇게 룰을 정하고 하는게 어느정도 버그를 잡아주기 때문에 도움이 될 것이다

0개의 댓글