런타임이란?
- 런타임이란 프로그래밍 언어가 구동되는 환경입니다. 런타임 이란 어떤 프로그램이 동작할 때, 프로그램이 동작하는 곳입니다
자바스크립트의 런타임
- 자바스크립트의 대표적인 런타임은 브라우저(웹 페이지)와 node.js(서버)가 있다
- HTML
<script>
태그 내에 자바스크립트를 작성하면 웹 브라우저가 동작하고, CIL환경에 node<file_name>명령어를 프롬프트에 입력하면 node.js가 동작한다.- Node.js는 http서버가 내장되어 있기 때문에 보통은 서버로 많이 사용합니다. 하지만 응용 프로그램을 실행하는 데 쓸 수도 있습니다. 웹팩, 바벨과 같은 도구들과 일렉트론 같이 자바스크립트로 데스크탑 프로그램을 만드는 프레임워크가 모두 Node.js를 기반으로 돌아갑니다
nvm & node.js 설치
0.nvm이란?
- nvm은 node.js의 다양한 버전을 관리하는 프로그램이다
- nvm을 사용하면 node.js의 다양한 버전을 쉽게 설치하고, 사용,관리 할 수 있습니다.
1.nvm (Node Version Manager)설치
1) nvm공식문서에서 install링크를 터미널에 복붙2) 설치후 nvm-version 확인을 꼭 해야한다
- 버전이 잘 나온다면,NVM 설치 성공
- 저같은 경우는
zsh: command not found: nvm
만 출력되고 명령어가 먹지않아 구글링을통해 해결했습니다
zsh: command not found: nvm
2.nvm을 이용한node.js 설치
1) nvm을 이용해 node.js 설치
- 터미널에서
nvm install --lts
2) 설치확인
- 터미널에서
node -v
nvm 간단 사용법
node.js는 많은 버전이 있고 ,개발을 하다 보면 node.js의 다양한 버전에 대응해야 할 경우가 있다.
node를 업그레이드하는 경우nvm install --lts
를 이용해 최신버전을 설치할 수 있다,
이전 버전의 경우 nvm을 이용한다. nvm을 통해 간단한 명령어로 node를 설치하고, 다양한 버전을 손쉽게 옮겨 다닐 수 있다.1. 현재 설치한 node들의 버전 확인
nvm ls
2. 특정 node버전 설치
nvm install 버전넘버
3. 다른 버전으로 변경하기
nvm use 버전넘버
npm
- Node.js에서는 자주 쓰이고 재사용되는 자바스크립트 코드들을 패키지로 만들어서 사용할 수 있고 그러한 패키지를 모아놓은 저장소가 npm이다
- Node.js를 설치하면 자동으로 npm이 설치됩니다
- 바퀴를 재발명하지 마라는 말처럼 우리는 npm을통해 필요에따라 기존에 만들어진 npm모듈들을 이용하면된다
1.npm 명령어
1)npm 버전확인
npm-v
2)npm 최신버전으로 업데이트
npm update -g npm
3)npm 모듈설치
npm install (모듈이름)
4)package.json 만들기
npm init
5)package.json에 작성한 script실행
npm run <스크립트 이름>
pacakge.json
0.개요
- pacakge.json에는 어떤 프로그램을 실행시키기 위해 필요한 모듈들이 무엇이고, 프로그램을 실행시키는 방법과 프로그램을 테스트하는 방법등(프로젝트에 관한 정보,CLI에서 사용가능한 명령,개발과 관련된 dependencye들)이 명시되어있다.즉 정보를 담아둔 곳이다
- npm install 커맨드로 packge.json에 작성된 프로그램을 실행시키기 위해 필요한 모듈들을 설치할수있고, 실제 모듈은 node_modules이라는 폴더에 따로 저장된다
1.packge json의 이점
- 프로젝트 코드를 전달할 때, 포함하고 있는 모든 모듈을 다 전달하지 않아도 된다.
- 협업시 packge.json을통해 필요한 모듈들이 무엇인지 다 파악할수있고, 간단한 커맨드로 설치도 편하게 할 수 있다
2.packge.json들여다보기
1)devDependencies
- 프로그램 실행과 관계없는 오로지 개발을 위해 필요한 모듈들이 작성되어있다
- 키에 적힌 것은 모듈 이름입니다. 값은 버전입니다
- npm install 이용시 --save-dev옵션과 함께 설치하면 자동으로 devDependencies에 추가됨
2)dependency(의존성 모듈)
- dependencies는 어떤 프로젝트가 동작하기위해 반드시 필요한 모듈들이 무엇인지 적혀있다
- 키에 적힌 것은 모듈 이름입니다. 값은 버전입니다
- npm install 사용시 --save 옵션과 함께 설치하면 자동으로dependcies에 추가 된다(생략가능)
3)scripts 항목
- scripts항목은 CLI에서 사용가능한 명령이 적혀있다.
- 주로 실행,테스트.코드검사(lint)등을 기술한다.
- 이를 npm script라고 부른다
- 실행은 npm run<스크립트 이름>으로 실행한다
filename & dirname
__filename
: 현재파일경로__dirname
: 현재폴더(디렉토리)경로
require & module.exports
1.node.js에서는 모듈을 불러오기 위해 require()함수를 쓴다
2.require()는 module.exports를 리턴한다.
3.기본적으로 module.exports는 빈객체이다
4.exports는 module.exports를 refer하고 있으며, shortcut에 불과하다.
require의 인수가 파일인경우
모듈을 내보낼때는 ES6처럼 명시적으로 선언하는 것이아니라 특정 변수나 그 변수의 속성으로 내보낼 객체를 세팅해줘야한다.
1)여러개 내보내기/불러오기
- 내보내기
- currency-functions.js 파일내에는 3개의 함수가있는데 2개의 함수만 다른 파일에서 접근할 수 있도록 내보내기를 함
exports
로 세팅/* currency-functions.js */ const exchangeRate = 0.91; function roundTwoDecimals(amount) { return Math.round(amount * 100) / 100; } const canadianToUs = function (canadian) { return roundTwoDecimals(canadian * exchangeRate); }; function usToCanadian(us) { return roundTwoDecimals(us / exchangeRate); } exports.canadianToUs = canadianToUs; // 내보내기 1 exports.usToCanadian = usToCanadian; // 내보내기 2
- 불러오기
require
키워드를 통해 한번에불러와 변수에 할당후 객체처럼 접근할 수 있음/* test-currency-functions.js */ const currency = require("./currency-functions"); console.log("50 Canadian dollars equals this amount of US dollars:"); console.log(currency.canadianToUs(50)); console.log("30 US dollars equals this amount of Canadian dollars:"); console.log(currency.usToCanadian(30));
2)묶어서 하나로 내보내기
- 내보내기
- 내보낼 함수들을 한객체에 넣어서 내보냄
module.exports
사용/* currency-class.js */ const exchangeRate = 0.91; // 안 내보냄 function roundTwoDecimals(amount) { return Math.round(amount * 100) / 100; } // 내보내기 const obj = {}; obj.canadianToUs = function (canadian) { return roundTwoDecimals(canadian * exchangeRate); }; obj.usToCanadian = function (us) { return roundTwoDecimals(us / exchangeRate); }; module.exports = obj;
- 불러오기
- 내보내진 객체를 require해와 변수에할당후 객체처럼 사용
/* test-currency-object.js */ const currency = require("./currency-object"); console.log("50 Canadian dollars equals this amount of US dollars:"); console.log(currency.canadianToUs(50)); console.log("30 US dollars equals this amount of Canadian dollars:"); console.log(currency.usToCanadian(30));
require의 인수가 폴더인경우
- require 함수의 인수에는 파일뿐만 아니라 디렉터리를 지정할 수도 있습니다.
아래와같은 파일구조가있다 만약 아래처럼 모듈을 명시하지 않고 require함수호출시(인수가 폴더인경우) 해당 디렉토리의 index.js를 로드한다 이때 로드되는 index.js 내에서 calc.js과 print.js를 require하면 한번의 require로 alc.js과 print.js의 모든 기능을 사용할 수 있겠죠
NODE.js 내장 모듈사용하기
- Node.js 내장 모듈 목록은 다음 링크에서 찾을 수 있습니다.
1.불러오기
2.공식문서를통해 메서드 확인후 사용하기
3rd-party 모듈을 사용하기
- 공식적으로 제공하는 빌트인 모듈(built-in module)이 아닌 모든 외부 모듈을 일컫습니다
1.모듈 설치하기
npm install 모듈이름
2.불러오기
const 변수명 = require('모듈이름')
3.해당모듈의 공식문서를이용해 사용법 확인후 사용