본문 바로가기
TIL&WIL

241211 TIL - splice(), Node.js 내장 모듈, meta data, ESM,

by 나노다 2024. 12. 11.

splice() 복기!!

"배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경"

주의!! 새로운 배열을 반환하는 slice()와 달리, splice()는 기존 배열 건드리는 거임!!

/* 기본구조 */
arr.splice(start[, deleteCount[, item1[, item2[, ...]]]])

/* 예시 */
arr.splice(2,3,"a","b","c");
// arr 배열에서 2번 인덱스부터 3개 요소 제거 후, 
// 2번 인덱스 위치부터 "a", "b", "c"를 순서대로 삽입

start 

- 배열 변경을 시작하는 인덱스

- start의 절대값이 배열의 길이보다 크면 강제로 0번 인덱스부터 시작!

deleteCount

- 제거할 요소의 개수, 삽입만 하고 싶으면 얘를 0으로!!

- deleteCount가 생략되거나, 값이 배열 길이에서 start를 뺀 길이보다 크면, start부터 이후의 모든 요소 제거 

반환값

- 제거되는 요소들이 담긴 배열

- deleteCount가 1이면 하나 담긴 배열

- 제거하는 값이 없으면 빈 배열

 

Node.js 기본 내장 모듈 몇몇 

fs : File System

import fs from "fs";
  • fs.readFile(읽을 파일의 경로, 인코딩 방식, 열람 완료 후 실행할 콜백함수)
fs.readFile(path.join(basePath, fileName), "utf8", (err, data) => {}

 

path : 파일 및 디렉토리의 경로 다루는 작업 지원

import path from "path";
  • path.dirname(파일명) : 현재 파일이 속한 디렉토리 이름 알려줌
const __dirname = path.dirname(__filename);
  • path.join(디렉토리명, 가고싶은 경로) : 원하는 디렉토리에서 원하는 위치로 가는 절대 경로 만들어줌!
const basePath = path.join(__dirname, "../../assets");

 

url : URL 파싱이나 조작, 변환 등의 작업 지원

import { fileURLToPath } from "url";

 

fileURLToPath(파일의URL) 

이름에서 알 수 있다시피, 파일의 URL을 운영체제에 맞는 파일 System Path로 변환해줌

 

File URL

  • 브라우저나 네트워크 환경에서 파일에 접근할 때 주로 활용 (물론 로컬 시스템에서도 쓸 때 이씀)
  • file:// 프로토콜 통해 참조함!!
  • 예시 : file://C:/Users/John/Documents/file.txt

File System Path

  • 실제 파일 시스템 안에서 파일이나 디렉토리가 가리키는 경로
  • 연관 개념으로 그 익숙한 절대경로와 상대경로가 있다!!
  • 예시 : C:\Users\John\Documents\file.txt

 

import.meta.url

현재 모듈이 실행되는 위치에 대한 URL을 제공

ESM에서만 사용할 수 있는 메타 데이터!!

 

meta data

"데이터에 대한 데이터"

  • 본문 데이터를 이해하고 활용하는 데 필요한 정보를 담음. 헤더와 페이로드 관계 같은 느낌
  • 데이터 환경에 따라 메타 데이터의 내용물은 달라짐
  • file system의 메타 데이터 : 파일명, 용량, 생성일자, 수정일자, 권한, 확장자 등등

 

ESM 

"ECMAScript Module, ES 모듈, ESM"

자바스크립트의 ECMAScript  6에서 도입된 모듈화 방식

 

ES6 모듈의 주요 특징

  • import와 export
  • "type":"module"을 통한 일괄 모듈 처리 또는, .mjs 확장자 통한 개별 모듈 처리
  • 모듈 로딩이 비동기적임!!!

 

추가로 알게 된 것

- socket.on이 받는 거!! socket.emit이 보내는 거!!

   클라 파일에 있으면 주체가 클라고, 서버 파일에 있으면 주체가 서버임!!

- 배열 메서드들 콜백함수의 매개변수 중 index가 이씀.

   map(), reduce(), filter(), forEach() 등등등 다 있음!!! 현재 순회 중인 요소의 인덱스를 활용할 수 있다!!