ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Node.js 시작하기
    개발 2020. 4. 27. 23:58
    Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 입니다.
    Node.js는 이벤트 기반, 논블로킹 I/O 모델을 사용해 가볍고 효율적입니다.

     

    자바스크립트 런타임

    노드는 자바스크립트 런타임이라고 했습니다. 런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻합니다.

    즉, 노드는 자바스크립트로 작성한 프로그램을 컴퓨터에서 실행할 수 있게 해줍니다.

     

    기존에 자바스크립트로 작성한 프로그램은 웹 브라우저에서만 실행할 수 있었습니다. ( 브라우저도 자바스크립트 런타임입니다. )

    하지만 브라우저 외의 환경에서 자바스크립트를 실행하게 되면 자바스크립트의 실행 속도 문제 때문에 큰 호응을 얻지 못했습니다.

    2008년 구글이 V8 엔진을 사용하게 되어 크롬을 출시하였고, 당시 V8 엔진은 다른 자바스크립트 엔진과 달리 매우 빨랐고, 코드도 오픈소스로 공개되었습니다. 

    개발자들은 브라우저 안에서만이 아니라 브라우저 밖에서도 자바스크립트를 사용하고 싶었고, 브라우저에서 동작하도록 작성한 소스를 그대로 가져와 독립적 환경에서 동작시키고 싶었습니다. 이러한 요구에서 2009년에 Node.js가 탄생하게 되었습니다.

     

    NVM ( node version manager )

    Node.js는 하나의 프로그램이라고 볼 수있습니다.

    프로그램에는 당연히 버전이 존재하고 버전은 한 가지만 있는게 아니라 많은 버전들이 존재합니다.

    Node.js 홈페이지에 들어가서 Node를 설치하면 가장 최신 버전 혹은  LTS버전을 보여줍니다. 버전에는 이 두가지 버전 뿐만 아니라 더 많은 버전들이 존재하는데 개발을 하다 보면 다양한 node.js 버전에 대응해야 할 일들이 많이 생깁니다.

     

    Node 10.13.0 버전에서는 내가 짠 코드가 잘 돌아갔는데, Node 12.13.0 버전에서는 안 돌아가는 경우가 있습니다.

    이 경우에는 간단히 버전만 업데이트 해주면 손 쉽게 해결되지만 만약, 다시 이 전 버전으로 돌아가고 싶다면 Node를 지우고 다시 설치해야 하는데 그럼 이렇게 버전을 옮길 때 마다 지우고 설치해야 한다면 매우 번거로울 것입니다.

     

    이런 문제를 해결할 수 있는게 NVM 입니다.

    NVM을 통해 간단한 명령어로 노드를 설치하고 다양한 노드의 버전을 손쉽게 옮겨 다닐 수 있습니다.

    NVM도 하나의 프로그램이므로 당연히 설치과정이 필요합니다.

     

    NPM ( node package manager ) 

    NPM은 일종의 앱스토어라고 할 수 있습니다.

    필요한 모듈을 다운로드할 수 있고, 이 모듈들이 모여있는 모듈 스토어입니다. node 모듈을 사용하는 프로젝트에서 npm이라는 키워드는 하나의 명령어처럼 사용되기도 합니다. npm start처럼, 프로젝트를 실행시킬 때 npm 키워드를 사용하기도 합니다.

    또한 npm을 통해 자신의 프로젝트에서 사용 중인 패키지들의 버전 업데이트도 관리할 수 있습니다.

    모든 npm 패키지들은 package.json이라는 파일 내에 정의되고, 이는 모두 JSON으로 작성됩니다.

     

    package.json

    package.json에는 해당 프로그램을 실행시키기 위해 필요한 모듈들이 무엇이 있는지, 프로그램을 실행시키는 방법, 프로그램을 테스트하는 방법 등이 명시되어 있습니다. 

    그렇다고 실제 모듈이 들어가 있는 것은 아니고 어떤 모듈인지만 적혀 있습니다. 실제 모듈들은 node_modules 라는 폴더에 모두 들어가 있습니다.

     

    즉, 전자제품을 보러 갔을 때 제품 카탈로그만 보면 어떤 제품이 있는지 파악할 수 있는 것처럼 package.json만 보면 어떤 모듈이 들어가 있는지를 알 수 있는 것입니다.

     

    package.json이 주는 또 하나의 이점은 프로젝트 코드를 전달할 때, 포함하고 있는 모든 모듈을 다 전달하지 않아도 된다는 점 입니다.

    프로젝트 코드를 넘겨줄 때, 필요한 모듈은 package.json에 적혀 있으니 직접 다운받아 쓰면 된다고 말해주면 됩니다. 필요한 모듈까지 모두 넘겨주는 것은 전달해야 하는 파일도 너무 많아서 사용하는 사람이 직접 다운 받아서 쓰라고 하고 우리는 무엇이 필요한지만 이 package.json에 명시해두면 되는 것입니다.

     

    node_modules는 npm install 명령어로 언제든지 설치할 수 있습니다. 

    만약, npm install 명령어를 통해 설치한 node_modules를 다시 삭제한다고 해도 package.json에 설치한 패키지 내역이 들어 있으므로 다시 npm install 명령어로 재설치가 가능합니다.

     

    그렇다면 다음 코드는 package.json 파일입니다. 이 코드를 통해  package.json  내부를 살펴보겠습니다.

     

    {
      "name": "immersive-prep",
      "version": "1.0.0",
      "description": "Repository for preperation immersive course.",
      "main": "index.js",
      "scripts": {
        "test": "jest",
        "test:example": "jest test-example/",
        "test:passme": "jest pass-me/",
        "test:watch": "jest --watch",
        "lint": "eslint **/*.js --quiet",
        "submit": "node .travis/submit.js"
      },
      "keywords": [
        "linter",
        "testing",
        "recursion",
        "underbar"
      ],
      "author": "codesatates",
      "dependencies": {},
      "devDependencies": {
        "eslint": "^6.8.0",
        "jest": "^25.4.0"
      }
    }
    

    1. name

    해당 패키지의 이름 입니다. 

    2. version

    해당 패키지의 버전입니다.

    3. description

    해당 프로젝트의 설명입니다.

    4. maiin

    자바스크립트 실행 파일 진입점입니다. 보통 마지막으로 module.exports를 하는 파일을 지정합니다.

    5. scripts

    npm 으로 실행시킬 수 있는 명령어를 정의합니다. 명령어를 입력하면 어떤 동작을 해야하는지가 적혀 있습니다.

    예를들어 npm test 명령어를 입력하면 "test 파일을 node에서 실행시켜라" 하는 내용이 들어있습니다.

    여기에 정의해두지 않고 npm test와 같이 실행하게 되면 정의되지 않은 명령어 라는 오류 메세지가 나옵니다. package.json 파일 scripts에 해당 명령어가 정의되어 있는지를 항상 확인해야 합니다.

    6. keywords

    키워드는 npm 공식 홈페이지 https://www.npmjs.com/ 에서 패키지를 쉽게 찾을 수 있게 해줍니다.

    7.dependencies

    해당 프로젝트가 돌아가기 위해 반드시 필요한 모듈들이 무엇인지 적혀 있습니다. 설치한 패키지들이 dependencies 속성에 기록됩니다.

    8.Devdependencies

    이 프로젝트를 개발하는 환경에서 필요한 모듈들이 무엇인지가 적혀 있습니다. 예를 들면 코드 모양을 잡아주는 lint나 테스팅 모듈처럼, 실제 프로젝트 동작에 직접적으로 영향을 주지 않는 모듈들을 명시합니다.

    즉, 개발용 패키지들만 따로 관리할 수 있는 것입니다.

     

     

    node.js 에 대해서 전부를 설명하지는 않았지만 처음 시작하는 도입부 이기 때문에 간략하게만 적어보았습니다.

    더 자세한 내용은 이어지는 컨텐츠들에서 차근차근 풀어나가 보도록 하겠습니다. 

    package.json 은 npm init 이라는 명령어로 첫 프로젝트를 생성할 때 만들어 지는데 이 부분도 뒤에오는 컨텐츠들에서 다루고자 하니 참고해주시면 감사하겠습니다.

     

    마찬가지로 nvm이나 npm나 eslint 등등 설치하는 것들은 공식문서 또는 구글링에 너무도 잘 나와있기 때문에 따로 작성하지 않았습니다.

Designed by Tistory.