메뉴 건너뛰기

조회 수 134 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

1. Node.js

 

  • Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임을 의미한다.
  • 런타임이란 해당 프로그래밍 언어로 작성된 코드가 구동되는 환경을 말한다. 브라우저가 대표적인 JavaScript 런타임이다.
  • 결국 Node.js란 JavaScript 코드가 구동되는 환경을 말하며, 브라우저 외부에서도 JavaScript 프로그래밍이 가능하게 하였다.
  • 다음과 같은 두 가지 방식으로 JavaScript 런타임을 제공한다.
    1. REPL (Read, Evaluate, Print, Loop) : 사용자의 입력을 받아(Read) 그 코드를 평가(Evaluate) 및 실행하고, 그 결과를 화면에 출력(Print)해주는 작업을 반복(Loop)한다. 이는 윈도우의 cmd 혹은 리눅스의 터미널 등에서 사용될 수 있다.
    2. JavaScript로 작성된 소스 파일을 직접 실행할 수 있다. REPL로 한 줄 한 줄 읽어서 실행한 것과 동일하다고 볼 수 있다.
  • 많은 사람들이 Node.js를 장고(Django)나 스프링(Spring)과 같은 백 엔드 어플리케이션으로 간주하는 경향이 있다. 하지만 엄밀히 말하면 이는 잘못된 말이다. Node.js는 단순히 JavaScript 코드가 구동될 수 있는 환경을 말할 뿐이며, 그 환경 하에서 백 엔드 어플리케이션도 만들 수 있을 뿐이다. 예를 들어 백 엔드 어플리케이션에 해당하는 코드를 JavaScript로 작성하고 이를 Node.js 환경에서 실행시키면 그것이 곧 백 엔드 어플리케이션의 역할을 수행하는 것이다. 반면에 Node.js 환경에서는 프론트 엔드 개발도 가능하다. 예를 들어, React를 활용하여 웹을 개발할 때 사용하는 create-react-app(React 프로젝트를 생성할 때 사용), babel(JavaScript 컴파일러), 그리고 webpack(모듈 번들러) 등이 Node.js 환경에서 실행되는 대표적인 프로그램에 해당한다.
  • create-react-app, babel, webpack 등과 같이 Node.js 환경에서 실행될 수 있도록 누군가 JavaScript로 작성해놓은 각종 프로그램들을 Node.js 패키지라고 부른다. 이 용어는 이어서 설명할 npm과 아주 밀접한 관련이 있다.

 

2. npm (node package manager)

 

  • Node.js 패키지들을 쉽게 설치하거나 관리할 수 있도록 돕는 프로그램을 말하며, Node.js 설치 시 함께 설치된다.
  • 예를 들어, JavaScript 컴파일러에 해당하는 babel 혹은 모듈 번들러에 해당하는 webpack의 경우 npm을 이용하면 쉽게 설치하는 것이 가능하다.
  • package.json
    • 반드시 JSON 형식으로 작성되어야 한다. (확장자가 .json이기 때문)
    • 프로젝트의 의존성을 명시한다. 즉, 해당 프로젝트가 필요로 하는 Node.js 패키지들의 목록을 명시한다.
    • "npm install" 명령어는 package.json 파일을 읽어서 해당 프로젝트에서 필요한 Node.js 패키지들을 한 번에 설치해준다.
    • package.json 파일에 대한 자세한 내용(+ package-lock.json 파일에 대한 내용)이 궁금하다면 여기를 참조하자.

 

3. npx (since @npm 5.2.0)

 

  • node_modules/.bin 폴더에 있는 바이너리를 실행시킨다. 만약 이것이 없다면 이를 위한 Node.js 패키지를 임시로 설치한다.
  • 기본적으로, npx는 실행하고자 하는 바이너리를 시스템의 환경 변수인 $PATH에서 먼저 탐색한다. 그런데 여기서 탐색에 실패하게 되면 node_modules/.bin 폴더에서 해당 바이너리를 탐색한다. 그런데도 탐색에 실패하면, 해당 바이너리가 없다는 의미이므로 필요한 Node.js 패키지를 자동으로 임시 설치한다.
  • (--package 혹은 -p 옵션을 사용하지 않았을 때) 바이너리 탐색에 실패하면, 어떤 Node.js 패키지를 설치하게 될까? 이때는 설치해야 하는 패키지의 이름이 해당 바이너리의 이름과 같다고 가정해버린다. 따라서 실행하고자 하는 바이너리의 이름과 패키지의 이름이 다르다면, 반드시 해당 패키지를 먼저 설치해주거나 --package 혹은 -p 옵션으로 해당 패키지 이름을 명시해줘야 한다.
  • 임시 설치라는 것은 설치 후에 바이너리를 실행하고 나면 다시 해당 패키지를 삭제한다는 것을 의미한다. 이는 저장 공간을 절약할 수 있고 항상 최신 버전의 패키지를 사용할 수 있다는 장점이 있다. 따라서 create-react-app 등의 패키지 사용 시에 유용하다.

  1. select 당일 날짜 출력

  2. No Image 22Dec
    by
    2016/12/22 Views 7358 

    response.setHeader

  3. No Image 26Mar
    by
    2021/03/26 Views 1438 

    opener 값전달, 함수실행.(자식창에서 부모창으로 값전달, 함수실행)

  4. No Image 21Sep
    by
    2016/09/21 Views 7001 

    onkeypress 키보드 이벤트 처리하는 법 – text, textarea

  5. No Image 20Jan
    by 조쉬
    2023/01/20 Views 134 

    Node.js와 npm(+ npx)의 개념

  6. No Image 19Jun
    by
    2015/06/19 Views 9406 

    location.href 로 새창 여는 방법 (target=_blank 효과)

  7. Location 객체 - URL 파싱 - URL에서 전달인자 추출하기 함수 작성

  8. No Image 29Aug
    by
    2018/08/29 Views 1622 

    key pressing 누르거나 클릭중인 이벤트 예제

  9. JSON API - JSON.parse(), JSON.stringify() ( json 형태의 문자열을 JSON객체로 , JSON객체를 문자열로 )

  10. jQuery 이미지 슬라이드 오버시 큰이미지 보여주기 소스

  11. No Image 27Oct
    by
    2018/10/27 Views 1732 

    jQuery 엘리먼트 선택

  12. No Image 06Apr
    by
    2015/04/06 Views 11698 

    jquery 메뉴 - 아래로 한번에 전체가 펼처짐

  13. No Image 11Sep
    by
    2016/09/11 Views 5518 

    jquery 기본 엘리먼트 속성제어방법

  14. No Image 01Sep
    by
    2016/09/01 Views 7277 

    jquery offset()을 이용한 부드러운 스크롤 이동

  15. jqgrid 이용한 그리드 활용하기

  16. JDK6 (Java SE Development Kit 6)이하 버전 다운로드 주소

  17. No Image 17Nov
    by
    2016/11/17 Views 9821 

    javascript 화면 캡쳐

  18. No Image 28Sep
    by
    2018/09/28 Views 3252 

    JavaScript 출생년도에 따른 나이 계산 자바스크립트

  19. No Image 01Mar
    by
    2014/03/01 Views 32584 

    javascript 인쇄 미리보기, 출력, 페이지 설정 등

  20. No Image 21Sep
    by
    2016/09/21 Views 5657 

    javascript 에서 제공하는 3가지 종류의 팝업박스

Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved