노드 JS 검토

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 14:33:02227검색

Revisando Node JS

이번 주말에는 JavaScript와 Node.js에 대해 조금 리뷰해 보기로 했습니다. 내 GitHub 피드에 나온 프로젝트를 테스트하다가 우연히 정의를 발견했기 때문입니다.

이벤트 루프나 Promise 같은 주제도 좀 더 깊이 있게 공부할 계획이니 리뷰도 좋을 것 같아요.

제 메모는 다음과 같습니다.

노드란?

서버측에서 JavaScript를 실행할 수 있는 환경(런타임)입니다. 이를 통해 브라우저 외부에서 실행되는 애플리케이션(백엔드, 모바일, 데스크톱 애플리케이션...)을 만들 수 있습니다.

자바스크립트는 웹페이지에 상호작용성을 추가하기 위해 만들어진 해석형 다중 패러다임 프로그래밍 언어입니다. 즉, 브라우저에서 사용할 목적으로 개발되었습니다.

요즘에는 Deno나 Bun 등 다른 JavaScript 실행 환경도 있지만 2009년에 출시된 Node가 그 선구자입니다.

단 하나의 프로그래밍 언어를 사용하여 애플리케이션의 프런트엔드와 백엔드를 모두 개발할 수 있다는 가능성은 환상적입니다. 이 기능은 JavaScript의 가장 큰 장점 중 하나이지만 일부 전문가는 서버 측에서 이 기능을 사용하는 데 의문을 제기합니다.

Java의 모토인 "한 번 작성하면 어디서나 실행 가능"을 생각하면 한 번 배우고 모든 것을 생성할 수 있습니다.

Node는 브라우저에서 JavaScript 코드를 읽고 실행하는 Google Chrome의 V8 엔진을 기반으로 합니다. 중요한 특징은 JavaScript 엔진이 실행되는 브라우저와 독립되어 있어 Node 및 기타 환경을 생성할 수 있다는 것입니다.

다른 JavaScript 엔진이 있습니다:

  • Firefox는 SpiderMonkey를 사용합니다
  • Safari는 JavaScriptCore를 사용합니다
  • Edge는 차크라를 사용했으며 현재는 V8을 사용하고 있습니다.

JavaScript는 해석된 언어로 간주되지만 엔진에는 JIT(Just-In-Time) 컴파일 단계가 있어 해석되고 컴파일되는 언어가 됩니다.

노드는 DOM, 창 등의 조작 API에 액세스할 수 없다는 점에 유의하는 것이 중요합니다. 대신 파일 시스템에 액세스하고, HTTP 요청을 수신하고, UUID를 생성하고, 이벤트를 내보내는 등 다양한 작업을 수행할 수 있는 표준 라이브러리가 있습니다.

// ❌
const element = document.getElementById('js-in-server')
console.log(element.textContent)

// ✅
import fs from 'fs'

fs.readFile('js-is-really-cool.md', 'utf-8', (err, content) => {
    console.log(content)
})

Node에는 프로젝트 종속성을 구성, 설치 및 해결하는 데 사용되는 NPM 패키지 관리자(Node Package Manager)가 장착되어 있습니다. NPM은 기본 패키지 등록 기관이기도 하며, 나중에 사용하기 위해 라이브러리와 프레임워크를 등록하는 곳입니다.

명확히 말하자면 NPM 패키지 관리 도구와 이러한 패키지에 대한 등록 기관(NPM이라고도 함)이 있습니다. 자세한 내용은 여기를 참조하세요.

이 도구의 대안은 Yarn과 pnpm입니다. Bun 환경에는 Node와 호환되는 패키지 관리자도 있으며 앞서 언급한 옵션 중에서 가장 빠르게 대체할 수 있도록 고안되었습니다.

등록 기관에 관해 말하자면, 최근 Typescript 및 ESM, JSR용으로 만들어졌다고 주장하는 일종의 현대적인 대안이 등장했습니다.

제가 기억하는 몇 가지 정말 멋진 "새" 기능이 Node에 추가되었습니다:

  • 환경변수(.env) 로딩
  • 버전 20.x에서 안정적으로 도입된 테스트러너
  • Typescript 실행, 아직 실험적임

여기까지입니다. 이벤트 루프가 무엇인지, 그리고 그 중요성을 다루기 위해 이 리뷰를 업데이트하려고 합니다.

재미있는 사실은 제가 Node를 사용하여 처음으로 HTTP 서버를 개발했고 그와 함께 백엔드가 마음에 든다는 점입니다.

읽어주셔서 감사합니다!

위 내용은 노드 JS 검토의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.