[TIL]1201-Node.js(1)
10523 단어 엘리스SW엔지니어트랙TILTIL
NPM과 모듈
NPM이란?
- Node Package Manager
- Node.js 프로젝트를 관리하는 필수적인 도구
NPM 온라인 저장소
- 수많은 오픈소스 라이브러리와 도구들이 업로드 되는 저장소.
- 필요한 라이브러리나 도구를 손쉽게 검색 가능.
- Node.js의 인기로, 거대한 생태계를 보유.
커맨드라인 도구
- 프로젝트 관리를 위한 다양한 명령어를 제공
package.json
- 프로젝트 관련 정보들이 저장되는 파일
- 이파일을 직접 수정하고나 npm명령어를 사용하여 프로젝트 정보수정 가능
의존성 관리하기
- 프로젝트 내에서 사용하는 라이브러리를 관리하는 방법
- 프로젝트가 실행되기 위해 라이브러리에 의존하기 때문에
- 이러한 라이브러리들을 dependency(의존성)라고 한다.
라이브러리란?
- 특정 기능을 수행하는 코드의 묶음
- 복잡한 기능을 직접 작성하지 않고, 다른 사람이 구현한 것을 사용하는 방법
- Node.js 에서는 패키지 라고도 부른다.
NPX 란?
- npm 패키지를 설치하지 않고 사용할 수 있게 해주는 도구
- node.js의 특정 버전을 사용하여 js파일을 실행할 수 있다.
- github gist 코드를 다운 받지 않고 바로 실행 가능하다.
Node.js의 모듈 이란?
- 간단한 프로그램이라면 파일 하나로도 가능
- 프로젝트가 커지면 기능에 맞게 코드를 분리하는 것이 중요하다
- 모듈은 코드를 분리하기 위한 방법
모듈과 패키지
- 패키지는 모듈의 모음
Node.js의 기본 제공 모듈 console
- 브라우저에서 제공 되는 console과 유사한 디버깅 도구
- log,warn,error 함수로 로그 레벨 표시
- time, timeLog,timeEnd 함수로 시간 추적
Node.js의 기본 제공 모듈 process
- 현재 실행프로세스 관련 기능 제공
- arch,argv,env 등 실행 환경 및 변수 관련 값 제공
- abort,kill,exit 등 프로세스 동작 관련 함수 제공
Node.js의 기본 제공 모듈 fs
- 파일 입출력을 하기 위해 사용
- readFile, writeFile 함수로 파일 읽기, 쓰기
- Sync 함수 제공. 동기조작
- watch로 파일/디렉터리 변경 이벤트 감지
Node.js의 기본 제공 모듈 http
- http서버,클라이언트를 위해 사용
- createServer 함수로 서버 생성
- Request 함수로 http 요청 생성
모듈의 기본적인 작성법
// index.js
const name = "yun";
const age = 26;
const nationality = "korea";
module.exports = {
name,
age,
nationality,
};
// 모듈이 load 될때 사용될 값을 module.exports로 내보냄.
// ---
const man = require("./index.js");
// man 출력값 {name : "yun", age: 26, nationality: "korea"}
변수명으로 export 하는 모듈 작성법
// index.js
const name = "yun";
const age = 26;
const nationality = "korea";
exports.name = name;
exports.age = age;
exports.nationality = nationality;
// 모듈을 object로 만들고, 각 key-value를 지정해서 내보냄.
// ---
const man = require("./index.js");
// man 출력값 {name : "yun", age: 26, nationality: "korea"}
함수를 export하는 모듈 작성법
// index.js
module.exports = (name, age, nationality) => {
return {
name,
age,
nationality,
};
};
// 모듈을 함수로 만들어서 모듈 사용 시에 값을 정할 수 있게 내보냄.
// ---
const man = require("./index.js")("yun", 26, "korea");
// man 출력값 {name : "yun", age: 26, nationality: "korea"}
모듈의 사용 방법
- require 함수를 통해 모듈을 load 할 수 있다.
- Java에서 import와 유사
- 의존성 패키지, 직접 작성한 모듈 사용 가능하다.
모듈의 사용 방법 - require 동작의 이해
- require 할 때 모듈 코드가 실행된다.
- Node.js의 모듈은 첫 require 시에 cache, 두 번 실행하지 않는다.
- 모듈 코드를 여러 번 실행하기 위해선 함수 모듈로 작성한다.
모듈의 사용 방법 - npm 패키지
const dayjs = require("dayjs");
console.log(dayjs());
- 의존성 패키지들은 require('package-name')로 load 할 수 있다.
- 패키지를 사용하려면 node_modules에 내려받아져 있어야 한다.
모듈의 사용 방법 - 직접 작성한 모듈
const myModule = require("./my-module");
console.log(myModule);
- 직접 작성한 모듈은 현재 파일과의 상대 디렉터리로 load
- my-module이 .js 파일인 경우 해당 파일 load
- my-module이 디렉터리인 경우 my-module/index.js 파일 load
모듈의 사용 방법 - 함수형 모듈
const myFunctionModule = require("./my-function-module");
console.log(myFunctionModule(name, age, nationality));
- 함수형 모듈은 load한 경우 모듈이 바로 실행되지 않는다.
- 필요한 시점에 load된 함수를 실행하여 모듈을 사용할 수 있다.
모듈의 사용 방법 - json 파일
// my-data.json 을 가지고 있다.
const myData = require("./my-data");
console.log(myData);
- require로 json 파일도 load 가능하다.
- object로 자동파싱 된다.
ES Module
- ES6에서 등장한 JavaScript의 공식적인 표준 모듈
- JavaScript는 기본적으로 '모듈'을 제공하고 있지 않았다.
- Node.js는 독자적인 방식을 통해 모듈을 지원하고 있었다.(commonjs)
- ES Module의 등장으로 Node.js에선 두 가지 모듈을 지원할 필요가 생겼다.
ES Module과 commonjs
- ES Module과 commonjs는 문법과 기본적인 동작 방식이 다르다.
- commonjs는 module.exports와 require로 모듈을 만들고 사용
- ES Module은 export와 import로 모듈을 만들고 사용
Author And Source
이 문제에 관하여([TIL]1201-Node.js(1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@sza0203/엘리스-SW-엔지니어-트랙-6주차-Node.js-기초2
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// index.js
const name = "yun";
const age = 26;
const nationality = "korea";
module.exports = {
name,
age,
nationality,
};
// 모듈이 load 될때 사용될 값을 module.exports로 내보냄.
// ---
const man = require("./index.js");
// man 출력값 {name : "yun", age: 26, nationality: "korea"}
// index.js
const name = "yun";
const age = 26;
const nationality = "korea";
exports.name = name;
exports.age = age;
exports.nationality = nationality;
// 모듈을 object로 만들고, 각 key-value를 지정해서 내보냄.
// ---
const man = require("./index.js");
// man 출력값 {name : "yun", age: 26, nationality: "korea"}
// index.js
module.exports = (name, age, nationality) => {
return {
name,
age,
nationality,
};
};
// 모듈을 함수로 만들어서 모듈 사용 시에 값을 정할 수 있게 내보냄.
// ---
const man = require("./index.js")("yun", 26, "korea");
// man 출력값 {name : "yun", age: 26, nationality: "korea"}
const dayjs = require("dayjs");
console.log(dayjs());
const myModule = require("./my-module");
console.log(myModule);
const myFunctionModule = require("./my-function-module");
console.log(myFunctionModule(name, age, nationality));
// my-data.json 을 가지고 있다.
const myData = require("./my-data");
console.log(myData);
Author And Source
이 문제에 관하여([TIL]1201-Node.js(1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sza0203/엘리스-SW-엔지니어-트랙-6주차-Node.js-기초2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)