>> 좋아요.
그래서 클리프 행어는 무엇이었다 node.js 오늘 그것을 알고?
뭐? 그래?
>> 그것은 같았다 프레임 워크를 작성하는 자바 스크립트
넓게 응용 프로그램 -
>> OK, 그 작동합니다.
>> - 내가 같이 알고 같은 일반적인 용도 -
또는 무언가 당신에게 할 수있는 것과 같다 -
[청취 비고]
>> OK 좋은.
그래, 그래서 프레임 워크입니다.
그것은 엔진의하는 당신 자바 스크립트 코드에게 실행할 수 있습니다
서버 사이트.
이 의미 할 수있다 가지의 간단한
명령 줄을 작성하는 등 하지 파이썬 또는 배쉬 스크립트
루비 또는 PHP,하지만 단지 또는 자바 스크립트 자체
과에 그것을 실행 명령 프롬프트를 깜박.
아니면 실제로 실행할 수 있습니다 웹 서버 내에서.
그리고 내 사실 자체 node.js,
이 프레임 워크는 전체 무리입니다 그중 라이브러리
HTTP 서버에 내장되어있다.
그래서, 당신은 실제로 쓸 수 있습니다 우리가 볼 수와 같은 서버
그냥 순간에, 슈퍼 쉽게 단지 약간의 이해에 의해
HTTP 및 TCP와 포트.
그리고 당신은 듣기를 생성 할 수 있습니다 아파치없이 웹 서버,
마이크로 소프트의 IIS없이.
다른 없음 소프트웨어 설치
당신은이를 생성 할 수 있습니다 그리고 대부분의 모든 포트에 들어
시스템에 그 당신은 허용하고 있습니다.
그래서 케이스와 점, 내가 가서 열게
이 예까지, 서버 0.js.
그래서 그 통지의 상단 이 파일을 그냥 무리
재미 코멘트, 다음 몇 가지의
코드의 대표 라인 우리는 recurringly 볼 수있다.
그래서, var에 HTTP 가져 "HTTP"를 필요로한다.
'node.js에 따라서 내장 인프라는 전체 무리입니다
정말 그냥 있습니다 모듈 라이브러리와 모든 종류입니다
이름 공간의 고유 식별자
등이 하나가 "HTTP"입니다.
그 때문에 많은처럼 자바와 C + +와 같은 언어
와 C 만 할 때 가져 오거나 포함
또는 노드에 필요한 이야기 모듈은 비트를 않습니다.
그리고 모든 메모리 로드받을 필요
RAM에 따라서 사용.
그래서, 당신은 종류의이로드 필요에 따라 라이브러리 또는 모듈.
이 가서 필요 의미
이 프로그램 HTTP 라이브러리,
에 의해 해당 라이브러리를 참조하십시오 HTTP라는 변수의 방법입니다.
그러나이 왼쪽 상징 할 수 뭐니 뭐니되고, foo는,
, 바즈 바, 그것은 중요하지 않습니다.
그래서 C + + 및 Java와 달리 C 위치를 요구하는 경우
또는 라이브러리를 가져, 그것은 단지 종류
의, 세계적으로 접속할 수 있습니다
node.js 모듈은 더 단단히 네임 스페이스입니다.
그 때문에 자신의 - 그 기능 순간에만 액세스 할 수 있습니다
이 변수 이름의 방법으로.
당신은 시작할 수 없습니다 존재 입력 방법
거기에 오른쪽 방법 하는 것일 가능성이 높습니다,
때문에 다음 네임 스페이스 거의 복잡하지 않습니다
많은 언어에서와 같이.
좋아, 이제 공통으로 HTTP 서버를 작성, 제안
조나단 [맞춤법 가정]에게로 가능했다 문자 그대로
전화로 간단 내부 서버 메소드를 작성
HTTP 모듈의.
그래서,이 반환된다 참조
웹 서버의 일종이다.
그것은 아파치에 오셨다 반드시 무거운 무게.
이쪽은 좀 더 간단합니다.
그리고 지금, 나는이 단지 단순히 몇 가지를 않습니다.
그래서 일단, 저를 스크롤 할 여기에 아래로 아래로
와 핸들러를 건너 잠시 방법.
그리고,이 코드 줄을 알
server.on하는 것입니다 기본적으로 서버는 의미 -
, jQuery 코드처럼 들어
이벤트를 수신 요청이라고
그냥 추측을 나는 무엇을해야 하는가
때 요청 이벤트 서버에서 발생합니다.
그래?
>> 기능 핸들러를 호출합니다.
그래서, 말 그대로 실행 참조 된 코드
이 변수가 실제로 여기에 기호에 변수가 아닌,
그 상징은 무엇인가 참조?
음,이 이름의 여기에 기능
및 처리기 분명히 두 개의 인수를 사용.
왜 두 개? 음, 만약 당신이 단지 문서 없음을 읽을 수 없습니다
이 특정 모듈에 대한, 당신 이야기 할 것이다 핸들러
그 것입니다 호출됩니다 전달 적어도 두 개의 인수,
요청에 대한 참조,
및 요청 우리의 내부 문자 적으로 HTTP 요청을 의미한다.
그래서, 그 모든 HTTP 헤더 당신이 기억 수도
의 처음부터 학기 또는 일부 이전 클래스
등 경험 라인 및 호스트 라인을 얻을
및 사용자 에이전트 라인,이 모든 더 내부에 캡슐화되어
요청 개체의.
그리고 응답 개체입니다 아웃 바운드 데이터에 대한 분류.
그래서, 당신은에 대한 참조가 즉 당신에게 허용거야 반대
다시 정보를 전송하는 메소드를 호출하여 브라우저
후자의 인수에 응답 해상도했다.
그러나 이것은 foo는 호출하거나 할 수 바, 이것은 단지 규칙입니다.
그래서 지금, 내가 무엇을해야합니까?
글쎄, 그 안에 표시 이 슈퍼 간단한 웹 서버의
내가 구현하는 걸, 난 다음을 수행하는 것.
나는 HTTP를 작성하는거야 상태 코드 (200)와 헤더,
OK (200) 의미는, 모두 잘 있습니다.
그리고, 내가 갈거야 분명히에 전달합니다.
의 데이터 유형은 무엇입니까 오른쪽 머리에 두 번째 인수?
>> 그것은 개체의?
>>이있는 객체의 얼마나 많은 키와 값?
각각의 하나, 오른쪽, 쌍 중 하나의 키 값입니다.
그래서, '콘텐츠 형식'.
그리고 유일한 이유 나는 여기를 인용 해요
하이픈 수 있기 때문에 마이너스 기호에으로 융합
또는 그런 일.
그래서, 여기에 인용해야 그을음 나 큰 따옴표.
그러나 다시 일반적인 패러다임
자바 스크립트 코드에서 자주 따옴표 요즘,
콜론 다음 값을 설정합니다.
그래서,이 단지 마음의 유형 소위.
이것은 HTTP 헤더이며 그 말 그대로거야
내용 하이픈 형 결장 할 무슨 텍스트 슬래시 일반
에서 확인할 수 있습니다 브라우저에 서버
브라우저가 알 수 있도록 이 같은 원시 텍스트를 실행할 수 있는지 여부
또는 HTML 또는 등 이미지 또는 동영상
플래시 파일이나 또는 아무것도.
자, 어디 실제로 싶어 페이지의 본문에 보내는 방법?
음, 그냥 읽기로 문서
응답 개체 이 라이브러리의 내부.
나는 권리가 있다는 것을 확인 방법과 그 문자열을 사용,
어쩌면 다른 것들하지만, 최소 문자열.
그리고 문자열의 것입니다 브라우저에 토해.
이 경우는 최고 간단한, 그것의 헬로 세계,
하지만 OPNE 될 수 브래킷, HTML, 대괄호,
오픈 브라켓 머리, 가까운 브래킷 등,
이 원시 HTML이 될 수 있습니다.
그러나 우리는 예를 유지하고 다만 침 간단
마음 형식의 간단한 중 이는 틀림없이 텍스트 / 일반입니다.
그리고 바로으로 Response.End 연결을 종료 의미
내가 가진 모든 것을 보내 종류의 내부 버퍼
다시이 객체의 브라우저에.
난 끝났어요. 괜찮아요.
그래서, 마지막으로 내가 여기까지하고 있어요
이것은 다소이다 임의의 멋진 될 운명
나는에게 말하고있다 마지막으로들을 수있는 서버
특정 TCP에 기본 포트로.
처음부터 리콜 클래스 그 서비스 -
또는 일반적으로 고유 숫자로 식별
AD는 웹, 443 HTTP 기반이다 웹 사이트, 22 SSH이다, (21)는 FTP입니다
그리고 1337은 임의 하지만 1024 이상이다
대부분의 의미 시스템은, 나는 그것을 사용할 수 있습니다
슈퍼 필요없이 사용자 권한.
그래서 그냥 편리합니다.
그러나 8080 오프에 - 공통 큰 하나, 8088, 정말 아무것도
일반적으로 수천에서 그러나 이것은 단지 더 많은 엘리트입니다.
좋아, 그래서 무슨 일이 사실이 프로그램을 실행할 때?
글쎄, 난 그냥 방문하지 않는다 브라우저에서 페이지.
이 파일은 서버 0.js라고합니다.
또, 아파치이기 때문에 지금은 그림의
후자의 절반 물론.
나는 웹에하고 싶은 경우 서버, 내가 쓸 필요가
다음이 웹 서버를 실행합니다.
그러나 그것은 밝혀 그 자바 스크립트 두 클라이언트 측
및 서버 측이다 해석 언어.
그래서, 필요한 모든입니다 통역.
그래서 괘 - 실행 주장하는 경우 노드와 다음 서버 0.js,
나는 수도 있고 표시되지 않을 수 있습니다 따라 약간의 출력
어떤 라이브러리에 내가 포함했습니다, 아무 일이 될 것 같다.
그러나 나에 가자 브라우저 나 가자
동일한 IP 주소 내 CS50 클라이언트.
그러나 이것은 단지 할 수 뿐만 아니라 내 맥 수
또는 다음 내 PC와 Enter 키를 누르십시오.
즉, 실제로 아파치처럼 보인다.
즉, 디렉토리처럼 우리가보고 목록
상반기에.
그래서, 내가 무슨 잘못을 했습니까?
그래.
[청취 비고]
정확히 맞지?
그래서 아파치는 여전히 듣고있다 기본 포트 80.
나는 그것을 바꿀 수에도 불구하고, 나는 모두 함께 그것을 해제 할 수
하지만 여전히 실행중인.
그러나이 사람 수 확실히 공존.
단순히 넣어야 대장 아마 다음 1337 및
또는 아마 슬래시에서 이 포트에 액세스하는 최종
이 서버에서 실행되고 있는지.
그리고 지금은 볼 안녕하세요, 세상은 돌아왔다.
그리고는 다시로드를 칠 수있다 내가 원하는만큼 여러 번,
그것은 여전히​​ 페이지를 제공하는 것.
나는 크롬의를 열고 사실 경우 관리자는 네트워크로 이동
다음 전체 페이지를 다시로드,
실제로이 것을 알 수 전송 된 요청.
나는 원시 소스에서 보면, 경우
내 브라우저에서 보내는 통지 그 모든 것들.
그리고 그 때의 응답 서버는 매우 간단했다.
(200)이있다.
너무 낮은 아니라면 화면에,
콘텐츠 형식이있다.
그리고 node.js 종류의 자동
내가 일을 추가하고 위해 다른 물건의 모든
브라우저는 일반적으로 기대하는.
그래서, 그냥 보자 작은 전성 검사.
내가 코드로 돌아 가자 서버 0.js에서 저를 보자 -
나는에 갈 때마다 핸들러,
내가 그냥 CONSOLE.LOG를 가정 해 봅시다.
( '우리는 방문자가 있었다!').
나는 다시 컴파일 할 필요가 없습니다 또는 그런 건,
그것은 해석 언어입니다.
그래서 지금, 나에게로 돌아 가자 페이지 하나를 다시로드, 둘,
3 회 이동 나의 창에 백업합니다.
그리고 지금은이를 참조하십시오.
그럼이 이상하다 나는 여섯 줄을 참조하십시오.
재미있는 웹 퀴즈, 왜 한 내가없는 3 ~ 6 요청을 얻을?
그래?
[청취 비고]
그래. 그래서, 당신은 알 수로 상단에있는 작은 바보 아이콘
브라우저 표시 줄의 많은
웹 사이트에 사용되는 힘의 하버드 볏,
그것은 회사 로고 수 있습니다 또는 그런 건.
그래서, 정렬 요즘 브라우저를
의 주제 넘게 만들기 추가 HTTP 요청
거의 모든 웹 사이트에 그 이 경우는 검사에 방문
기본 파일로 favicon.ico를 호출
같은 디렉토리에 요청한 파일.
그렇다면, 그것은 둔다 이 아이콘.
그래서 우리가보고있는 모든 정확히입니다.
그리고 사실, 보자 만약에 우리 오히려 형보다이를 볼 수 있습니다
밖으로 그냥 '우리는 방문자를했다'.
내가 앞서 출력 가자.
그리고 나는 단지에서이 사실을 알고 문서를 찾고 있습니다.
내부 속성이있다 URL 호출 요청 객체
경로로 발생하는
즉 요청 된 실제 URL에.
그래서, 서버를 다시 시작하는 경우 단순히 노드를 다시 실행하여
서버 0.js과에 지금 할이 한 개, 두 개,
셋은 여기로 돌아 간다.
저기있다.
슬래시는 내가있다 - 요청 된 인간
favicon.ico를가있는 어떤 브라​​우저입니다
주제 넘게 요청.
그러나 중요한 점은 없습니다 너무 많은 파비콘 물건
하지만 서버가 작동하는 방법.
그래?
>> 이유가 않습니다 일부 요청 할 수?
>> 그 이유는해야합니까 - HTTP의 작동 방식을 자연에 의해.
따라서, HTTP 만 요청할 수 있습니다 한 번에 하나의 파일.
브라우저는 요즘 스마트 될 수 있습니다
와 TCP를 유지 연결이 열려.
당신은 일반적으로 CS143을했다거나하는 경우 네트워킹을 잘 알고,
그래서 당신은 효율성 향상을 얻을 수 있습니다
네트워크를 유지하여 소켓 오픈
여러 HTTP를 만드는 위에 직렬 요청
하지만 그들은 하나의 파일입니다 요청에 따라.
그래서, 당신이 방문하는 경우 같은 -
나는 우리가 갈 수있는 의미 대부분의 모든 웹 사이트.
당신이 가면 -의가 당겨 보자 여기에 크롬의 관리자.
그것은 대부분을 채울받을 수 있습니다 페이지.
네트워크 탭으로 이동 및 www.cnn.com로 이동합니다.
그리고 당신은 방문 할 때 cnn.com, 자사의 홈페이지 -
오히려 atrociously 브라우저 하게 - 아직 계산.
OK. 적어도 289 HTTP 요청을 또 다시.
당신이 방문 할 때 이유 때문입니다 특히 비 대한 웹 사이트,
그들은로드 느리다 때문에 모든
자산 그들은로드입니다.
그래서, 298처럼 보인다.
일부 아약스가있을 수 있습니다 이 시점에서 진행 또는 일부
자산 바로 저입니다.
따라서, 이들 각각은 인 개별 요청이 돌아 가지
앞뒤로왔다 갔다.
그리고 그 이유는 앞에서도의 우리는 종류의 이야기지만
그것에 대해 다소 기발 스크립트 태그를 넣을 경우,
절대적으로 만든다 당신이 차이 -
그것은 많이 가지고 시작 트래픽과 많은
의 파일이 요구된다.
그리고이 각각 나타냅니다 아마도 영상, 미디어 파일,
자바 스크립트 파일 CSS 파일 등.
그래서, 우리는 최대 이미있어 일부 4메가바이트 단지
오늘의 뉴스를 볼 수 있습니다.
좋은 질문입니다.
괜찮아요.
그래서, 어떤 것이 있는가 하지만 그나?
그래, 우리가 만드는 방법을 알고 이미 PHP와 웹 페이지.
그리고 많은 분들이 들어 왔습니다 장고를 알고있는 클래스
파이썬이나 루비와 레일.
그럼, 왜 우리는 또 다른 필요합니까 언어 및 인프라?
특히 node.js 무엇입니까 당신이 알고있는 경우에 좋다?
[일시 정지]
어떤 일이?
아니? 그래?
>> 메시지를 릴레이.
>> 그래서, 메시지를 릴레이.
그래서 사실 그것은 사실 기술적 인 이유
그 정말 node.js와 자바 스크립트는 특히입니다
비동기에 매우 적합 코드,
당신이 생성된다 경우 환상
여러 일을 한 번에 일.
그래서, 그들은 있는데도 정말 연속적으로 일어나고,
실제로 대부분의 경우에, 자바 스크립트 클라이언트 측 모두
서버 쪽입니다 단일 스레드.
당신은 어느 161을 복용하는 경우 또는 (61)는 것을 의미합니다 -
이 프로그램을 알고,
통역 할 수있는 말 그대로 단 한 번에 한 일을.
그러나 이것은을 위해 중대가 아닙니다 웹 서버 같은
당신은 수십 있거나 이동할 수있는 곳 수백, 어쩌면 수천
사용자의 모든 시도 웹 페이지에 액세스합니다
바로 그 시간에.
그럼에도 불구하고, 제안하는 그 (것)들에게 처리 한
후 다른 후 다른 특히 경우 일부
우리가 본대로 그 요청 CNN에 제공해야 할 수도 있습니다
당신이 이전에 300 파일을 백업 심지어 다음 사용자에 도착
보고 싶어 누가 뉴스는 말합니다.
Node.js가 더 적합 그런 환경.
무슨 일이 것은 때문에 어떤 느린 실행중인 프로세스
디스크에서 파일을 읽거나 같은 데이터베이스 쿼리 또는 이야기
일부 다른 네트워크 서버,
즉,이 경향 지연, 오른쪽?
당신은 걸릴 않은 경우 61 또는 161 이런 종류의, 특히 모든
주변 서비스 훨씬 느린 경향이있다
안에 무엇을하는 것보다 동일한 RAM과 동일한 CPU
즉,이 경우에 말하는 서버가 실제로 실행됩니다.
그러나 약 좋다 node.js는 당신이 할 수있는 것입니다 -
그리고 자바 스크립트보다 일반적으로 당신이 뭔가를 할 수 있다는 것입니다
다음, 흠 "라고 이 것입니다
나에게 몇 밀리 초를 취할 심지어 몇 초.
"나를 종류의를 포크하자 하지만 진정한 과정이 아니다.
그리고 그것은 일을 끝낼 때 그 느린 실행중인 프로세스
에서 행을 잡는 등 데이터베이스 나 파일을 읽고. HTML
디스크에서, 그것은 것입니다 나에게 돌아올 오히려
날은 기다릴 필요없이.
그래서,이보다 명확하게한다.
이것은 나의 수단입니다 이 더 잘 만들기.
좋아, 그래서 이것은이다 광장에 판잣집을 흔들어.
이것은의 일종이다 일반적인 패러다임
비동기 성을 설명하기위한.
이것은 실제로 좋은 예를 들어 있기 때문에 흔들 판잣집
맛있는 버거는 현저하다 그들이 무엇을 위해 천천히.
그러나 중요한 점은 그들이있어입니다 주문 접수에서 정말 좋은
후에 당신의 돈을 가지고 하는 당신은 당신의 음식을 기다립니다.
그래서,이 실제로 더 나은 대안보다 디자인.
당신이에 걸어 가정 때문에 이 같은 저장하고 당신이있어
라인의 전면과 주문을 배치하고 당신이 원하는
햄버거에, 내가 할 수있는 최선으로 말해, 그것은 적어도 다섯 소요
분 이상 실제로 햄버거를 얻을.
그래서, 그것은 종류의 것 나쁜 사업 모델
경우에 당신은 당신을 위해 기다리는 동안 햄버거, 앨리스 [가정 철자]
밥은 [맞춤법 가정] 찰리 [가정 철자]
그리고 다른 사람입니다 뒤에 대기
당신은 문자 그대로 차단하고 당신의 음식을 기다리는 줄.
그래서 분명히 흔들 판잣집에서
다른 패스트 푸드 장소는이 작업을 수행하지 않습니다,
그들은이 같은 작업을 수행합니다.
그들은 당신에게 부저를 제공합니다.
그리고 그들은 종류의 당신의 방법에 당신을 보낼 수 있습니다.
그리고 그들에 의해 다시 전화 이 작은 것은 진동을 만들기
또는 플래시가 당신의주의를 얻을 수 있습니다.
그래서,이 말 그대로 무엇인가?
node.js처럼 뭔가 않습니다.
만약 node.js 또는 자바 스크립트 더 일반적으로 사용되고
프로그래머 똑똑
실현하기 위해, "당신은 무엇을 알아?
난 지금해야 할 어떤 여기에 몇 가지를 취할 수
밀리 초 (초).
당신은 무엇을 알아?
내가 앞서되지 가자 동 기적으로 호출 -
"그 남자 차단 라인에 다른 사람 "-
저를 진행하자 일종의 물러나
간단하게 다시 자신을 호출
때 장기 실행 작업이 완료됩니다. "
그리고 물론 다시 전화 이 경우 암시한다
콜백 함수, 코드 척 참조
그 실행 얻을 것이다 당신의 햄버거는 준비가되면
많은이 일을 좋아하는 몇몇이 기능 내장 종류
그것은 진동 시작하거나 당신을 위해 시간 때 윙윙
다시 호출 할 라인의 앞.
그래서,이 작업을 수행 실질 의미?
음, 우리는에있다 우리의 방법을 작동합니다.
그래서, 내가 앞서 가자 먼저이 작업을 수행합니다.
서버 1.js에서 나를 보자 첫번째 코드를 단순화
그래서 우리는쪽으로 아기 조치를 취할 수 있습니다 더 강력한 문제.
이것은 정확히 동일합니다 내가 전에 쓴 프로그램입니다.
그러나이 변경되었습니다?
약간의 일종있다 구문 차이
이 사이 버전 잠시 전 0.
무엇에 밖으로 점프 만약 당신이 기억한다면?
그래 신시아 [철자를 가정]?
[청취 비고]
그래. 그래서 지금, 우리는 라인을 가지고 함수가 전달 된되는
우리는 정렬을 제거 왔
의 쓸데 이름 핸들러 함수.
전에 해당 쓸모 심지어 한 곳에서 호출
난 정말 할 필요가 없습니다 그것의 이름을주는 시간을 낭비
하고 어렵게 만들기 아래에 코드의 상단을 참조하십시오.
그래서, 그냥 인라인을 선언하자 익명 함수입니다.
그리고 두 가지 다른 일을하고 있어요.
내가 더 잘 만들고있어 점 표기법을 사용.
그래서 jQuery를, 노드의 많은처럼 방법은 서로 연결 할 수 있습니다.
그 그래서 당신은 호출 완료되면 무엇인가, 당신은 필요가 없습니다
새로운 라인에 대기 다른 메소드를 호출,
당신은 체인 수 그들을 함께.
그리고 이러한 방법으로, 우리는 할 수있다 정말이를 조입니다.
그래서,이 말 그대로 다섯 줄의 웹 서버
코드 전체의 달리 -
당신이 일반적으로 수도는 달리 뭔가를 설정해야 해요.
나는 서버로 이동하는 경우 2 지금,이 해 보자.
서버 2에서 - 실제로의에게하자 다시 해당 서버 2로 돌아온다.
비동기 0.js을 열어 지금의를하자 손에 그 문제를 해결합니다.
그래서 일단, 가자 앞서 오픈
브라우저에서 비동기 0.js입니다.
비동기 0 그럼, 가자 브라우저에 백업합니다.
다시로드를 기록했다.
그리고 지금,이 종류 오류 메시지.
실제로 나는 500을보고 있어요 크롬의 관리자에서.
하지만 나보다 정밀하게 hello.txt를 요청합니다.
OK. 그래서,이 작동하는 것 같다.
그래서 비동기 0.js는하지 않는 것 슬래시를 위해 뭔가를 제공합니다.
그것은 기본 파일 지원이 없습니다.
그러나 만약 내가 명시 적으로 hello.txt를 요청,
즉, 지원하는 것 같습니다.
그 이유는 무엇입니까?
그럼, 여기 갔어요
및 수행 구현 매우 간단한 웹 서버
그 위치를 보여줍니다 비 동기화에 유용 할 수 있습니다.
그리고는 구현 다음과 같이.
첫째, 사용하고 HTTP 모듈을 다시
또한 FS하는 아마 의미?
CS, 파일 시스템에서 일반적으로.
OK 파일 시스템.
따라서 앞으로 FS 파일 시스템.
좋아요, 무엇을 이 날을 주는가?
관련 기능 전달 된 것과 같은 파일,
쓰기, 파일 열기 디렉토리, 디렉토리 읽기
물건의 종류의 모든.
그래서 지금,이 코드를 알 수 , 이전과 동일
전달 서버를 만들 익명 함수.
이 종류의 임의입니다.
이것은 매우 아니다 보안 웹 서버입니다.
사실, 당신은에 액세스 할 수 있습니다 내 하드 드라이브에있는 대부분의 모든 파일
또는 서버의 하드에 이 코드를 실행하여 드라이브
그냥 맹목적으로라서 내가 갈거야 가정
움켜 어떤 사용자 URL에 요청했다.
그리고 난 갈거야 점으로 앞에
나는 가장자리 해요 있도록 안전 하
말을하여 어떤 파일들이 수 요청은 적어도 시작이
현재 디렉토리의.
물론 여기에 대한 위협이있다.
'원인 경우 그들은 대신 무엇을 포함?
자신의 경로에, 그들은 종류의 수 너무 그 해결.
점, 점, 오른쪽?
따라서, 사용자는 단지 점을 두는 경우에, URL에있는 점, 이론,
그들은 점점 시작할 수 내 -과 암호 파일을 말한다.
그래서, 이것은 의미하지 않는다 확보 할 수 있습니다,
그것은 단순한 의미하는 것.
그래서 여기, 내가 변수를 가지고있는 점의 연결입니다
현재 디렉토리입니다 및 요청 URL
우리는 앞에있는보고하는 같은 또는 / hello.txt을 슬래시.
그래서 지금, 그것은을 가져옵니다 좀 더 흥미 롭군요.
먼저, 바닥을 알.
나는에 듣고있어 이전과 동일한 포트.
그래서 진짜 재미 작업은 여기서 안에 있습니다.
매회 요청 자연에서 온다
이 코드는, 내가 무슨 생각을하는거야?
나는 파일을 호출 해요 시스템의 파일 읽기 방법,
경로 전달 내가 읽고 싶은 것을.
그리고 지금,이는 무엇을 여기에 흥미로운,
이 구현하는 것입니다 비동기 방식의.
당신은 수익을 얻을 수 없습니다 읽기 파일의 값입니다.
사실 고지에있다 더 좌측 식
읽기 파일의 왼쪽에.
이 값을 반환하지 않습니다.
오히려, 콜백을 호출 이 준비가되면 기능
당신에게 응답을 돌려 줄 수 있습니다.
그래서 다시 명확하게, 왕년에있는 반면,
많은 프로그래밍 언어, 당신이 원하는 경우
파일 케이스를 읽을 수 포인트 PHP에서,
파일 밑줄 얻을 내용을 강조,
당신은 왼쪽 식을 가지고 결국 가치 -
등호 (=) 앞, 그것은 당신이 지정하는 것이다 의미
그 변수에 반환 그 함수의 값입니다.
당신은 node.js에서 해당 작업을 수행 할 수 있습니다, 하지만 당신은 일반적으로이
명시 적으로 동기 호출 할 기능의 버전이 좋아하는,
나는 그것이 동기를 읽을 생각 파일 또는 동기화 파일을 읽습니다.
나는 그들이 그것을 명명하는 방법을 잊어 버렸습니다.
그리고 그 줄 것 당신은 반환 값입니다.
하지만 그 파일에있는 경우 일부 원격 파일 시스템
또는 디스크는 자연스럽게 천천히 그것은 10 밀리 초 걸릴 수 있습니다
또는 해당 파일에 대한 이초 실제로 돌아올 수 있습니다.
한편, 다른 웹 없다 방문자가 서비스되고있다
당신의 websit로.
당신은 차단하고 있습니다.
즉라는 것을의 IO, 입력 / 출력을 차단.
그래서 여기,이 훨씬 똑똑합니다.
무엇 node.js하는 것입니다 때문에
해석에 따라 수행하는 다음은,
그것은 호출하는거야 판독 파일에있어서,
있어 파일을 백업 한 시도 P. 값에 의해 지정된 경로
그리고 만약 그것은 준비가되었을 때 당신에게 내용을 다시주고
파일 P, 그것은 호출 누구의 서명하는 기능
규칙에 따라 다음.
두 인수의 첫 번째 이는 어쩌면 오류 개체입니다,
자본 E, 그것은 개체의 오류 또는 NULL이라고
이러한 오류가 존재하지 않는 경우는.
그리고 두 번째 인수는 - 가지고 추측은 - 무엇을 할 것입니까?
그것은 분명하지만 데이터라고 데이터를보다 구체적으로 무엇입니까?
>> 내용?
>> hello.txt의 내용 이 예에서 내가 뽑아
잠시 전에 내 브라우저입니다.
파일을 읽을 수있는 즉 그래서 많은 사람들이 기능을 node.js
등의 값을 반환하지 않습니다.
그들은 콜백을 호출 전달
그 콜백에 어떤 것 전통적으로 한
값을 반환합니다.
이 접근법은 거꾸로
당신이 호출 할 수 있음을 파일에게 T0를 참조하십시오.
콜백 함수의 힘 1 틱 나중에 호출 할 수 없습니다
그래서 T에서 연설하기 위해, T1000 호출 할 수 있습니다,
천 나중에 틱.
그러나 중요한 점은 이 파일의 코드의 나머지,
있는 경우 즉시 것 node.js 동안 실행
하면서 파일 시스템 읽는 방법을 파악한다
해당 파일을 얻을 그것은 당신에게 백업합니다.
그래서 당신이 만들기 -
그래서 효과적으로 환상
병렬시키는 동안 느린 실행중인 프로세스가 없습니다
중요한 물건을 차단, 부분을​​ 사용자에게 서비스.
그래서, 우리는 어떻게이 문제를 해결할 수 있습니까?
이것은 매우 일반적입니다 node.js 패러다임.
그리고 방법은 그냥 간단하게하기 위해있다 이것은 우리가 전에 함께 볼 수있다.
경우 먼저 확인 오류가 널 (null)이 아닙니다.
그래서, 그것은 거짓이 아니라면 다음 오류가 발생했습니다.
난 그게 뭔지 몰라 아마 파일이 존재하지 않습니다.
나는 권한이 없습니다.
경로 이름이 잘못되었습니다.
일의 수 잘못 될 수 있습니다.
지금은, 내가 갈거야 임의로 (500)에게 돌아
하는 내부 서버 오류입니다.
문제가 발생했습니다.
난 정말 상관 없어 해를 진단하는 방법을 제공합니다.
그래서, 그냥 말해 보자 사용자는이를 생겼습니다.
그리고, 내가 갈거야 res.end을 수행하려면,
이 속기 표기입니다.
그 마지막을 기억 시간 나는 res.write했다
그리고 난 res.end했다.
당신은 원하는 경우 하나의 행으로 된 출력을 보내,
당신은 한 번에 모든 것을 할 수 있습니다 인수 res.end와,
그 보낼 것 오류 메시지가 무엇이든
이 객체의 내부 브라우저에.
그것은 꽤 아크되었다 잠시 전 기억합니다.
난 아무 생각이 무엇을이 첫 눈에 의미했다.
하지만 난을 요청하는 경우 존재하지 않는 파일 -
죄송합니다, 우리는 실행해야 서버 다시.
나는 파일을 요청하는 경우 존재하지 않았다, EISDIR,
그래서 뭔가 그것은 디렉토리되고,
나는 어떤 임의의 작업을 수행하는 경우 이 문자열
분명히 그 의미 파일도 존재하지 않습니다.
그리고 그것은 왜냐하면 내 코드 단순히 쓰고 말하는
어떤 원료 중 오류 메시지이며
이렇게 아주없는 사용자 친화적 인 그러나 적어도 나는 그것을 처리하고 있습니다.
그렇지 않으면,이 아니었다면 내가 무슨 일을하고 오류?
침을 이전과 같은 일 200 OK 아웃, 일반 -
텍스트 / 일반 마음의 종류와 다음 데이터를 뱉어.
내가 갖는 이유입니다 hello.txt의 내용을있는 그대로
내가보고하면 확인 hello.txt에,
그냥 그대로의 안녕하세요, 세계.
그리고이를 변경 한 경우 안녕하세요, 세계, 파일을 저장,
서버를 다시 실행 페이지를 다시로드.
지금, 나는 그 버전을 얻을.
그래서, 난 정말 그냥했습니다 웹 서버를 다시 구현
많은 존재대로 년 만 node.js.를 사용하여
그러나 우리는이 작업을 수행 할 수 더욱 청결하게.
내가 비동기 1.js을 열어 보자.
지금, 나는이 추가 해요 통지 다른 모듈이 때,
명백하게 패스 모듈.
자, 여기가 좋다 볼 수있는 기회
어떤 문서에 처럼 보인다.
Node.js는 문서입니다.
PHP와 마찬가지로 나는 생각 실제로 꽤 좋은
똑바로 앞으로.
나는 node.js로 이동 및 Google 경우 와 node.js 경로 검색,
당신은 일반적으로 볼 수 있습니다 무엇 URL에 대한 직접 링크입니다
나는 조금 전에 여기에 넣어.
그래서 / API를 공식 장소 문서에 대한 이동합니다.
그리고 당신은 무엇을 상단에 볼 수 있습니다
노드의 공식 문서의 모든 방법이며
또는 내부 속성 이 특정 모듈,
중 하나에 가입이라고합니다.
그리고 참여는 도우미 기능입니다 그 날 수있는 것
신경 쓰지하기 모든 플러스.
그리고 추가했습니다 당신이 볼 수로 보너스
부두에서도 있습니다 생성 된 경로를 정상화.
따라서, 사용자 또는 도트가있는 경우 점 점 또는 조합하여 사용하거나
상대적으로 이러한 종류의 그나 사이의 경로,
가입 방법입니다 그 그것은 모든 것을 정리하는 것
당신에게 표준을 제공 어떤없이 경로
그 점 또는 점 점.
그래서, 좋은 일에의 최소한의 보안에 대한 일반
당신에게 확인하는 경우 저는 아니에요되는 값을 반환
이 특별한 간단한 경우.
하지만 나는 그것을 사용하려는 않았다.
그래서, 지금 경로를 생성 좀 더 프로그래밍
path.join 대신과 원시 연결 중.
그래서, 약간의 이전보다 청소기.
그리고 지금 내가되고있어주의 좀 더 지능이 아니라
그냥 맹목적으로보다 파일을 읽으려고,
사실에 갈거야 fs.stat를 호출합니다.
그래서, 당신이 잘 알고있는 경우
낮은 수준의 C와 함수와 C, PHP도.
라이브러리가 많이있다 이 함수는 합계를 반환
기본적으로 통계 파일에서, 파일 크기,
권한 이름 그 같은 것들,
또한 암시 적으로하는 경우 파일이 존재 여부,
그것은 파일이나 디렉토리의 경우
또는 기호 링크 또는 뭔가.
그래서 지금 난, 알 fs.stat를 호출.
그리고 분명히 따라 설명서,
나는 돌아 가야한다 오류 개체
또는 NULL은 다음에 통계 개체에 의해.
그러나 이제이 확인하자 node.js.fs.
다음은 파일입니다 시스템 설명서를 참조하십시오.
나 통계에 대해 살펴 보자.
더 많이 있습니다 여기에 기능.
죄송합니다, 합계 동기, fs.stat.
그래서 여기, 비동기식의 통계 (2).
당신이 경우 그 의미있어 메인 페이지에서 기억,
메인 페이지의 제 2 장,
즉,이 문자 적​​ 의미 단지 노드 구현
낮은 수준의 시스템 기능의 합계.
따라서, 콜백은 두를 가져옵니다 인수 오류 및 합계
합계는 어디에 fs.stats 오브젝트.
그럼 어떻게이 객체 보자 다워야한다.
의 하이퍼 링크를 클릭하자 나는 그를 참조하십시오.
통계 개체를 포함 분명히 일부 도우미 메서드
, 디렉토리 파일입니다된다 다른 것들의 무리.
내가 걱정하는 "은"파일의 이 특정한 경우에 대해.
그래서 나는 여기 간다.
오류는 다음이 있다면 나 그냥이 시간을 구제하자
그리고 가정합니다.
오류가 있다면, 그것은했다 아마 404 파일을 찾을 수 없습니다.
그것은 다른 것이 될 수
하지만 난 조금되고있어 다만 초점을 여기에 게으른
더 흥미로운 세부 사항에.
그러나 사용자에 대한 목적은, 파일을 찾을 수 없습니다,
오류가 발생했을 경우 파일을 명시.
그렇지 않으면, 한번 봅시다 경우 파일이 실제로 실제 파일입니다.
그래서 아니라면 파일은 존재합니다.
거기에 뭔가가 있습니다 만, 아마 디렉토리의
아니면 기호 링크
또는 뭔가 다른 그의 파일 시스템에 펑키.
어느 쪽이든, 사용자 그것을 볼 수 없습니다.
그래서 지금, 난 그냥 침을거야
종래 아웃 403 권한이 없음.
그러나 다시 단지 컨벤션,
내가 사용할 수도 이론적으로는 다른 것을.
그리고 마지막으로, 저를 보자 파일을 읽어보십시오.
그래서, 내가 아래로 스크롤 할 수 있습니다.
그리고 지금은 알 곳 코드가 좀 지저분를 얻을 수 있습니다,
내가 전화 통지 fs.readFile 통과
같은 경로에있는, 같은 로 지난 시간에 콜백,
그래서 이전 버전.
그리고 제가 발견 한 경우에 -
나는 그것을 찾을 수없는 경우, 나는 500 뱉어.
그리고 나는 그것을 찾을 경우, 어떤 선 우리는 여기에서 볼거야?
우리는 FS를 보게 될 아마 헤더 (200) 쓰기
및 전송 res.end 실제 데이터.
그러나이 문제를 확인할 수 있습니다.
그리고이 실증되지 않습니다 최악의 시나리오의.
그러나 나는이 합계 통화가 여기에 내가 몇 가지 물건을 가지고보다.
그런 다음, 다른이 여기에 비동기 호출,
그래서 더 들여 쓰기.
그래서, 단지 종류의 추정 당신이 여기에서 할 수있는 경우.
어떤 문제가 함께 발생하는 경향이있다 자바 스크립트 같은 언어
이 환경에있는 곳 당신은 반환 값이없는
오히려 당신이 이러한 콜백.
물론, 이것은 단지입니다 문체 것은 사실
나는 들여 쓰기를 유지하는 것이.
그러나이 걸릴 논리적 인 다음 단계.
거기에 하나가 있었다 또는 가정 두 개 또는 세 개의 다른 기능
나는 그것을 실행하는 데 필요한 것을 자연 비동기로했다,
따라서 당신은 종류의 이를 처리하기 위해 들여 쓰기를 유지,
이를 처리하기 위해,이를 처리한다.
당신은 콜백의 종류를 얻을 수 도대체 사람들은 그것을 전화로
코드가 시작되는 매우 넓은 얻을 수
읽기가 솔직히 정말 열심히.
그대로, 나는 종류의 거의 수 이 종류의 흐름이라고 말할
즉,이 종류가 있습니다
의 문체 각도 일이 여기에 간다.
그래서,이 적합하지 않습니다 때문에 이것은 매우 빠르게 될 수 있습니다
다루기 힘든, 비록 두 비동기되지 않은 통화
이러한 큰 문제.
그래서, 우리는 바로이 문제를 방지 할 수 있습니다?
당신은 것을 엿볼 수도 나는 잠시 전 misclicked.
문서에서, 당신은 알고있다, statSync이있는 것 같습니다.
그리고 statSync은하지 않습니다 인수로 콜백.
그냥 경로를 사용하기 때문에 그것은 분명히 무엇을합니까?
이 인스턴스를 반환 fs.stats의.
그래서 이것은있을 수 있습니다 본능, 오른쪽?
특히 콜백 함수
및 비동기 성이있다 당신에게 작은 새, 솔직히,
가장 쉬운 방법은 아마도 단지 모든 문제를 피하기
함께 정렬로 돌아가 CS101 스타일 프로그래밍
당신은 함수를 호출하거나 위치 방법은 값을 반환합니다,
함수 반환을 호출 값
함수는 값을 반환합니다.
그리고 따라서 사용할 수 있습니다 fs.statSync
말 그대로 같은입니다 하지만 동기 버전의
이는이 반환 의미 값.
그것은을 통과하지 않습니다 콜백을 평가한다.
그러나 그 이유는 아마 될 것 리조트 차선의 해결 방법
동기 기능에?
그래?
[청취 비고]
정확히, 그것은 시간이 오래 걸립니다.
당신은 둔화하고 모든 것을 내려.
때문에 많이 흔들 판잣집 같은 또는 맛있는 버거, 그들은 없앤 경우
그 버저의 당신을 만들어, 고객은 프런트 스탠드
당신의 음식은 준비가되어 줄 때까지 도 순서를 복용하기 전에
뒤에있는 사람의 당신이 분명히
풋을 통해 속도가 느려집니다.
사람들은 떠나기 시작, 당신은 종류의 패킷을 그립니다.
당신은 어떤 수를 만들 수 있습니다 여기서 유추.
그러나 한마디로 말하면, 그것은이다 아마 좋은 일이
비즈니스 또는 서버에 대한.
그래서 비동기 코드입니다 일반적으로 좋은 적어도
이 경우,하지만 확실히 약간의 불안을 야기하기 시작합니다.
그리고 사실 나는 때 감히 먼저 물건을 쓰고,
조금 할게요 에 익숙해 비트.
그래서, 장비에 시작하자 일부 라이브러리와 당신
과 기술로 만들려면 쉽게이 조금.
따라서, 가장 일반적인 중 하나 도서관은 인기있는 라이브러리입니다
이러한 일이 하나는 async.js을했다.
그리고 node.js의 많은 것 라이브러리 또는 모듈,
이것들은 모두 오픈 소스이다.
그들은 거의 모든 살고 얻을 종류 허브 저장소
의 사실상의가 이 일을 저장하는 장소.
그리고이있다 전체 인프라
이러한 것들을 설치 NPM, 노드 패키지 관리자라고
당신은 어느 익숙하다면 EvanTube은 종류에
같은 응용 프로그램 또는 응용 프로그램의 얻을.
당신은 잘 알고 있다면 레드햇과 페도라와
기기에서와 같이, 그것은 YUM 등이다.
그러나 노드 해요 - 패키지 관리자 단지
이 특정 환경.
그래서, 우리는 다운로드하여 설치할 수 있습니다 비동기 라이브러리 같은 것들
그리고 또 다른 하나는 호출 라이브러리 또는 모듈을 강조.
그러나 이러한까지 FS, HTTP, 경로,
사람들은 모두 올 수 있습니다 노드에 내장.
우리는 API 문서로 이동이 경우, 당신은 실제로 내장 볼 수 있습니다
노드에 당신은 무료로 얻을 모듈의 전체 무리.
하지만 좋은 사람들을 많이에 인터넷은 수십 만들었습니다
수백없​​는 경우 다른 라이브러리
더 나은 일을 할 수 또는 다르게.
자, 살펴 보자 이 라이브러리가 작동하는 방법.
그래서,이 코드의 대부분은 순간을 위해 동일.
나는되는 경로가 최고를 만들었습니다.
그리고 지금은 전화 했어 async.series.
그래서 비동기 라이브러리, 그건 수행 할 수 있습니다 단지 라이브러리
일반적으로의 통과 또는 올리는 하나라는 얻을 수있는 기능
다만 종류에 다른 후 들여 쓰기의 문제를 방지,
정말 그냥 정신 변함없이 발생합니다 불안
적어도 때 처음 자신에 이것에 다이빙
비동기 프로그래밍.
옆에, 촬영 한 경우로 161 당신은 잠금 처리했습니다
조건과 모든 인상 즉, 비동기 코드의
와 같은 환경 node.js, 많은 실제로
훨씬 간단 틀림없이
실제로 작성하는 것보다 멀티 스레드 코드입니다.
언제 당신이 멀티 스레드 코드,
당신은 인상 조건이 있습니까.
당신은 걱정할 필요가 포함하는 두 개의 스레드
같은 자원에 대한 디스크 나 메모리.
자바 스크립트의 아름다움
node.js에 거기에있다 말 그대로 하나의 스레드 만,
브라우저를 의미하는
또는 서버는 수 한 번에 한 가지를 수행합니다.
그것은 당신에게 달려 있습니다 프로그래머
대한 정신 모델을 유지하는 당신은 종류의 일을 대기하는 방법
그리고 파악하는 방법 코드를 주문합니다.
하지만 당신은 걱정할 필요가 없습니다 에 대한 조건을 마련
아주 동일한 방법에의 이 같은 원시 코드를 적어도.
그래서, 조금의 여기 grack 어렵다.
그러나 - 그래서 나를 열어 보자 잠시의 문서.
async.js 라이브러리에있는 유사하게, 매우 googleable입니다
그것은 GitHub의에 살고 그들 중 많은 것 repot.
그것은 생각하지 않습니다 스케치, 아니다.
저 아래로 스크롤하자 여기 읽어보기에.
따라서, 비동기 라이브러리 전체 무리를 제공합니다
그것의 내부 방법.
예를 들어, 거기에 각 호출하는 방법에있어서,
어떤 난 그냥이를 클릭하면 잠시 동안의 문서를 참조하려면,
이 함수 나 방법 그것은 당신이 뭔가를 할 수 있습니다
각 4 등 하지만 병렬.
그들은 모든 일이 일어날거야 잠재적으로 병렬.
그리고 각각의 방법은있다 당신에게 돌아 갈 때 모든
의 반복이 완료됩니다.
아마 그들은 일이 하나씩.
이상적으로, 그들은 일이 기본적으로 병렬.
그러나이 방법은하지 않습니다 다시 전화.
그것은 버즈하지 않는 부저 모든 때까지
당신이 가지고있는 요소 이상 완료 한 반복은.
그래서, 그냥 좋은 방법입니다
사용 회피 간단한 4 루프
실제로 일 뭔가 비동기.
하지만 지금은 더 직접적으로 이 예에 관련
알이 있습니다 시리즈의 방법.
그리고 내가 그냥 뽑아 보자 간단한 정규 예.
따라서 비동기 라이브러리 시리즈 암시 적으로 방법에 걸립니다
배열의 대괄호로.
데이터는 무엇인가 요소의 유형
기반이 배열의 간단한 예에?
이 함수의 배열이다.
그래서 C에서, 당신은 부를 것이다 그들 함수 포인터.
자바 스크립트에서, 더 있습니다 제대로 기능에 대한 참조
또는 익명 함수.
그리고 이것은 단지 배열을 의미
물론 정렬 최대에 0에서.
그래서, 그들은 유지하고있다 좋은 주문
시리즈, '원인 시리즈 물론 방법은 뭔가를
순서대로하지 병렬.
그래서,이 단지 의미이 기능이 실행 얻을 것이다,
다음이 하나,이 하나,이 하나,이 하나,
그러나 많은있다
마지막 선택까지 콜백이 호출됩니다.
그래서, 여기에 패러다임을 알 수 있습니다.
그리고 비록이 한 남자의 라이브러리입니다,
그것의 대표자 매우 일반적인 자바 스크립트 패러다임
의 다시 콜백을 사용하여.
그래서, 당신이 무엇을 알 수 있습니다.
상기 제 1 기능 이 배열을 통해 전달,
당신은 익명의 정의 단지 기능을 가진 함수입니다.
분명히 예고하는 이 문서에 따르면,
익명 함수는해야 인수 콜백을.
즉, 포인터가 될 것입니다 또는 함수에 대한 참조
때 당신은 전화를해야한다는 코드 값을 반환 할 준비가되어 있습니다.
그래서 다시, 단지와는 다르게 일반적으로 절차 적 프로그래밍
당신이 사용하던 곳 즉시 값을 반환
그 하나의 차이 이 같은 라이브러리를 사용하여
비동기 프로그래밍에 더 많은 당신이 준비가되면 일반적입니다
에서 값을 반환합니다 파일에서 데이터베이스,,
산술에서 표현, 그것은 당신에게 달려 있습니다
콜백 함수를 호출합니다.
그리고 좋은 점 이 라이브러리에 대한
우리는 문서를 읽으면 더 신중하게 즉,
경우에만 모든 경우 라는 콜백 지역
오류 개체가 없으면, 모든 일이 성공한다?
따라서 환언하면, 2가 있는지
익명 (10)가 있는지 기능
이 배열에 따라서 이 시리즈에서,
단지 그들 모두가 성공하는 경우,
최종 선택적 콜백는 것 성공적으로 간주?
만약 그들 중 누구 모든 기능에게 실패
그것은하지 않습니다 후 심지어 실행.
그래서, 그것은 종류의 좋은 방법입니다 의 데이지 체인을 갖는
그 중간에 중단 뭔가 잘못되면.
그래서 여기, 문맥에서 볼 수 우리가 다시 구현하는 방법입니다
그 이전 프로그램.
I는 이전 경로를 얻을 그래서 이것은 쉬운 부분입니다.
나는이 골격 코드를 붙여 복사
이 문서에서 async.series 여는 괄호,
대괄호를 엽니 다.
그리고 지금은 하나가 통지 이 시작 부분에있는 기능
두 번째, 우리는 볼 수 있습니다 우리는이에서가는 곳.
그리고 지금 발견, 그것은이다 처음에는 조금 복잡
하지만 단지에 집중 그것은 선으로 라인.
Fs.stat는 통계를 의미 또는 해당 경로의 것이 아니다.
준비가되면이 콜백을 호출합니다.
이 코드는 이전과 동일합니다.
오류가있는 경우에, 하나의 차이가 지금있다.
다시, 매우 일반적인 패러다임 node.js 프로그램에
뭔가 잘못되어있는 경우 콜백은 알 필요가있다
규칙에 따라 먼저 콜백 인수는 것입니다
모두가 잘하거나 한 경우, 될 수있는 Error 객체에 대한 참조,
자본 E. 그것은 오류처럼 전 세계적으로 존재하는 클래스
하지만에 대한 자세한 다른 시간.
그래서 이렇게이 있다면 오류의 의미는 무엇인가?
그럼 내가 무엇을 기준으로 이 시리즈는 않는다고 말했다
아무것도가는 경우입니다 잘못, 우리는 단지 종류의 할
전체 시리즈를 중단 익명 함수를 호출합니다.
그래서, 나를 위해 충분 다만 콜백 통과를 반환
오류 개체.
때문에 합계는 준 경우 나를 다시 오류,
나는 새를 만들 수 있습니다 내 자신의 오류 개체,
하지만 난 정말,에 걱정하지 않는다
난 그냥 통과 원하는 오류가 실제로 일어날 것입니다
그래서 그것을 전달할 수 있습니다 이 콜백.
그리고 그냥 명확하게, 반환 엄격하게 할 필요가 없습니다.
나는 기본적으로이 작업을 수행 할 수 하지만 지금은 "반환 않는다 싶었다
/ / 그 때문에 더 이상 없다 여기에 코드를 "실행한다.
그래서 다시 또 다른 일반적인 자바 스크립트의 규칙,
당신이하지 않은 경우에도 자체 값을 반환
당신이 값을 전달하려면 콜백 함수
하지만 당신이 원하는 실행을 중지
당신이하고있는 기능 사소한 방법에
이 작업을 수행하는 것은 단지입니다 전화는 여기 돌아갑니다.
그러나 아무 문제가 없다,
우리는 단지 반환 콜백을하고있는 이려고하더라도 오류
정의되지 않은 값을 반환합니다.
좋아,이되지 않습니다 가능성이 가장 높은 값을 반환합니다.
내가 걱정 모두입니다 추가 실행을 탑승.
따라서, 이러한 내 융합 두 라인은 스타일리스트
단지에 대한 협약 라인의 번호를 가지고
코드의 난 그냥 쓴 2-1.
그래서 다른 건?
오류가없는 경우에 -
실제로 명확하게 나는 또한 피할 수
이 경우 다른 수행하여.
그러나 다시, 또 다른 일반적인 패러다임은 확인하는 것입니다
당신의 오류에 대한 위로 가기 다음 다만 반환하기보다는 계속
당신의 코드를 들여 쓰기 를 elses과를 elses과를 elses.
그래서 아니라면 파일은, 지금, 당신은 알고있다,
내가 처리 할 조금 특별히.
그래서 여기에 자바 나 C + +처럼 또는 몇 가지 다른 언어
여기를 인스턴스화 할 수있는 방법 오류 통과를 입력 객체
기본 메시지 아니 파일
이것은 단지입니다 다소 임의의.
하지만 신호 해요 내 자신의 오류.
그리고 무슨 일이 마지막을 수행 라인은 아마 의미?
모두는 잘입니다.
당신은 null을 전달하는 경우 오류 매개 변수, 그것은 단지 의미
규칙에 의해 모두 잘 있습니다.
그래서 그것은 무엇을 의미하는지 논리적으로 일어날 것인가?
NULL이 전달되는 경우 콜백
즉,이 익명을 의미 함수는 성공했다
말하자면.
그래서,해야 시리즈 방법은 앞에 지금 기반 않는다
이전의 내 언어 적 정의에?
[청취 비고]
바로 다음 단계로 이동?
그것은 null이 아닌 반환 한 경우 값, 그냥 중지 것
더 이상 익명 함수가 호출되는 것입니다.
그러나 그것은하지, 다음이 있기 때문에 이 다음에 호출되는 것입니다.
그래서, 여기에 논리는 거의 동일한 이전과
우리는 청소하는 방법을 볼 수 있습니다 잠시 더이 최대.
나는 이것이 많은 종류 실현
구두 모두 흡수 시각적.
하지만 지금은, 두 번째 통지 내가 원하는 익명 함수
직렬로 실행하는 것은 파일을 읽으려고합니다.
이 콜백을 호출 당신이 준비가되면.
오류가있는 경우에, 단지 콜백의 방식으로 신호
그래야 나머지 이 물건은 중단됩니다.
다른 NULL을 반환합니다.
그런데 왜 내가 전달하고 두 개의 인수에?
나는 글쎄이 시간 파일을 다시 가져
변수는 데이터를 불렀다
내가 의미하는뿐만 아니라 원하는 모든 null을 반환하여 잘
첫 번째 인수.
나는 실제 반환하려면 두 번째 인수로 데이터를 저장합니다.
때문에 나는 더 읽으면 설명서,
이 코드의 마지막 청크를 통지 대괄호는 그 뜻
시리즈의 끝.
두 익명이 있었다 이 시리즈에있는 기능.
오류는 여기가 있다면 내가 알고있는 링크 중 하나
이 체인에 너무 말을하지 못했습니다.
따라서 환언하면,이 오류 오류 개체가 될 것입니다
즉, 널 (null)입니다 (있는 경우) 이러한 사람들은 실패했습니다.
그런 경우면, 난 그냥 구제하려고 나는거야
(400) 대답하는 요청이 실패 의미,
그것은 매우 일반적인의 오류 메시지입니다.
그리고, 내가 갈거야 오류 메시지를 인쇄 할 수 있습니다.
그래서, 내가 귀찮게 아니에요 이번 슈퍼 항문 수,
나는 구별하지 않을 것이다 , 500, 404, 403 사이의
난 그냥 좀 해요 맹목적으로 내 손을 흔들어
뭔가가 잘못된 말한다.
그러나 아무것도하지 않았다 경우, 잘못
나는이를 보낼거야 이 데이터를 전달 res.end.
지금이 조금 애매 보인다.
그러나 나는 다시하는 경우 문서,
두 번째 인수 이 마지막 최종 콜백,
실행 만있어 사람 시리즈가 완료되면
거기 실행하거나 부 의,이 배열이 될 것입니다
두 번째 인수의 모든
전달 된 그 콜백.
지금, 그것은 밝혀 그 단지이 시리즈의 링크
그 사실은 두 번째로 돌아가 인수는 여기입니다.
그래서 난에 정렬거야 믿음의 도약은 단순히 가정 해 사용
순간을 위해 그 마지막 방법은
그것은 당신에게 마지막을 제공합니다 배열의 요소.
이 때문에 배열 그 전달되는 것
나에게 두 가지 왜곡을 최소화있다, 0과 1.
그냥 제로의 값이 없음 이 사람이 반환하기 때문에 -
두 번째에 전달하지 않습니다 인수하지만이 사람은 않습니다.
그래서 브래킷 결과 제로는 아무것도 아니다,
결과 브래킷 하나 무엇을 포함,
당신은 다음과 같은 한 적이 있다면 이 시점까지 함께?
파일,여보세요, 세계 콘텐츠 아마도,
그래서 어떻게 사실의 그것을 인쇄 할 수 있습니다.
그리고 저를 마무리하자 여기에 세부 사항.
나는 나이를 이런 종류의 작업을 수행하는 경우 학교, 내가 얻고 싶은 경우에
마지막 요소에서, 내가 할 수있는 경우 수행 결과 [results.length-1],
즉, 일종의 오래된 학교 방법
마지막 요소에 접근 에서 - 또는 0 인덱스 배열입니다.
하지만 옆에서 같이 불러 나는이 라이브러리를 가지고 있다는
여기까지로하는 밑줄 대회는 단지라고합니다
말 그대로 밑줄 특별한 아닌 문자
그냥 같은 시원한 달러 기호는 jQuery를위한 않습니다.
이건 그냥 도우미 방법은 마지막 점을 강조
그게 바로 수행 같은 일.
그리고 당신은 그것을 사용한 적이있는 경우 전에 모두 JS를 강조
클라이언트 측 코딩
서버 측입니다 멋지고 유용한 라이브러리
설명한 것과 많은 사람들이 그것은 jQuery를 모두 포함 좋아
방법으로, 사람들이 바란 자바 스크립트 자체와 함께.
OK.
>> 그럼, 꽤 추천하고 나는 시리즈에보고했다,
당신은 콜백처럼이 인수로?
>> 예.
>> 같은 경우 실제로, 푸시 같은
그것을 무엇처럼 당신이있을 때 의미
같은 콜백을 다음과 같이 금지 -
[청취 비고]
>> OK, 좋은 질문입니다.
그래서, 내가 끌어 보자 여기에 비동기 메인 페이지
또는 GetHub에 대한 설명서를 참조하십시오.
따라서이 표준입니다 구조.
당신은 호출이를 사용하는 경우 특정 방법 시리즈
거기에 두 개의 큰 부분이있다.
하나의 배열 익명 함수
2 개는 최종 콜백입니다 실제로의 기능
매우에서 실행 시리즈의 끝.
이제, 우리는 확대하는 경우 처음에 좀 더 가까이
그 큰 것들, 익명 함수의 배열
이의 요구에 의해 사람의 설명서에는
익명으로 소요 기능
하나의 인수라는 콜백 또는 foo는 나 바, 그것은 중요하지 않습니다
그러나 그는 콜백을 부르고있다.
그리고 이것은 당신의 버저의 일종이다 흔들 판잣집을 손 것을.
이 수단 인 바이 당신은 값을 반환 할 수 있습니다
고객에게 당신 때문에 문자 그대로 반환 할 수 없다.
당신은 그것을 할 필요가 이 콜백의 방법입니다.
이 때문에 내부에있는 경우 기능이 약간 느리게 실행됩니다
데이터베이스 쿼리 같은 코드 읽기 파일 시스템에서 파일,
당신이 기다리고 싶지 않습니다 그리고 다른 사람을 차단,
당신은 콜백을 호출 할.
그래서,이 말 그대로 인수의 이름입니다.
하지만 당신은 C에 좋아 함수 포인터가 있습니다.
자바에서는이 참조 시스템 방법
같은 여기에 자바 스크립트에서.
이 변수입니다 만, 그 유형은 기능입니다.
그래서 단순히 이름을 작성하여 여부 콜백 또는 foo는
또는 바, 다음 여는 괄호 와 닫는 괄호,
당신은 실행하고 그 기능에.
그리고 널 (null)을 전달하는 의미는 null 오류 및 하나
어떤이는 것을 의미한다 내가 전달한 할 데이터
그리고 덩어리는 명확하게, 이것은 또 다른 콜백입니다.
그리고 그것은 콜백 호출되지 것,
그냥 개념입니다 콜백 메서드 기능
이 호출되기 때문에 정의에 의해
이 저자의 라이브러리의 경우 전체 시리즈는 완료
또는 그 부분 집합의 경우 오류가 빨리 일어났다.
따라서, 콜백 함수의 이름, 콜백 함수를 호출,
, 콜백 함수의 이름 콜백 함수를 호출,
콜백 (callback) 함께 모든 기능을 수행합니다.
>> 우리는 지금처럼이 콜백을 정의?
>> 아니,이 사람 덕분에 배열로 전달합니다
의 익명 함수,
코드에 대한 포인터 그는 실행하려고합니다.
정확히, 좋아.
그래서, 말을하시기 바랍니다 코드는 좀 더 간단 가져옵니다.
그래서, 할 수 있습니다.
그리고 당신이 나 같은 경우, 소요 적어도 알고있는 편안함,
그것은에 시간이 걸립니다 이 익숙해.
그러나 우리는 청소할 수 이 위로 조금,
당신에 너무 많이 발생하지 하지만 여기에 또 다른 변화의
과는 다른 방법을 사용
동일한 라이브러리에 폭포했다.
의 상승은 시리즈는 다른 곳에 각
그 익명의 기능은 기본적으로 실행
독립적으로 다른 사람의 각.
이름처럼 아시아 폭포 최상위 함수에게 수
종류의 값을 전달합니다 아래 함수,
종류의 물이 폭포를 좋아한다.
그래서 이것의 상승 입니다 내가 종류의 수
내 장점이를 사용합니다.
async.waterfall에서, 다음을 알 수 있습니다.
난 그냥 fs.stat를 호출 할 수 있습니다 경로 전달
내가하고 싶어하는 것이 에 대한 통계.
그리고 제가 전에 기억 익명 함수를했다
즉, 두 개의 인수가 잘못을했다,
esults 후 나는 호출 콜백 기능을 수동으로?
다시 말하면 단지가 될 것입니다 분명, 기억 그 이전
비동기 2, 모두 한 이 불쾌한 일의.
나는 fs.stat P 전달이라는
내 자신의 익명 선언 기능.
오류가 있으면 다음 검사 null이 아닌 그때 나는 이런 짓을,
다른 I는 전체에게 그 짓 규칙을 다음의 아름다움
같은 node.js에 해당 콜백입니다 일반적으로 함수는 의미가있다
적어도 하나의 인수를하기 위해, 0으로 다음 오류 객체
더 유용한 값이나.
그래서, 여기에 패러다임을 통지
난이 콜백 함수 선언은 정확히 다음과
패러다임이이 사람의 비동기 라이브러리는 않습니다.
이 말을하는 것입니다 어떤 이유입니다 난 내 자신의 콜백을 구현
방법 경우의 저자 라이브러리는 말 그대로 나에게 전달됩니다
플래터에 말하자면, 콜백 기능을 사용해서 좋은가?
그래서, 난 그냥 전달할 수 참조 그는 나에게 주어진 것
그래서 즉시, 내 몇 줄
코드의 한 줄의 코드가된다.
이제 우리는 어디로 갈 수 있습니까?
다음 기능이 내가 실행하고자,
다음 익명 이 배열의 기능
다음의 기능을 수행합니다.
공지 사항 첫 번째 합계입니다 첫 번째 인수.
그래서 뭔가가있다 이미 변경되었습니다.
자,이 사람이 누구 라이브러리를 썼다 -
나는 사람을 말하는거야 그것은 사람이기 때문입니다.
이 라이브러리를 쓴이 남자 문서 보증입니다
그 경우에, 여기에서이 기능을 나를 다시 오류 개체를 전달합니다
는 null 혼수 상태 다른 값의 분리 된 목록,
그는 있는지 확인합니다 그 다른 값이 전달됩니다
이 익명의 함수 왼쪽에서 오른쪽으로 순서.
그리고 무엇 단지로 사용 혼자 콜백 기능을 간단하게
마지막으로 이러한 인수가됩니다.
자, 난 누군지 몰라 에 초점을 당신은 알고있다.
하지만 지금, 무엇을 여기에 데려가?
그래서, 우리는 알고 문서
또는 사례의 사전 부부
그 fs.stat 궁극적으로 예상 두 개의 인수로 콜백,
인 오류 개체 Error 개체는 null 다음
에 대한 참조로 통계 오브젝트.
나는 그것에 대해 생각한다면, 오류 개체 혼수 통계 오브젝트,
그 패러다임에 맞는 이 사람의 도서관.
그래서, 간단하게 말할 수 있기 때문에 나는 두 번째 인수 없음
그것의 것을 - 그 무슨 fs.stat에 의해 전달되는
콜백 통계, ERR입니다 이 라이브러리의 정의에 의해,
나는 두 번째를 넣을 수 있습니다 인수의 이름을 여기에
또는 무엇이든 나는 이름을 바꿀 수 있습니다
나는 다음 원하는 경우 여기에 콜백에 의해.
그래서, 하나를 통과 할 수있다 여기에 여기에서 평가한다.
자,이 모든 코드는하지만 하다시피 다소 비밀
이상에 복사하여 붙여 넣기를 이전의 대부분.
유일한 차이점은 예고하다 여기에서 나는 오류를 선언하고있어
개체 지금은 원하는 조금 애호가 얻을 수 있습니다.
사실 알고 싶은 오류가, 그래서 나는거야되었다
이 개체의 내부에 넣으십시오 속성은 임의의 코드를 호출
나는 것을 알 수 있도록 이 파일이 아닙니다
즉 무단해야한다, 그것은 HTTP 403입니다.
저를 기억합시다 그 전에 나는 오류 개체를 전달
콜백.
그리고 마지막으로 읽으려고 파일, 그래서이 경우,
폭포, 내가 깼다 두 개의 큰 단계의 코드
세 개의 작은 단계로.
여기에 아름다움을 주목하라
나는 fs.readFile를 호출 할 수 있습니다 경로에 전달합니다.
그리고 어려운 부분 정신적으로, 난 그냥 통과한다
남자의 콜백.
그가 나에게 건네 야 문제는, 난 fs.readFile에 전달할 예정.
우리는 모두 준수하고 있기 때문에 동일한 규칙에,
콜백에 대한 첫 번째 인수는 다음 오류 개체는 null
혼수 상태로 또는 분리 유용한 물건의 목록입니다.
그래서, 지금하고있는 경우 무엇을 의미하는지 I 내가 알 꺼야 문서를 읽어
이, 맨 마지막 콜백, 외부 여기이 사람
대괄호의 것입니다 Error 객체에 전달 될
또는 내가 확인해야 널 (null) 항상 여기에이 코드.
그리고 정의에 의해 이 방법의
사람의 문서에서, 반환되는 마지막 값
마지막 방법에서 내 익명의 배열 -
익명 함수 내 배열입니다.
그래서, 파일 수익을 읽어 않습니다
나는 반환을 사용하고 있습니다 느슨하게 지금.
나는 무엇을 의미 인수로 파일 패스
콜백 메서드 그 손으로?
두 개의 인수, 처음 Error 개체는 null,
그것은 거의 항상 해답이 될 것.
그리고 두 번째는 것입니다 무엇을 읽기 파일을 할 수?
파일의 내용, 우리가 이전에 그것을 호출로 데이터를 저장합니다.
그래서, 단순히 선언하여 ERR, 결과,
오류이 확인 종류의 지금은 지루합니다.
그렇지 않으면, 나는 res.end을 그 결과를 전달합니다.
이것은 의심 할 여지없이 것 완벽에 동기화되지
때까지 실제로 스스로를 작성합니다.
하지만 지금은 걸릴 멀리 적어도 사실
이런 방식이 있다는 것을 일반적인 패러다임있다 만약에 우리
도서관의 저자 스틱의 모든 종류
이 협약에 콜백 메소드.
그리고 첫 번째 인수는 Error 개체는 null.
그리고, 두 번째 및 세 번째
와 네 번째 개체는 것들 우리를 걱정하고 정렬
의 규칙을 따라 설명서를 참조하십시오.
우리는 코드로 시작하는 솔직히 꽤 추한입니다.
그리고 비록 가장 최근 예 종류의 하드 솔직히입니다
당신의 마음을 주위에 포장하는, 그것은, 적어도 시각의 정보
훨씬 더 단단한 것처럼 보인다.
그리고 당신은 편안하게하면 그것으로, 그것은 너무 쉽게
그것은 훨씬 적은 경향에의 그 앞의 예보다 버그.
그래서, 내가 설명하자 여기에 마지막으로 하나.
이 버전의 세 가지입니다.
그리고 - 아니, 이제 떠나 보자 이것 만.
내가 몇으로 가자 맛보기 등의 마지막 일.
좋아요, 서버 2.
OK. 첫째, 질문, 나는이 많이 알고
하지만 당신은 더 많은 것을 원했다 지침, 그래서?
당신은 좋은 말을하지 않았다 교육 필요.
그래?
[청취 비고]
올바른, 당신은 본질적으로있어 운영체제 엄밀
곡예를하는 방법을 알아낼 수 한 번에 이러한 공의 모든,
파일 읽기, 데이터베이스에서 읽기.
그리고이 자바 스크립트를 서버에게의 자체 즉, 단일 스레드입니다.
그리고 본질적으로 실제로,
한 장의 사진이있다 내가 던져하지 않았다
그리고 그것은 반드시 아니에요 모든 계몽
하지만 어쩌면 우리는주지 당신은 정신 모델.
자바 스크립트 자체와 노드
특히이있다 그래서 이벤트 루프했다.
이에 의해, 당신이 생각할 수있는 node.js 중 프로그램
문자처럼 무한 루프.
그것은 대기, 그냥 야생 루프의 기다리고 기다리고,
완료 할 작업에 대한 자세한 내용은.
그리고 작업은 갈 수 있습니다 데이터베이스에서 뭔가를 가져
또는 여기에서 값이다 데이터베이스 또는이 파일을 가서
디스크 나 여기 사용자로부터 요구한다.
다만 같은 이벤트의 모든 종류, 브라우저 이벤트 구동,
같은 있도록 서버 사이드 이벤트 구동.
그리고 그 일의 이벤트를 구성한다.
node.js에 따라서 사람, 단지 무한 루프를 작성,
큰 야생 루프, 대기 물건이 발생 할.
그리고 물건이 일어날 않는 한, 오른쪽 큐에 끝?
물론, 데이터베이스 값을 반환 할 수 있습니다.
그리고, 파일 시스템, 운영 시스템은 값을 반환 할 수 있습니다
대략 동시에 하지만 거기에 아마거야
그들에게 몇 가지 주문한다.
그리고 node.js는 것입니다 기본적으로 큐에게 있습니다
큰 배열 또는 같은 벡터, 일부 데이터 구조
그 모든 버퍼 그런 일이.
그것은 말 그대로 할 수 있기 때문에 한 번에 그 중 하나를 처리한다.
따라서, 때, 개발자,
비동기 자바 스크립트를 작성 비동기를 사용하여 코드
기능이에게 허용하고 이벤트 루프 가고 소위
다음 틱에, 오른쪽?
그래서만큼 즉시 모든 반환
이러한 비동기 방법 파일 읽기 및 합계 좋아한다,
그들은 즉시 반환 때문에 결국 콜백
다시 가져옵니다.
가능한 빨리 반환,
즉, 다른 사람이 할 수있는 것을 의미 여기에 주식에서 팝 얻을
또는 그것에서 팝 얻을 수 여기 큐의 앞.
그래서 거기에있다 사실 연재
일어나는 모든 것을,
비록 모든 물건 병렬로 발생 될 수있다
다중 스레드 시스템.
하지만 자체를 node.js 서버가 실행중인
하나의 스레드로.
그리고 그의 단점은 당신이 반드시 최대하지 t
컴퓨터의 중 기능은 특히입니다
당신은 16 코어 또는이있는 경우 도 2 코어 컴퓨터
그리고 당신은 실행중인 노드의 하나의 인스턴스.
하지만 당신은 다시 나있는 경우에 161 같은 것을 가지고,
당신은 큰 악몽을 피하기 그것이 올 때 두통
조건을 경주 자물쇠와 세마포어
진정으로 작성 멀티 스레드 코드,
그래서 그나과 단점.
OK. 그래서, 다시 여기에 코드를, 내가 우리가 시작 것을 제안하자
물건을 조금 단순화.
우리는 서버 하나를 조금 보았다 전 어떤이처럼 보였다.
그래서, 틀림없이의 아주 간단합니다.
하지만 단지 세계에서 같은 PHP의, 프레임 워크가있다
Laravel 추천하고 있습니다 레일 및 장고 같은 것들,
node.js 세계에서 같은 일.
그리고 우리는 더 많은 지출을합니다 수요일에이 시간에
그리고 다음 프로젝트.
하지만 난에 가면 서버 2 디렉토리,
여기에 몇 가지 패러다임을 알 수 있습니다.
그래서이있다 -이가는 해당하는 예가 될 수
그러나를 이용한 것 express.js라는 프레임 워크,
무료 오픈 소스 인 레일 및 장고와 같은 소프트웨어,
Laravel처럼, 그건 다만 궁극적으로가는
오늘 진가를 인정받지 못한이어야합니다 왜냐면 우리가 만들고있어
이러한 간단한 예제.
그러나 우리를 신뢰.
이것은 매우 빠르게 것 당신의 친구가되고
그것은 절약 할 수 있기 때문에 당신 TDS의 코드를 많이.
그리고위한 공통의 패러다임 express.js 응용 프로그램입니다
app.js 또는 server.js을 가지고 로직을 포함 파일
프로그램의 또는 최소한 진입 점입니다.
당신은 여러 개의 파일을 가질 수 있습니다.
노드 모듈의 하위 디렉토리 라이브러리를 가지고있는
당신이 다운로드 한 것을 비동기 같은
다른 사람으로 자신을 표현한다.
그리고 package.json, package.json은 다음과 같습니다,
당신은 수동으로 만들 수 있습니다 또는 도구는 당신을 위해 그것을 만들
그것은 말 그대로 JSON 파일의
그리고 흥미로운 부분 여기에 종속입니다.
당신은, Laravel에 좋아 했다 그 공급 업체 디렉토리
당신은 걱정했다 패키지에 대한 및 수행 -
실제로으로 업데이트 장인 또는 이와 유사한 명령,
라이브러리 당신 설치,
유사 package.json 여기 당신은 라이브러리를 관리
및 버전 당신이 걱정하는 것을.
그래서, package.json이있는 경우, 단순히 NPM을 수행 할 수 있습니다,
노드 패키지 매니저 설치, 자동으로 보는 것
그 package.json 파일에서.
보고 참조, 내가 할 최신 버전
모든 공급 업체의 모듈
노드 모듈은 밑줄 디렉토리 여기 아니면
일부 부모 나에 상위 디렉토리.
그렇지 않은 경우, 그것은이다 을 다운로드 할 것
당신은 전체 무리에게 볼 수 있습니다
가는 HTTP 물건 와이어를 통해.
그래서 예를 들어, 나에게하자 당신의 내용을 표시
노드 모듈 단지 표현.
내가 가서하자 대담 노드 모듈을 삭제
내가 지금 가지고있는 모든이되도록.
내가 NPM 설치하는 경우에, 당신은거야 그것을 읽을 것 볼
그 package.json 파일과 우리는 본 적이과 유사한 출력
Laravel 세계에서 이것.
그것은 전체를 다운로드하는 것 물건의 무리와 그의
때문에 회전에서 명시 전체 무리에 달려
다른 사람의 라이브러리.
그래서, 그 모든 종류의 수 있습니다 재귀 적으로 다운로드하는.
지금까지 내가 다시 LS에서하는 경우에,
내 노드 모듈이있다 디렉토리로 돌아 가기
하고 다시 표현한다.
그래서 그것은 단지 방법의 단순화 패키지 관리.
이제, 우리는 보면 app.js 파일이 것입니다
에 복귀 할 수 우리의 최초의 웹 서버
우리는 단지 침 곳 "안녕하세요, 세계"중.
하지만, 여기에 패러다임을 발견,
먼저 우리는 급행을 필요로 모듈은, 우리는이 라인을 가지고
당신이 알고있는 코드 문서에서.
당신은 말 그대로 그 치료 함수와 같은 모듈의 변수,
그래서 열린 괄호 닫기 괄호는 실행을 의미합니다.
그건 분명히 것 우리가 가고있는 뭔가를 반환
일반적으로 응용 프로그램을 호출합니다.
그것은 어떻게 작동?
난 정말 모르겠어요.
나는 다른 사람이, 당신이 알게 할 것이다, 명시 적 세계에서 그 물품.
지금에 서있는거야 자신의 어깨로 이렇게
내 응용 프로그램을 만들려면 좀 더 간단 실행.
자, 내가 들어 갈거야 특정 포트에
그 대부분의 것이 될 수 있습니다.
그리고 여기의 코드는 어쩌면 연상 지금
Laravel 및 routes.php의.
그래서 이것은 제가, 저녁 식사를 간단 그냥 경로를 지정하는 것
슬래시 스타, 그래서 모든 것을 흡수 될 것입니다
이 요청 처리기에 의해.
요청 처리기에 대한 패러다임 그 익명 함수는
요청 인수
및 응답 개체 바로 앞에있다.
그리고 표현 수단 res.send 당신은 코드가 다음에 보내
당신이 무엇을 보낼로.
그리고 물론, 당신은 할 수 할 애호가 뭔가
실제로 보내 파일이나 HTML
또는 동적으로 생성 내용.
하지만 지금은 우리 모두가 한 안녕하세요, 세계를 뱉어했다.
우리는 세 가지 서버로 이동하는 경우, 이도 애호가 단지
몇 가지 기능을 표시합니다.
그리고 우리는 당신에게 보여줄 것 도 섹시 버전
수요일이의.
하지만 당신은 들어 본 적이 있다면 어쩌면 소켓 IO의
나는 그렇게 생각대로 조나단 또는 누군가가 말했듯이,
것들 중 하나 노드는 정말 알려져있다
에 대한 실제 시간입니다 행동, 맞지?
당신이 경우, MySQL은 PHP에 대한 생각 채팅 서버를 구현했다
PHP에 이에 두 사람이 할 수 foo.com에 브라우저 창을 열고
다음 각을 IMing 시작 하나의 창에서 다른, 앨리스,
또 다른 밥 있도록 그들 각각은보고 그의
또는 그녀의 메시지에 다른 창.
당신이 어떻게 할 것 PHP와 MySQL에서?
Laravel 정렬을 사용하거나 사용하지 무형, 당신은 할 수 있습니다
index.php 파일 등을들 수있다.
그리고 당신은 가질 수 있어요 -에 이 침에있어 어떤 경우
형태 중, 그래서 거기에 HTML 양식이 될 것
그것은 아마 제출 일반 양식 제출을 통해
하지만 아약스 아마, 오른쪽?
그래서,에 이렇게, 핸들러를 제출 당신은 텍스트 필드에 입력 한
당신은 입력에 충돌 한 후 가져 Ajax를 통해 서버로 전송.
당신은 무엇을 다음 할 서버에서합니까?
그래서, 당신은 index.php를 가지고
또는 어떤 점 PHP의 그 HTTP 매개 변수로 수신
사용자의 앨리스의 또는 밥의 인스턴트 메시지, 당신은 무엇을해야합니까
를 전파하기 위해 그것으로 각각 밥 앨리스,에?
나는 말 그대로 의미 도구를 가지고하는과
여러분의 분에이 작업을 수행 할 수 있습니다.
당신은 무엇을 할 것 같이?
당신은 1 분이 이 프로그램을 구현합니다.
그래?
[청취 비고]
완벽한. 좋아요, 당신은 데이터베이스를 가지고있다.
우리는 조금 알고있다 MySQL의에 대한 비트.
그래서, 당신은 테이블이 그 메시지의,
어쩌면 시간이있다 스탬프, 사용자 ID,
메시지 본문 자체는 생성,
그와 그 모든 업데이트.
그래서, 당신은 데이터베이스에 저장합니다.
그리고 앨리스가 보내는 가정 첫 번째 메시지 밥은 어떻게 얻습니까
이제 메시지 데이터베이스에서?
>> 그것은 어떤 아약스 수 있습니다 끊임없이 일어나고 응답
데이터베이스에 다시 상단 [들리지 얻을.
>> 그렇습니다.
그래서 코드의 밥의 코드는 앨리스와 같은 단지 일종이다
대칭 관계,
밥의 브라우저가 몇 가지 Ajax 코드가 그것은 아마 어쩌면 매 30의
당기 초 아약스의 동기화를 통해 서버,
새 메시지가있다?
새 메시지가 있습니까?
매 30 초 것입니다 종류의 차선이 될 수 있습니다
기다리지도하기 때문에
만약 앨리스 그대로 다만 메시지를 보냈다.
그래서, 밥의 브라우저가 할 수 모든 두 번째 서버를 누르십시오.
하지만 앨리스의 의미 브라우저가 서버에 타격
매 초마다.
찰리에 대한 [가정 철자]
다윗은 [맞춤법 가정] 에드워드는 [맞춤법 가정]
다른 모든 문자 알파벳?
문제는 무엇입니까 이 방법의?
과도한 안타의 많은 -
내 말은 당신은 효과적으로있어 자신의 시력을 먹이지
또는 DDOSing, 분산 서비스 거부 공격
자신의 사이트에서 모든함으로써
이러한 사용자의 자바 스크립트에게 실행 다만 핑 된 코드
도대체 서버 중 경우에도 임의의 숫자,
시간의 80 % 아무도 아무 말도하지 않았다
대화방에서.
그러나 당신은 확인하고 등의 확인하십시오.
많은, 그래서 PHP 언어는 단지 잘되지 않습니다
실시간 통신.
PHP 리콜에 있기 때문 하는 중앙 기억하지, 그렇지?
당신은 세션 개체가 환상을 생성하는
중앙 저장 만의 즉, 사용자별로이다.
당신은 글로벌 메모리가없는 같은 당신은 자바 서블릿에서 할
잘 알고있는 또는 다른 프레임처럼 작동합니다.
Node.js하지만, 당신이 있습니까 당신이 원인 전역 메모리 '
하나의 서버와 '수 이 원하는 아무것도 기억
에 대한 모든 사용자.
그리고 당신은 여전히​​ 수도 데이터베이스가있다.
그러나 node.js의 좋은 점 너무 훨씬 더 나은 것입니다
PHP 같은보다 과 환상을 만드는
체류 취급 한 번에 일.
사실 옆에서 당신이 할 수있는 PHP에서 채팅 서버를 구현,
하지만 당신은 일반적으로 할 것 롱 폴링이라는 것을
당신은 ping을하지 않는있다 서버마다 두 번째.
당신은 서버에 ping, 서버가 응답하지 않습니다
(30)의 위쪽에 대한 초, 그것은 문자 그대로 앉아
루프에서 대기 및 대기.
그리고 서버를 확인하는 경우 데이터베이스에 새로운 데이터가있다
것만으로 일단은, "아,보고 여기에 밥에서 메시지가 "의
그것은 HTP 서버에 응답합니까?
그래서 브라우저에 효과 입니다 IE 아이콘이나 모질라
또는 무엇이든은 회전을 유지 한 번에 30 초.
하지만 거꾸로 당신이하지입니다 (30) 연결 요청이
30 초, 당신은 하나 있습니다.
그래서 긴 폴링라고.
그러나 더 나은 현대의 웹에서 브라우저라는 뭔가
웹 소켓, 어떤 당신은 CS143을
당신은 효과적으로 만들 수 있습니다 클라이언트에서 TCP 연결
서버에 브라우저와 같은 한 다음에 중단
거의 사용하지 않고 많은 자원
HTTP로 전통적으로 할 수 있습니다.
그리고 소켓 IO는 node.js 라이브러리
그게 훨씬 쉽게하도록 만드는 소켓 연결을
가 또는 환상 이전 브라우저 용으로
이 방법을 구현할 수 있도록 실시간 기능의.
그래서, 여기에 예입니다.
정상까지이 물건을 가져 좀 더 복잡한
하지만 대부분의 복사 및 붙여 넣기 것 socket.io의 설명서에서.
여기에 지금은 더 많은 정확한 요청 처리기.
만약 사용자 요청 슬래시, 어떤 파일 나는 갈거야
분명히 할 그들에게 제공?
index.html을.
그리고 새로운이있다 여기에 물건 스트림
난 당신을 보여주지하는 다만 순간.
그러나 이것은 또 다른 방법입니다
파일을 잡는 좀 더 효율적으로
다만 fs.readFile을하는 것보다.
조금 더 똑똑 특히 큰 파일의.
그래서 길고도 짧은 이야기, 이 라인은 봉사
index.html 파일이라는 파일을 백업
지금은 가정이 포함되어있는 HTML 양식하는 앨리스
밥은 서로 왕래 할 수 있습니다.
마지막으로, io.sockets.on,이 때문에 여기까지이 라인에서 온다.
그래서, 난 그냥에게 읽고 있어요 문서 io.socket 나에게 준다
소위에 액세스 웹 소켓 브라우저,
브라우저 사이 및 서버.
나는 특별한에 대해 듣고 이벤트에 연결하는 방법
경우 우선 사용자 안타 노력 서버
이 연결을 열고, 난 다시이 전화를 호출하는 것.
그리고 지금, 나는 갈거야 다음을 수행합니다.
5 초마다, 내가 할거야?
나는 방출 또는 방송하는거야 당신이 처음을 기억한다면,
그래픽 언어 것 방송 블록들?
그래서, 당신은 방출거야
이나라는 이벤트를 트리거 임의의 서버에서.
그리고 그것은 것 핑 메시지를 포함
현재 날짜.
그래서, 이것은 실제입니다 채팅 서버 앨리스
밥은 사용할 수 있지만 일종 자동화 된 채팅 서버의
메시지는 어디에 단지 종류의 수중 음파 탐지기 핑.
그것은 단지입니다 시간에 데이트있어 5 초마다 전송된다.
그래서, 사실은이를 실행하는 경우 일 - 그리고 바로 그거야.
여기까지 명확하게 예고 이 그냥 여기 아래로 로그인됩니다.
그래서, 내가 돌려 보자 그 맹인의 눈.
내가 app.js.의 노드를하자
내 브라우저에 가자.
여기에 홈 페이지를 다시로드합니다.
[일시 정지]
그리고 나 관리자를 닫습니다 수 있습니다.
5 초마다, 나는이 데모도 아니지만
인간에 ​​대한 대화
뭔가의 비동기 적으로 발생.
브라우저 고시, 더 회전 아이콘이 없습니다.
그것은 애호가 기능을 사용하는 것 최신 브라우저 크롬의
소켓을 유지 후드 아래에 연결
그것은라는 것을의 일반적으로 팝 / 하위 모델,
게시 / 가입 모델, 우리가하지 않은 곳
그 아주 여기에 명시 적으로.
하지만 이것에 대해 좋은 데요 일반 팝 / 서브 패러다임은
당신은 하나의 게시자를 가질 수 있습니다.
이 경우 중앙 서버와 모든
개인 브라우저 클라이언트입니다.
Alices과의 Bobs의 세계는 구독 할 수 있습니다,
그래서 당신은 메시지를 릴레이 할 수 있습니다 사용자의 수 중.
그리고 또 우리가 있는데도 상호 작용을 확인할 수 없습니다,
우리는 어쩌면 12 선을했다 코드의 단지이 작업을 수행한다.
그리고 그것은 아마 도약 아니다 당신이 채찍질하는 방법을 상상
index.html 파일 중 즉, 진정한 HTML 양식을 가지고,
와 jQuery 코드의 약간의 낮 시간을 보내지 않습니다 아약스
하지만 단지 보낸다 어떤 앨리스 또는 밥 타입 서버에
다음 서버 그것을 중계한다.
그리고 엿볼 약속 마지막으로 하나의 단지
이 당신을 애타게.
우리는 스트림으로 이동하는 경우 0과 1,
당신은 단지 코드를 볼 수 있습니다 여기에 조금 다른.
그냥 그래서 당신은 그것을 본 적이 이 대안입니다
나는 fs.readFile라는 것과 방법 이전에,있다,
당신은 이동 ", node.js를 알 수 있습니다 메모리에이 파일을 읽습니다.
그러나 큰의 경우 단지 제공 한 번에 나를 덩어리. "
그리고 당신은 CS165 알고 있습니다
또는 (161)의 파일 시스템 다른이
성능 특성.
당신은 읽어보십시오 512 바이트의 블록
또는 2킬로바이트이든.
이 최적화 방법입니다 반복적으로 다시 파일의 가져
당신은 침을 할 수 있도록 밖으로 조금 더 빨리
브라우저 나에 최종 클라이언트는 누구.
내용이 너무 많은 양의 오늘 우리는 뛰어거야
수요일에 더 자세히 팀과 [가정 철자]
특히 우리가 어떻게보고 아이디어의 일부를 번역 할 수 있습니다
상반기부터 물론 Laravel 및 모델
도서관에 그가 자신 Bookshelf.js라고 썼다
점점가되는 지역 사회에서 인기
그것은 당신에게 그것의 대부분을 제공하기 때문에,
이상없는 경우 웅변의 기능
리콜되는 것입니다 Laravel 도서관 통찰력,
그래서에 대한 자세한 정보와 더 많은
전체 깃털을 개발 수요일에 애플 리케이션.
우리는 당신은 볼 것이다.