학습 난점 제1부분: 요점 이해

6301 단어 nodebeginners
2020년 가을 말에 나는 노드를 더 잘 이해하기 위해 임무를 수행했다.나는 내가 그것을 사용하는 방식을 개선하고, 어떻게 그것의 더 많은 기능을 사용할 수 있는지, 그리고 나의 전단 지식을 완전한 창고로 확장하고 싶다.이 시리즈는 내가 The Odin Project에서 배운 지식에 근거하여 쓴 필기를 포함한다.수업에는 Node를 더욱 잘 사용하기 위해 필요한 일반적인 웹 개념도 포함된다.
노드를 공부할 때 잠재적인 장애를 극복하기 위해서는 인터넷 기초 지식이 중요하다.이 섹션과 다음 섹션에서 주요 주제를 다시 토론하고 노드와 연결할 것입니다.시작합시다!

노드의 진정한 의미 이해


Node는 개발자가 JavaScript를 사용하여 다양한 서버 사이드 도구와 응용 프로그램을 만들 수 있도록 소스가 시작된 크로스플랫폼 실행 환경입니다.
그러나 이것은 교과서의 정의일 뿐이다. 이 단어들의 의미를 분석해 보자.

노드는 어떤 파격적인 점이 있나요?


JavaScript는 원래 브라우저에서 실행되도록 설계되었습니다.이것은 그것이 사이트가 아닌 어느 곳에서도 운행할 수 없다는 것을 의미한다.Node는 JS를 브라우저 세계에서 가져왔기 때문에 다른 서버 언어가 할 수 있는 대부분의 일을 할 수 있습니다.이것이 바로 노드의 창의성이다.JavaScript 백엔드 기능을 제공합니다.
이 점을 실현하려면 노드는 원시 JS에 없는 새로운 기능을 갖추어야 한다. 그렇지?실제로 Node는 JS에 다음과 같은 기능을 제공합니다.
  • http 연결 만들기
  • 스누핑 네트워크 요청
  • 동적 페이지 내용 생성
  • 서버에서 파일 생성/열기/읽기/쓰기/삭제/닫기
  • 테이블 데이터 수집
  • 데이터베이스의 데이터 추가/삭제/수정
  • "V8"이라는 용어가 Node 옆에 나타납니다.V8이란?


    JS가 실행될 때 환경에서 엔진을 실행해야 합니다.논의한 바와 같이 Node는 JS가 실행될 때의 환경이기 때문에 엔진도 필요합니다.Node 엔진은 Chrome의 오픈 소스 JS 엔진 V8을 기반으로 구축되었습니다.V8은 C++로 작성되었습니다. 자바스크립트에서 사용할 수 있는 연결을 통해 자신의 C++ 프로그램을 작성할 수 있습니다.
    Mozilla의 SpiderMonkey, Microsoft의 Chakra과 같은 다른 런타임 엔진도 있습니다.

    노드 중의 "Hello World"는 어떤 모양입니까?

  • 은 파일을 만들지만 확장자가 .js이어야 합니다.
  • console.log("Hello World!");
  • 에서 노드 단말기를 열고 cd에서 파일 저장 폴더의 디렉터리에 들어가서 node [name-of-file].js을 실행합니다.
  • Look familiar? Since Node is a runtime environment for JS, you can power it with the JS syntax you know and love.


    노드의 관건적인 개념을 이해하다


    노드는 비동기식 및 이벤트로 구동되므로 다음과 같은 용어를 설명해 보겠습니다.


    이벤트 드라이브: 컴퓨터의 모든 동작은 하나의 이벤트입니다.그것은 누군가가 서버의 포트에 접근하려고 하고 단추를 누르면 제출할 수 있는 네트워크 요청일 수도 있다. 이 가능성은 무궁무진하다.이벤트가 응답을 촉발합니다. 이것은 Node가 처리하는 것을 도와줍니다.
    동기화와 비동기화는 두 가지 다른 코드의 운행 방식을 설명한다.
    동기화: 다음 작업이 시작되기 전에 모든 작업을 완료해야 합니다.
    비동기: 모든 줄의 운행 시간을 예측하기 위해 코드를 작성하지 않고 이벤트에 응답하기 위해 호출되는 작은 함수의 집합을 작성한다는 것을 의미합니다.
    예를 들어 프로그램을 작성하고 있다면 다음과 같은 작업을 수행해야 합니다. 파일에서 텍스트를 읽고, 이 텍스트를 컨트롤러에 인쇄하고, 데이터베이스에 있는 사용자 목록을 조회하고, 사용자의 나이에 따라 사용자를 선별해야 합니다.
    이러한 단계를 동기화하는 경우입니다.
  • 읽기 파일
  • 인쇄 파일 내용
  • 조회 데이터베이스
  • 필터 데이터베이스 조회 결과
  • 이러한 단계를 비동기적으로 수행하기 위해 임무를 분해합니다.
  • 파일을 읽고 내용을 인쇄합니다.
  • 데이터베이스 조회 후 데이터베이스 조회 결과 필터링
  • 이렇게 하면 노드가 주위에서 기다리지 않는다.파일을 읽을 때 데이터베이스를 조회할 수 있습니다.그리고 어느 것이 먼저 완성되느냐에 따라 (한 사건!)그것은 수중의 다음 임무를 계속 진행할 것이다.

    This process is almost exactly like the way that you would use addEventListener in front-end JavaScript to wait for a user action such as a mouse-click or keyboard press. The main difference is that the events are going to be things such as network requests and database queries. This functionality is facilitated through the use of callbacks.


    무엇이 리셋입니까?


    콜백은 매개변수로 다른 함수에 전달되는 함수입니다.
    // this has no callback
    // it prints "First" then "Second"
    console.log('First');
    console.log('Second');
    
    // this has a callback 
    // it prints "Second" then "First"
    setTimeout(function() {
       console.log('First');
       }, 3000);
    console.log('Second');
    
    조심하지 않으면 callback hell이 발생할 수 있습니다. async 모듈 또는 Promises을 사용하는 등 실천을 통해 이러한 상황을 줄일 수 있습니다.

    그럼 오류를 우선적으로 리셋할까요?


    Node 및 Express의 일반적인 약정은 error-first callbacks입니다.이 약정에서 리셋 함수의 첫 번째 값은 오류 값이고, 후속 매개 변수는 성공 데이터를 포함한다.이것은 만약 당신이 정말로 리셋을 만났다면, 한 요청이 한 번도 거치지 않은 과정 때문에 지연되었을 때, 통지를 받을 수 있다는 것을 보장한다.

    사건의 순환을 해석하다.


    이것은 이 절의 마지막 큰 개념인 사건의 순환을 이끌어 냈다.너는 사건의 순환 중에 있을 수 있다.그러나 길이가 더 길기 때문에 이 절에서 포인트를 정리할 것이다.
    이벤트 사이클은 JavaScript 비동기 프로그래밍의 비밀입니다.JS는 한 라인에서 모든 조작을 실행하지만 일부 스마트 데이터 구조를 사용해서 우리에게 다중 라인에 대한 착각을 주었다.

    이벤트 순환 작업은 창고와 작업 대기열을 감시하는 것입니다.만약 창고가 비어 있고 작업 대기열이 비어 있지 않다면, 대기열의 첫 번째 항목을 창고로 옮겨서 효과적으로 실행할 것입니다.'WebAPI'부분은 우리가 환경에서 우리에게 제공한 모든 것에서 얻은 것이다. 이 예에서 이것은 브라우저로 setTimeout을 추적하는 능력을 제공한다.

    Ajax requests would be treated the same way - put into the webapi section, because the code for a request does not live in the JS runtime, it lives in the browser webapi.


    그 후에 우리는 또 한 장에서 기본 원리를 소개했다.두 번째 부분!

    좋은 웹페이지 즐겨찾기