TIL_200916_Node.js 기본 개념
오늘은 유튜브의 The Net Ninja의 Node.js Crash Course를 수강하면서 학습한 내용을 정리해보았습니다.
1. 코스의 학습 목표
- Node 설치 및 JS로 활용하는 방법 학습 ✅
- 컴퓨터에서 File을 Read & Write 하는 방법 학습
- 웹사이트를 구현할 때 Node.js로 어떻게 서버를 구축하는 지 학습
- Express app / website 구현하기
- MongoDB(NoSQL Database) 활용해보기
- HTML views를 구현하면서 Template Engines 활용해보기
- 심플한 블로그 사이트 구현해보기
2. Node.js의 역할
1) Node.js 이전의 세상
- JavaScript는 High Level 언어로서 컴퓨터가 바로 JS를 이해하지 못 함
- 크롬 브라우저에 있는 V8 엔진(C++로 작성됨)이 JS를 Machine Code로 Compile 해줌
- 하지만 JS는 V8과 같은 엔진이 있는 브라우저 상에서만 작동이 가능했음.
2) Node.js의 등장
- Node.js는 V8 엔진을 포괄(Wrap)하고 있으며, 똑같이 C++로 작성이 되어 있기 때문에 컴퓨터에 접근할 수 있음(Node.js가 설치된 환경에서)
- 브라우저에서만 활용이 가능했던 JavaScript가 Node.js 덕분에 컴퓨터나 서버에 접근할 수 있게 됨
- Node.js는 컴퓨터에 파일을 Read & Write 할 수 있음
- Node.js는 데이터베이스에도 연결 됨
- Node.js는 서버로도 작동할 수 있음
3. Node.js 기본 개념 정리
1) Node Global 관련 정리
// VSCode에 다음과 같이 입력 후 출력
console.log(global)
//Expected Output on terminal
Object [global] {
global: [Circular *1],
clearInterval: [Function: clearInterval],
clearTimeout: [Function: clearTimeout],
setInterval: [Function: setInterval],
setTimeout: [Function: setTimeout] {
[Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)]
},
queueMicrotask: [Function: queueMicrotask],
clearImmediate: [Function: clearImmediate],
setImmediate: [Function: setImmediate] {
[Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)]
}
}
- 위와 같이 Node 서버 환경에서 Global은 한정된 내장 함수들만이 존재
- 현재로서는 DOM 환경에 접근할 수 없음
console.log(__dirname__)
을 하면 폴더의 경로가 출력 됨console.log(__filename__)
을 하면 파일의 경로가 출력 됨
2) Modules & Require
2-1. Require의 기본 개념
// 아래 2줄은 people.js 파일의 코드임
const people = ['Si', 'Que', 'Dong', 'Bin', 'Goran']
console.log(people)
//아래 3 줄은 modules.js 파일의 코드임
const xyz = require("./people"); //people 파일이 실행됨
console.log(xyz); // 콘솔 창에 빈 obj{}를 출력
console.log(people) // people 변수가 없다고 에러 발생
- 위 코드에서 터미널 상에
node modules
를 입력하면 modules 파일의 1번 줄 때문에 people.js 파일이 실행되면서 Console 창에['Si', 'Que', 'Dong', 'Bin', 'Goran']
이 출력 됨 - people 변수의 경우에는 아직 Export가 되지 않았기 때문에 변수가 존재하지 않는다고 인지 됨
2-2. module.exports의 기본 개념
// 아래 2줄은 people.js 파일의 코드임
const people = ['Si', 'Que', 'Dong', 'Bin', 'Goran']
console.log(people)
module.exports = 'hello'
//아래 3 줄은 modules.js 파일의 코드임
const xyz = require("./people"); //people 파일이 실행됨
console.log(xyz); // 'hello'가 출력 됨
- 위 코드의 경우 터미널 상에
node modules
를 입력하여 실행하면, modules.js에require
로 people.js를 불러오기 때문에 people.js 파일이 실행 되어 콘솔창에['Si', 'Que', 'Dong', 'Bin', 'Goran']
이 출력 되고 const xyz
는module.exports
의 값인'hello'
를 받아오기 때문에 마찬가지로 콘솔 창에hello
가 출력 됨- 이처럼
module.exports
를 한 값(혹은 변수)이import
됨
2-3 module.exports로 다양한 모듈(변수)을 불러오기
// 1. 아래는 people.js 파일의 코드임
const people = ['Si', 'Que', 'Dong', 'Bin', 'Goran'];
const ages = [20, 25, 30, 35];
module.exports = {
people: people, //exports 객체에 people key에 people을 할당
age: age
}
// 2. 아래는 위 people.js를 Refactoring 한 코드 임
const people = ['Si', 'Que', 'Dong', 'Bin', 'Goran'];
const ages = [20, 25, 30, 35];
module.exports = {
people, age
}
/* module.exports의 key와 property 명이 같으면 하나로 입력 가능
------------------------------------------------------*/
// 3. 아래 3 줄은 modules.js 파일의 코드임
const xyz = require("./people"); //people 파일을 불러옴(실행)
console.log(xyz.people, xyz.age);
// 각각 people 배열과 age 배열이 출력 됨
//4. 위 modules.js의 xyz에 Destructuring을 활용하는 방법
const { people, age } = require("./people")
console.log(people, age)
/* people.js에서 불러온 people과 age의 변수를 destructuring을
통하여 변수 선언을 하면, 위와 같이 people, age를 활용할 수 있음 */
Author And Source
이 문제에 관하여(TIL_200916_Node.js 기본 개념), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@scy0334/TIL200916Node.js-기본-개념저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)