1. Node.js
Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임 환경이다.
이는 서버 사이드에서 JavaScript를 실행할 수 있게 해주는 플랫폼으로, 웹 서버 생성, 파일 시스템 작업, 데이터베이스 조작 등 다양한 서버 사이드 작업을 수행할 수 있다. Node.js의 비동기 이벤트 기반 아키텍처는 높은 동시성을
제공하며, 이는 실시간 애플리케이션 개발에 특히 유용하다.
💡 주요 특징
- 비동기 I/O
- 이벤트 기반 프로그래밍
- 단일 스레드 모델
- NPM(Node Package Manager)을 통한 풍부한 생태계
개념 | 설명 |
이벤트 루프 | 비동기 작업을 관리하는 핵심 메커니즘 |
모듈 시스템 | CommonJS와 ES Modules 지원 |
버퍼 | 바이너리 데이터 처리를 위한 클래스 |
스트림 | 데이터를 청크 단위로 처리하는 추상 인터페이스 |
💻 예시 코드
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
빠르게 배우는 Node.js와 NPM 설치부터 개념잡기
node.js와 npm 기초 완벽 가이드!! node.js와 npm을 설치해보고 개념도 잡아보자. 그리고 더 나아가 IntelliJ에서 npm을 어떻게 사용하는지 알아보자. node.js와 npm은 웹 개발에 종사하고 있는 개발자라면 웬
kdydesign.github.io
-참고 : kdydesign.github.io
Node js란, 개념부터 특징까지 기업들이 사용하는 이유를 알려드립니다. I 이랜서 블로그
Java Script를 웹 브라우저로부터 독립시켜 서버 구현을 가능케하는 Node js. Node js란 개념부터 특징까지 이랜서에서 자세하게 알려드립니다. I express, node, node js 설치, 노드, express js, node js express, 노
www.elancer.co.kr
- 참고 : http://www.elancer.co.kr
2. CommonJS
CommonJS는 JavaScript 모듈화를 위한 규격으로, Node.js에서 기본적으로 사용되는 모듈 시스템이다.
이 시스템은 서버 사이드 JavaScript를 위해 설계되었으며, 모듈의 의존성과 스코프를 관리하는 방법을 제공한다. CommonJS를 사용하면 코드를 모듈화 하고 재사용 가능한 컴포넌트로 구성할 수 있어, 대규모 애플리케이션 개발에 적합하다.
💡 주요 특징
- 동기적 모듈 로딩
- 모듈 단위의 스코프
- 순환 의존성 해결
- 캐시 된 모듈 인스턴스
키워드 | 설명 |
require() | 모듈을 가져오는 함수 |
module.exports | 모듈에서 내보내는 객체 |
exports | module.exports의 참조 |
💻 예시 코드
// math.js
exports.add = (a, b) => a + b;
exports.subtract = (a, b) => a - b;
// app.js
const math = require('./math');
console.log(math.add(5, 3)); // 8
console.log(math.subtract(5, 3)); // 2
CommonJs란 무엇인가?
자바스크립트를 서버에서 사용할 수 있게된 가장 큰 이유 중 하나는 모듈화가 가능해졌기 때문이다.자바스크립트의 모듈화 명세를 만든 대표적인 그룹 중 'CommonJs'가 존재하고, CommonJS의 명세는
velog.io
- 참고 : manymogo.log
3. .js와 .mjs
.js와 .mjs는 JavaScript 파일의 확장자로, Node.js에서 각각 다른 모듈 시스템을 사용한다.
.js 파일은 기본적으로 CommonJS 모듈 시스템을 사용하며, .mjs 파일은 ES Modules 시스템을 사용한다.
이러한 구분은 Node.js가 두 가지 모듈 시스템을 모두 지원하면서 생긴 것으로, 개발자가 원하는 모듈 시스템을
명시적으로 선택할 수 있게 해 준다.
💡 주요 차이점
- 모듈 시스템
.js는 CommonJS, .mjs는 ES Modules - 문법
.mjs에서는 import/export 문법 사용 - 동작 방식
.js는 동기적, .mjs는 비동기적 로딩 - 호환성
.mjs는 최신 Node.js 버전에서만 지원
파일 확장자 | 기본 모듈 시스템 | 주요 사용 문법 |
.js | CommonJS | require(), module.exports |
.mjs | ES Modules | import, export |
💻 예시 코드
// math.mjs
export const add = (a, b) => a + b;
// app.mjs
import { add } from './math.mjs';
console.log(add(5, 3)); // 8
[JavaScript] 모듈 내보내기/불러오기 (CommonJS vs ES6)
1. JavaScript 모듈 시스템 파일 단위의 모듈화는 코드의 재활용성을 극대화시킴으로써 애플리케이션 개발의 생산성을 엄청나게 향상시킨다. 그런데 초창기 JavaScript는 모듈 시스템이라는 것을 갖
it-eldorado.tistory.com
- 참고 : it-eldorado
.js 와 .mjs
프로젝트를 진행하다가 생기던 문제였는데이러한 오류가 발생하여, package.json에 타입을 명시해서 해결을 하려했다. 또다른 오류로는해당 에러는 mjs파일로 변경해서 해결했다.근데 js랑 mjs 차이
velog.io
- 참고 : 가치있는 Front-End
4. Node.js 내장 모듈
Node.js 내장 모듈은 Node.js 설치 시 기본적으로 제공되는 모듈들로, 별도의 설치 없이 사용할 수 있는 핵심 기능들을 포함한다. 이 모듈들은 파일 시스템 조작, 네트워크 통신, 암호화, 스트림 처리 등 서버 사이드 애플리케이션 개발에 필수적인 기능들을 제공한다. 내장 모듈을 사용하면 추가적인 의존성 없이 강력한 기능을 바로 활용할 수 있어 개발 효율성이 높아진다.
💡 주요 내장 모듈
- fs
파일 시스템 작업 - http/https
HTTP/HTTPS 서버 및 클라이언트 생성 - path
파일 경로 관리 - crypto
암호화 기능 - events
이벤트 처리
모듈 | 주요 기능 |
fs | 파일 읽기/쓰기, 디렉토리 생성/삭제 |
http | 웹 서버 생성, HTTP 요청 처리 |
path | 경로 정규화, 디렉토리/파일 이름 추출 |
crypto | 해시 생성, 암호화/복호화 |
events | 이벤트 에미터 생성 및 관리 |
💻 예시 코드
const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, 'example.txt');
fs.writeFile(filePath, 'Hello, Node.js!', (err) => {
if (err) throw err;
console.log('File written successfully');
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) throw err;
console.log('File content:', data);
});
});
Node.js 내장모듈
Node 내장 모듈 (os, path, url, querystring, crypto, util, worker_thread, child_process, fs, etc) (최종 수정일 : 2022-01-19)
velog.io
- 참고 : unchapterd.log
'에이콘아카데미 회고 > 5회차) 자바기반 풀스택 개발자 양성과정' 카테고리의 다른 글
Vue) 74번째 회고 (0) | 2024.08.07 |
---|---|
Vue) 73번째 회고 (0) | 2024.08.06 |
Vue) 72번째 회고 (0) | 2024.08.05 |
React) 71번째 회고 (0) | 2024.08.01 |
React) 70번째 회고 (5) | 2024.07.31 |