﻿1
00:00:01,170 --> 00:00:02,830
‫Instrutor: Agora, a fim de

2
00:00:02,830 --> 00:00:04,710
‫preparar o terreno para as próximas

3
00:00:04,710 --> 00:00:08,083
‫aulas, vamos começar aprendendo um pouco sobre a arquitetura do Node.

4
00:00:09,430 --> 00:00:11,980
‫Então, vamos representar essa arquitetura aqui

5
00:00:11,980 --> 00:00:14,610
‫em termos de dependências do Node,

6
00:00:14,610 --> 00:00:16,620
‫que são apenas algumas

7
00:00:16,620 --> 00:00:20,300
‫bibliotecas das quais o Node depende para funcionar corretamente.

8
00:00:20,300 --> 00:00:23,320
‫Portanto, o tempo de execução do Node tem

9
00:00:23,320 --> 00:00:25,010
‫várias dependências, e

10
00:00:25,010 --> 00:00:29,030
‫as mais importantes são o motor V8 (murmúrios) e o libuv.

11
00:00:29,030 --> 00:00:32,800
‫Já dissemos antes que o Node é um tempo de execução do

12
00:00:32,800 --> 00:00:35,570
‫JavaScript baseado no motor V8 do Google, certo?

13
00:00:35,570 --> 00:00:39,140
‫E é por isso que aqui aparece como uma dependência.

14
00:00:39,140 --> 00:00:42,620
‫Se não fosse pelo V8, o Node não teria absolutamente

15
00:00:42,620 --> 00:00:45,980
‫nenhuma maneira de entender o código JavaScript que escrevemos.

16
00:00:45,980 --> 00:00:48,770
‫E, portanto, V8 é uma parte fundamental

17
00:00:48,770 --> 00:00:50,880
‫na arquitetura do Node.

18
00:00:50,880 --> 00:00:55,450
‫Então, novamente, o motor V8 é o que converte o código JavaScript

19
00:00:55,450 --> 00:00:59,470
‫em código de máquina que um computador pode realmente entender.

20
00:00:59,470 --> 00:01:03,370
‫Ok, mas só isso não é suficiente para criar uma estrutura inteira do

21
00:01:03,370 --> 00:01:05,380
‫lado do servidor como o Node.

22
00:01:05,380 --> 00:01:09,100
‫E é por isso que também temos libuv no Node.

23
00:01:09,100 --> 00:01:12,380
‫E libuv é uma biblioteca de código aberto com

24
00:01:12,380 --> 00:01:15,060
‫um forte foco em IO assíncrono.

25
00:01:15,060 --> 00:01:16,860
‫Então, entrada e saída.

26
00:01:16,860 --> 00:01:19,500
‫Essa camada é o que dá ao

27
00:01:19,500 --> 00:01:21,790
‫Node acesso ao sistema operacional

28
00:01:21,790 --> 00:01:25,240
‫do computador, sistema de arquivos, rede e muito mais.

29
00:01:25,240 --> 00:01:28,440
‫Além disso, o libuv também implementa dois recursos extremamente importantes

30
00:01:28,440 --> 00:01:30,540
‫do Node. JS que são

31
00:01:30,540 --> 00:01:34,010
‫o loop de eventos e também o pool de threads.

32
00:01:34,010 --> 00:01:37,130
‫E, em termos simples, o loop de eventos

33
00:01:37,130 --> 00:01:40,430
‫é responsável por lidar com tarefas fáceis, como executar callbacks

34
00:01:40,430 --> 00:01:44,790
‫e E / S de rede, enquanto o pool de threads é para trabalhos

35
00:01:44,790 --> 00:01:48,200
‫mais pesados, como acesso a arquivos ou compactação ou algo assim.

36
00:01:48,200 --> 00:01:50,120
‫Mas você aprenderá tudo sobre

37
00:01:50,120 --> 00:01:52,430
‫isso, sobre o loop de eventos e o

38
00:01:52,430 --> 00:01:54,430
‫pool de threads, nos próximos dois vídeos.

39
00:01:54,430 --> 00:01:56,080
‫Uma coisa importante a

40
00:01:56,080 --> 00:01:59,010
‫se notar aqui é que libuv é, na verdade,

41
00:01:59,010 --> 00:02:01,840
‫completamente escrito em C ++ e não em JavaScript.

42
00:02:01,840 --> 00:02:06,840
‫E o próprio V8 também usa código C ++ além de JavaScript.

43
00:02:06,950 --> 00:02:10,150
‫Portanto, o próprio Node é um programa escrito

44
00:02:10,150 --> 00:02:14,170
‫em C ++ e JavaScript e não apenas em JavaScript

45
00:02:14,170 --> 00:02:16,530
‫como você pode esperar, certo?

46
00:02:16,530 --> 00:02:19,660
‫Agora, a beleza disso é aquele Nodo. JS une

47
00:02:19,660 --> 00:02:22,310
‫todas essas bibliotecas, não importa se

48
00:02:22,310 --> 00:02:25,640
‫escrito em C ++ ou JavaScript e, em

49
00:02:25,640 --> 00:02:30,380
‫seguida, dá aos desenvolvedores acesso às suas funções em JavaScript puro.

50
00:02:30,380 --> 00:02:33,090
‫Portanto, isso realmente nos fornece uma

51
00:02:33,090 --> 00:02:37,290
‫ótima camada de abstração para tornar nossas vidas muito mais fáceis,

52
00:02:37,290 --> 00:02:41,200
‫em vez de termos que mexer com o código C ++.

53
00:02:41,200 --> 00:02:43,970
‫Seria uma experiência terrível, certo?

54
00:02:43,970 --> 00:02:47,450
‫Então, novamente, essa arquitetura nos permite escrever código

55
00:02:47,450 --> 00:02:49,490
‫JavaScript 100 por cento puro,

56
00:02:49,490 --> 00:02:52,960
‫rodando em Node. JS e ainda

57
00:02:52,960 --> 00:02:55,490
‫acessam funções como leitura de arquivo,

58
00:02:55,490 --> 00:02:57,650
‫que nos bastidores são implementadas

59
00:02:57,650 --> 00:03:01,290
‫em libuv ou outras bibliotecas na linguagem C ++.

60
00:03:01,290 --> 00:03:03,090
‫E por falar

61
00:03:03,090 --> 00:03:06,750
‫em outras bibliotecas, o Node não depende apenas

62
00:03:06,750 --> 00:03:10,920
‫do V8 e do libuv, mas também do analisador http

63
00:03:10,920 --> 00:03:15,920
‫para analisar http, c-ares ou algo parecido para algumas coisas de

64
00:03:16,420 --> 00:03:21,420
‫solicitação de DNS, OpenSSL para keptografia e também zlib para compactação.

65
00:03:21,490 --> 00:03:24,740
‫E isso não é tão importante entender, certo?

66
00:03:24,740 --> 00:03:27,830
‫Então, no final, quando tivermos todas essas peças bem

67
00:03:27,830 --> 00:03:32,030
‫encaixadas, acabaremos com o Node. JS pronto para ser usado

68
00:03:32,030 --> 00:03:35,000
‫no lado do servidor em todos os quatro aplicativos.

69
00:03:35,000 --> 00:03:37,670
‫E a seguir, você aprenderá mais sobre threads em

70
00:03:37,670 --> 00:03:39,600
‫Node e o pool de threads.

71
00:03:39,600 --> 00:03:41,663
‫Portanto, fique atento para isso.

