NodeJS: o que é e quais suas vantagens?
@WellsSA
@WellsSA
Agenda
-
O que é NodeJS (introdução)
-
O que é Javascript
-
Mercado atual (engenharia)
-
O que é NodeJS (técnico)
-
Mercado atual (popularidade)
@WellsSA
O que é NodeJS?
@WellsSA
O que
Porquê
O que é NodeJS?
Não é uma linguagem de programação
@WellsSA
A linguagem é Javascript!
Plataforma open-source que permite execução de linguagem Javascript do lado do servidor
O que é NodeJS?
@WellsSA
E por que Javascript?
@WellsSA
@WellsSA
@WellsSA
Javascript
Aplicações de Servidor
Machine Learning
Automação/testes
Node.JS, Deno, Bun,
+Serveless
Puppeteer, Cypress
TensorFlow.js, Brain.js, Synaptic
Realidade Virtual
React VR, React 360,
A-Frame
Aplicativos móveis
React Native, Ionic
Aplicações Desktop
Electron, NW.js
Games
Phaser, Three.js, Babylon.js
Banco de dados
MongoDB, Cassandra, Dynamo, Firestore
IoT, Música, até Maizena...
Páginas web
reactJS, VueJS, Angular, Svelte, JQuery
@WellsSA
Só pra provar um ponto
@WellsSA
Apps que usam Electron
@WellsSA
Recapitulando
O que é NodeJS?
Não é uma linguagem de programação
@WellsSA
A linguagem é Javascript!
Plataforma open-source que permite execução de linguagem Javascript do lado do servidor
O que é NodeJS?
@WellsSA
Ou seja:
@WellsSA
@WellsSA
E tem mais!
Contextualizando um pouco
@WellsSA
Desenvolvimento web
@WellsSA
Antigamente...
@WellsSA
Hoje em dia...
@WellsSA
Aplicações web modernas
@WellsSA
Aplicações web modernas
@WellsSA
Atualmente
Frontend
O Frontend é vivo!
- Responsabilidades
- Estados
- Propriedades
ReactJS, AngularJS, VueJS
@WellsSA
Antigamente
Servidor
Infraestrutura
Backend
Frontend Web
Resposta (HTML, CSS, JS)
(Browser)
Frontend Mobile
X
@WellsSA
www.app.envia.io
DNS
Você
Frontend
Infraestrutura
231.69.123.15
Atualmente
(http://)
Requisição
Requisição
Resposta
(JSON)
Resposta
(HTML, CSS, JS)
Infraestrutura
Infraestrutura
231.69.123.15
Servidor
231.69.123.16
Infraestrutura
Backend
@WellsSA
Em termos de dados
Servidor
Infraestrutura
Backend
Frontend Web
Resposta (JSON)
(Browser)
Frontend Mobile
Resposta (JSON)
@WellsSA
Por trás do backend
Infraestrutura
231.69.123.15
Backend
172.16.124.13
Infraestrutura
Banco de dados
166.72.122.12
Infraestrutura
Backend
Resposta (JSON)
Requisição (http | ws | ...)
@WellsSA
Entenderam?
@WellsSA
SPA + REST
O Frontend Só é carregado uma vez!
(Single Page Application + REpresentational State Transfer)
O que ele precisar, ele pede pro servidor (Que devolve só os dados)
@WellsSA
Profissionalmente falando
E o que isso tudo tem a ver a gente?
@WellsSA
@WellsSA
@WellsSA
O que é JSON?
[
{
nome: "Wellington",
idade: 20,
amigos: ["Kaleo", "Lucas"],
},
{
nome: "Kaleo",
idade: 21,
amigos: ["Lucas", "Wellington"],
},
]
"[{"nome":"Wellington","idade":20,"amigos":["Kaleo","Lucas"]},{"nome":"Kaleo","idade":21,"amigos":["Lucas","Wellington"]}]"
Objeto
X
Texto
(JavaScript Object Notation)
@WellsSA
Pega a visão
Objeto
↓
Texto
Objeto
↑
Texto
@WellsSA
HTTP
(Hyper Text Transfer Protocol)
Plataforma open-source que permite execução de linguagem Javascript do lado do servidor
O que é NodeJS?
@WellsSA
Tudo perfeitamente integrado
@WellsSA
Tudo perfeitamente integrado
@WellsSA
Facilidade na manipulação de dados
Velocidade no desenvolvimento
Integrações práticas
@WellsSA
E não só isso!
@WellsSA
@WellsSA
@WellsSA
Atualmente
Orientados a documentos
- Também em JSON
Banco de dados
@WellsSA
Além dos ORMs!
(Object-Relational Mappers)
@WellsSA
Possibilitando Migrations!
(Versionamento de banco de dados)
Text
@WellsSA
Inclusive na autenticação
JTW - JSON Web Token
(Fica de lição de casa)
O que possibilita stacks 100% Javascript
@WellsSA
Sendo as mais populares
@WellsSA
-
MEAN → MongoDB ExpressJS AngularJS e NodeJS
- MERN → MongoDB ExpressJS ReactJS e NodeJS
@WellsSA
Wells
MERN
Até eu caí no bait
@WellsSA
Agora que acho que vocês já confiam
@WellsSA
O que
Porquê
O que
Calma que tem mais!
@WellsSA
@WellsSA
NodeJS é composto por:
-
V8 Javascript Engine → Interpretador de JS criado pela Google
-
libuv → Biblioteca multiplataforma com foco em I/O
- Conjunto de módulos → Nativos do node
@WellsSA
NodeJS é composto por:
@WellsSA
Single-Threaded
Non-Blocking Input/Output
@WellsSA
Processamento assíncrono
@WellsSA
Processamento assíncrono
@WellsSA
Antes
@WellsSA
Agora
@WellsSA
- Internet of Things (IoT)
- Real-Time Apps
- Single-Page Applications (SPAs)
- Apps With Microservices Architecture
- MEAN and MERN Stacks
- Serverless Architecture
Alinhado com tudo de ponta no mercado
E ser Single-Thread é um problema?
@WellsSA
Como tudo na vida: depende
@WellsSA
@WellsSA
No geral
Para processos bloqueantes muito grandes: pode ser um problema, mas existem fixers
- CPU Intense tasks → NodeJS Worker Threads
- Huge file reading/writing → NodeJS Streams
- Monolithic code → Microservices architecture
@WellsSA
Se Paypal, LinkedIn, Yahoo, Mozilla, Netflix, Uber, Groupon, GoDaddy, eBay, Slack, Trello, Skype, e o Well usam, me parece OK.
Cada caso é um caso
No geral
E nem chegamos na melhor parte ainda!
@WellsSA
(Na minha humilde opinião)
@WellsSA
Depois disso tudo vem a dúvida:
Nossa, e esse monte de tecnologia de ponta não é difícil ou chato de ser usado?
E a resposta é:
@WellsSA
Módulos!!!
Módulos everywhere
MAIS Módulos
(MUITOS Módulos)
@WellsSA
@WellsSA
Então bora codar!
@WellsSA
@WellsSA
Lição de casa
@WellsSA
Wellington S. Almeida
-
Slides:
https://slides.com/WellsSA - Código: https://github.com/WellsSA
-
Contatos:
https://wellsadev.com/
@WellsSA
(2024) NodeJS: O que é e quais suas funcionalidades?
By Wellington Almeida
(2024) NodeJS: O que é e quais suas funcionalidades?
- 36