Node.js 는 도대체 무엇 입 니까?

미 친 기술 주택
원문:https://medium.freecodecamp.o...
본 논문 의 첫 번 째 위 챗 공식 번호:전단 선봉 은 관심 을 환영 하고 매일 새로운 전단 기술 문장 을 추천 합 니 다.
Node.js 는 JavaScript 가 실 행 될 때 환경 입 니 다.듣 기 에는 괜 찮 은 데,이것 은 도대체 무엇 을 의미 하 는 것 입 니까?그것 은 또 어떻게 작 동 합 니까?
Node 가 실 행 될 때 환경 은 JavaScript 프로그램 을 실행 하 는 데 필요 한 모든 것 을 포함 합 니 다.
자바 에 대해 알 고 있다 면 비슷 하 다 는 것 을 알 게 될 것 이다.
자바 스 크 립 트 는 원래 브 라 우 저 에서 만 실 행 될 수 있 었 습 니 다.컴퓨터 에서 독립 된 프로그램 으로 확장 할 때 Node.js 가 나 타 났 습 니 다.
이 제 는 웹 사이트 의 상호작용 과 필터 뿐만 아니 라 자 바스 크 립 트 로 더 많은 일 을 할 수 있다.
자 바스 크 립 트 는 현재 다른 스 크 립 트 언어(예 를 들 어 Python)에서 실행 할 수 있 는 동작 을 할 수 있 습 니 다.
크롬 브 라 우 저의 자바 스 크 립 트 와 Node.js 는 모두 V8 엔진 에서 실 행 됩 니 다.이 엔진 은 자 바스 크 립 트 코드 를 더 빠 른 기계 코드 로 변환 합 니 다.기계 코드 는 저급 코드 로 컴퓨터 가 먼저 설명 하지 않 고 직접 운행 할 수 있다.
왜 Node.js 를 선 택 했 습 니까?
이것 은 Node.js 공식 사이트 에서 내 놓 은 공식 적 인 정의 입 니 다.
Node.js®크롬의 V8 자 바스 크 립 트 엔진 을 기반 으로 구 축 된 자 바스 크 립 트 가 실 행 될 때의 환경 입 니 다.
Node.js 는 이벤트 구동 의 비 차단 I/O 모델 을 사용 하여 가 볍 고 효율 적 입 니 다.
Node.js 의 가방 생태 시스템 npm 는 세계 에서 가장 큰 개원 고 생태 시스템 이다.
우 리 는 앞에서 이미 이 정의 의 첫 줄 에 대해 토론 했다."Node.js"®"크롬의 V8 자 바스 크 립 트 엔진 을 기반 으로 구 축 된 자 바스 크 립 트 가 실 행 될 때의 환경 입 니 다."이제 남 은 두 줄 을 이해 하 자.그러면 Node.js 가 왜 이렇게 인기 가 많은 지 알 수 있다.
입 출력로 컬 파일 을 읽 기/쓰기 부터 API 에 HTTP 를 보 내 는 모든 내용 을 읽 을 수 있 습 니 다.
I/O 는 시간 이 필요 하기 때문에 다른 함 수 를 막 을 수 있 습 니 다.
이러한 상황 을 고려 하여 우 리 는 백 엔 드 데이터 베 이 스 를 요청 하여 user 1 과 user 2 의 상세 한 정 보 를 얻 은 다음 화면 이나 콘 솔 에 인쇄 해 야 합 니 다.이 요청 에 대한 응답 은 시간 이 필요 하지만 두 사용자 데이터 의 요청 은 독립 적 으로 동시에 실 행 될 수 있 습 니 다.
I/O 차단(왼쪽)과 비 차단 I/O 차단(오른쪽)
차단 I/O
차단 방법 에 서 는 user 1 의 데이터 가 화면 에 출력 되 기 전에 user 2 의 데이터 요청 을 시작 하지 않 습 니 다.
만약 이것 이 웹 서버 라면,우 리 는 모든 새 사용 자 를 위해 새로운 라인 을 시작 해 야 한다.그러나 자바 스 크 립 트 는 단일 스 레 드 입 니 다.그래서 자바 스 크 립 트 는 다 중 스 레 드 작업 에 적합 하지 않 습 니 다.
이것 이 바로 막 히 지 않 는 용무 의 땅 이다.
비 차단 I/O
다른 한편,비 차단 요청 을 사용 하면 user 2 에 데이터 요청 을 할 때 user 1 요청 에 대한 응답 을 기다 리 지 않 아 도 됩 니 다.너 는 이 두 요청 을 동시에 시작 할 수 있다.
이러한 비 차단 I/O 는 서버 가 여러 요청 을 동시에 처리 할 수 있 기 때문에 다 중 스 레 드 에 대한 수 요 를 없 앴 다.
JavaScript 이벤트 순환
다음은 자 바스 크 립 트 이벤트 순환 작업 원리 에 대한 간단 한 설명 입 니 다.
  • main() 을 호출 창고 에 보 냈 다.
  • console.log() 을 호출 창고 에 보 냈 다.즉시 실행 하고 팝 업 합 니 다.
  • setTimeout(2000) 을 창고 에 보 냈 다.setTimeout(2000) 은 Node API 다.그것 을 호출 할 때,먼저 이벤트 리 셋 을 등록 합 니 다.이 벤트 는 2000 밀리초 를 기다 린 후에 이 함 수 를 되 돌 릴 것 입 니 다.
  • 이 API 에 등록 되면 setTimeout(2000) 이 호출 스 택 에서 팝 업 됩 니 다.
  • 현재 두 번 째 setTimeout(0) 은 같은 방식 으로 등록 되 어 있다.우 리 는 현재 두 개의 Node API 가 실행 을 기다 리 고 있다.
  • 이 0 초 를 기다 린 후 setTimeout(0) 이 리 셋 대기 열 로 옮 겨 졌 고 같은 일 은 setTimeout(2000) 에서 발생 했다.
  • 리 셋 대기 열 에서 함수 호출 스 택 이 비어 있 기 를 기다 리 고 있 습 니 다.모든 문 구 는 한 번 씩 실행 되 기 때 문 입 니 다.이것 은 사건 이 순환 적 으로 처리 된다.
  • 마지막 console.log() 이 실행 되 고 main() 이 호출 스 택 에서 팝 업 됩 니 다.
  • 이벤트 순환 에서 호출 스 택 이 비어 있 고 리 셋 대기 열 이 비어 있 지 않 습 니 다.호출 스 택 으로 이동 하여 실행 합 니 다.

  • npm
    이것 은 경외 심 을 불 러 일 으 키 는 지역 사회 에 의 해 구 축 된 창고 로 대부분의 일반적인 문 제 를 해결 할 수 있다.npm(Node package manager)에는 프로그램 에 사용 할 수 있 는 패키지 가 많 습 니 다.개발 을 더욱 빠 르 고 효과적으로 할 수 있 습 니 다.
    Require
    세 가지 일 을 해 야 한다.
  • 은 Node.js API 에서 Node.js 와 묶 인 모듈,예 를 들 어 파일 시스템 과 HTTP 등 을 불 러 옵 니 다.
  • 은 npm 에 설 치 된 제3자 라 이브 러 리,예 를 들 어 Express 와 Mongoose 등 을 불 러 옵 니 다.
  • 그것 은 당신 이 자신의 파일 을 요구 하고 프로젝트 를 모듈 화 할 수 있 도록 합 니 다.

  • Require 는 함수 입 니 다.인자"path"를 받 아들 이 고 module.exports 을 되 돌려 줍 니 다.
    노드 모듈
    Node 모듈 은 재 활용 가능 한 코드 블록 으로 다른 코드 에 의외 의 영향 을 미 치지 않 습 니 다.
    모듈 을 만 들 고 여러 프로그램 에서 사용 할 수 있 습 니 다.Node.js 는 내 장 된 모듈 이 있 습 니 다.더 이상 설치 하지 않 아 도 사용 할 수 있 습 니 다.
    V8 은 C++를 이용 하여 JavaScript 를 가속 화 합 니 다.
    V8 은 C++로 작 성 된 오픈 소스 가 실 행 될 때 엔진 입 니 다.
    JavaScript=>V8(C++)=>기계 코드
    V8 은 ECMA-262 에서 지정 한 ECMAScript 라 는 스 크 립 트 를 실 현 했 습 니 다.ECMAScript 는 Ecma International 에서 만 들 어 졌 으 며 자 바스 크 립 트 를 표준화 하 는 데 사 용 됩 니 다.
    V8 은 독립 적 으로 실행 할 수도 있 고 모든 C+프로그램 에 삽입 할 수도 있 습 니 다.자바 스 크 립 트 에 사용 할 수 있 도록 C+코드 를 만 들 수 있 는 갈고리 가 있 습 니 다.
    이것 은 실제 적 으로 V8 을 C+코드 에 삽입 하여 자바 스 크 립 트 에 기능 을 추가 하여 C+코드 가 ECMAScript 표준 보다 더 많은 기능 을 실현 하도록 합 니 다.
    Greg Bulmash 가 나의 주 의 를 끌 었 듯 이 V8 을 제외 하고 모 질 라 의 Spider Monkey,마이크로소프트 의 Chakra 등 다양한 JavaScript 엔진 도 있다.더 많은 것 은 이곳 에서 찾 을 수 있다.
    이벤트
    사건 은 우리 가 프로그램 에서 발생 한 일 에 대해 대답 할 수 있다 는 것 을 말한다.Node 에는 두 가지 유형의 사건 이 있 습 니 다.
  • 시스템 이벤트:C++로 이 루어 진 libuv 라 이브 러 리 기반 커 널 입 니 다.(예 를 들 어 파일 읽 기 완료).
  • 사용자 정의 이벤트:JavaScript 핵심.

  • Node.js 에 Hello World 라 고 써 주세요.
    파일 app.js 를 만 들 고 다음 내용 을 추가 합 니 다.
    console.log("Hello World!");

    터미널 을 열 고 파일 을 저장 하 는 폴 더 로 디 렉 터 리 를 전환 한 다음 node app.js 을 실행 합 니 다.
    이렇게 간단 해,네가 Node.js 에 쓴'Hello World'가 뛰 기 시작 했다.
    마지막 으로 인터넷 의 대량의 자원 을 통 해 Node.js 에 대한 더 많은 정 보 를 알 수 있 습 니 다.
    본 논문 의 첫 번 째 위 챗 공식 번호:전단 선봉
    QR 코드 를 스 캔 하여 대중 번호 에 관심 을 가 지 는 것 을 환영 합 니 다.매일 신선 한 전단 기술 문장 을 추천 합 니 다.
    이 칼럼 의 다른 칭찬 글 을 계속 읽 는 것 을 환영 합 니 다.
  • 12 개의 놀 라 운 CSS 실험 항목
  • 꼭 해 야 할 50 개의 React 면접 문제
  • 세계 최고의 회사 의 전단 면접 에서 무엇 을 물 었 습 니까?
  • 11 개 최고의 자 바스 크 립 트 동적 효과 라 이브 러 리
  • CSS Flexbox 시각 화 매 뉴 얼
  • 디자이너 의 관점 에서 볼 때 React
  • 명절 이 지루 하 다 고요?자 바스 크 립 트 로 머리 작은 게임 을 쓰 세 요!
  • CSS 점성 포 지 셔 닝 은 어떻게 작 동 하 는 지
  • 한 걸음 한 걸음 HTML 5 SVG 로 애니메이션 효 과 를 실현 하 는 것 을 가 르 칩 니 다
  • 프로그래머 30 세 전 월급 30K 미 만,어디로 가 야 할 지
  • 14 개의 가장 좋 은 JavaScript 데이터 시각 화 라 이브 러 리
  • 8 개의 최상 위 VS Code 확장 플러그 인
  • Node.js 다 중 스 레 드 완전 안내
  • HTML 을 PDF 로 전환 하 는 4 가지 방안 및
  • 실현
  • 더 많은 글...
  • 좋은 웹페이지 즐겨찾기