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 밀리초 를 기다 린 후에 이 함 수 를 되 돌 릴 것 입 니 다.setTimeout(2000)
이 호출 스 택 에서 팝 업 됩 니 다.setTimeout(0)
은 같은 방식 으로 등록 되 어 있다.우 리 는 현재 두 개의 Node API 가 실행 을 기다 리 고 있다.setTimeout(0)
이 리 셋 대기 열 로 옮 겨 졌 고 같은 일 은 setTimeout(2000)
에서 발생 했다.console.log()
이 실행 되 고 main()
이 호출 스 택 에서 팝 업 됩 니 다.npm
이것 은 경외 심 을 불 러 일 으 키 는 지역 사회 에 의 해 구 축 된 창고 로 대부분의 일반적인 문 제 를 해결 할 수 있다.npm(Node package manager)에는 프로그램 에 사용 할 수 있 는 패키지 가 많 습 니 다.개발 을 더욱 빠 르 고 효과적으로 할 수 있 습 니 다.
Require
세 가지 일 을 해 야 한다.
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 에는 두 가지 유형의 사건 이 있 습 니 다.
Node.js 에 Hello World 라 고 써 주세요.
파일 app.js 를 만 들 고 다음 내용 을 추가 합 니 다.
console.log("Hello World!");
터미널 을 열 고 파일 을 저장 하 는 폴 더 로 디 렉 터 리 를 전환 한 다음
node app.js
을 실행 합 니 다.이렇게 간단 해,네가 Node.js 에 쓴'Hello World'가 뛰 기 시작 했다.
마지막 으로 인터넷 의 대량의 자원 을 통 해 Node.js 에 대한 더 많은 정 보 를 알 수 있 습 니 다.
본 논문 의 첫 번 째 위 챗 공식 번호:전단 선봉
QR 코드 를 스 캔 하여 대중 번호 에 관심 을 가 지 는 것 을 환영 합 니 다.매일 신선 한 전단 기술 문장 을 추천 합 니 다.
이 칼럼 의 다른 칭찬 글 을 계속 읽 는 것 을 환영 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.