SlideShare uma empresa Scribd logo
Precisamos falar sobre
MERN Stack
Prof. Sidney Sousa
Sumário
 A vida “pós curso” de desenvolvimento de sistemas
 O macarrão de frameworks e afins
 Full Stack vs Cliente/Servidor
 Porquê MERN Stack? JavaScript!
 MongoDB
 Node.js e Express: o casal que você shipa!
 O React do tio Zuck!
 Exemplo prático
 MERN x MEAN x MEVN
Mas primeiro... quem sou eu!
 Dev há 15 anos
 Ex Pinuts, DigithoBrasil, CASSEMS, FCG
 Professor de Desenvolvimento Web (e
dev!) no IFMS campus Aquidauana
 Um dos professores responsáveis pelo
NUDES-AQ
A vida “pós curso” de
desenvolvimento de sistemas
Linguagens (Sopa de letrinhas!)
 HTML5
 CSS3
 JavaScript
 Pug
 EJS
 JSF
 Thymeleaf
 Sass
 Compass
 JSX
 etc...
 PHP
 Java
 C#
 JavaScript
 Python
 Ruby
 Rust
 Groovy
 Scala
 etc...
 SQL
 JavaScript/JSON
 XML
 CQL
 Cypher
 etc...
Front end Back end Banco de dados
Full Stack
vs
Cliente/Servidor
Linguagem de front end
Linguagem de back end
Linguagem de back end
+ banco de dados
Vantagens da arquitetura cliente/servidor
 Gerenciamento apropriado dos dados e lógica de negócios
 Melhor organização dos times de desenvolvimento
 Reutilização de serviços (endpoints)
 Maior flexibilidade
 Manutenção mais fácil
 Interoperabilidade
Porquê MERN Stack?
JavaScript!
Linguagens (Sopa de letrinhas!)
 HTML5
 CSS3
 JavaScript
 Pug
 EJS
 JSF
 Thymeleaf
 Sass
 Compass
 JSX
 etc...
 PHP
 Java
 C#
 JavaScript
 Python
 Ruby
 Rust
 Groovy
 Scala
 etc...
 SQL
 JavaScript/JSON
 XML
 CQL
 Cypher
 etc...
Front end Back end Banco de dados
MongoDB
MongoDB in a nutshell
 BD multiplataforma orientado a documentos
 Documento: bloco de dados JSON
 JavaScript como linguagem de consulta
 JSON como linguagem de modelagem de dados
> use loja
switched to db loja
> db.produtos.insert({"descricao": "Extrato de tomate", "categoria": "Alimento"})
WriteResult({ "nInserted" : 1 })
> db.produtos.find()
{ "_id" : ObjectId("5cc34103a336fd300973277d"), "descricao" : "Extrato de
tomate", "categoria" : "Alimento" }
Node.js e Express:
o casal que você shipa!
Node.js
 Permite JavaScript do lado servidor
 Multiplataforma
 Implementado sobre o V8, a engine
de JavaScript do browser Chrome
 Tem como principal proposta
permitir a implementação de apps
web escaláveis
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain’);
res.end('Fala, rapaziada!');
});
server.listen(port, hostname, () => {
console.log(`Servidor rodando em http://${hostname}:${port}/`);
});
Express
 Framework web para o Node.js
 Em poucas palavras, deixa o Node.js mais prático e robusto, mas
sem ofuscar tudo o que o Node.js tem de melhor
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Fala, rapaziada!'));
const porta = 3000;
app.listen(porta, () => {
console.log('Servidor rodando na porta ${port}');
});
O React do tio Zuck!
React (ou ReactJS)
 Definido pelos criadores como uma biblioteca JavaScript para criar
interfaces com o usuário
 Criado pela Facebook Inc. e mantido pela mesma empresa e
algumas outras empresas e desenvolvedores
 Baseado em componentes
 Cada componente possui um estado e um conjunto de
comportamentos
 Permite o reuso de componentes (tags customizadas)
Exemplo prático
https://github.com/sidneyroberto/palestra-mern
MERN x MEAN x MEVN
That’s all, folks!
Links interessantes:
 https://www.w3schools.com/nodejs/default.asp
 https://www.w3schools.com/js/default.asp
 https://www.w3schools.com/nodejs/nodejs_mongodb.asp
 https://expressjs.com/en/starter/installing.html
 https://reactjs.org/tutorial/tutorial.html
Contato: sidney.sousa@ifms.edu.br
sidneyroberto

Mais conteúdo relacionado

Mais procurados

Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
崇之 清水
 

Mais procurados (20)

Swoole Love PHP
Swoole Love PHPSwoole Love PHP
Swoole Love PHP
 
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
[141] 오픈소스를 쓰려는 자, 리베이스의 무게를 견뎌라
 
자바 서버 애플리케이션 아키텍처 안티 패턴
자바 서버 애플리케이션 아키텍처 안티 패턴자바 서버 애플리케이션 아키텍처 안티 패턴
자바 서버 애플리케이션 아키텍처 안티 패턴
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQL
 
ASTERIA WARP 4.8.1から1610にしたら3回引っかかった話
ASTERIA WARP 4.8.1から1610にしたら3回引っかかった話ASTERIA WARP 4.8.1から1610にしたら3回引っかかった話
ASTERIA WARP 4.8.1から1610にしたら3回引っかかった話
 
Porque flutter
Porque flutter Porque flutter
Porque flutter
 
DynamoDBによるソーシャルゲーム実装 How To
DynamoDBによるソーシャルゲーム実装 How ToDynamoDBによるソーシャルゲーム実装 How To
DynamoDBによるソーシャルゲーム実装 How To
 
AWS Well-Architected Frameworkのコスト最適化の柱を読み解く
AWS Well-Architected Frameworkのコスト最適化の柱を読み解くAWS Well-Architected Frameworkのコスト最適化の柱を読み解く
AWS Well-Architected Frameworkのコスト最適化の柱を読み解く
 
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
 
DevOps와 자동화
DevOps와 자동화DevOps와 자동화
DevOps와 자동화
 
Awsのインフラをデザインパターン駆使して設計構築
Awsのインフラをデザインパターン駆使して設計構築Awsのインフラをデザインパターン駆使して設計構築
Awsのインフラをデザインパターン駆使して設計構築
 
Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方
 
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話
 
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic BeanstalkAWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
 
Aprendendo Angular com a CLI
Aprendendo Angular com a CLIAprendendo Angular com a CLI
Aprendendo Angular com a CLI
 
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
 
Security in laravel
Security in laravelSecurity in laravel
Security in laravel
 
도메인 주도 설계 (Domain Driven Design)
도메인 주도 설계 (Domain Driven Design)도메인 주도 설계 (Domain Driven Design)
도메인 주도 설계 (Domain Driven Design)
 
MarkdownをBacklogのwikiに変換するPWA
MarkdownをBacklogのwikiに変換するPWAMarkdownをBacklogのwikiに変換するPWA
MarkdownをBacklogのwikiに変換するPWA
 
以 Laravel 經驗開發 Hyperf 應用
以 Laravel 經驗開發 Hyperf 應用以 Laravel 經驗開發 Hyperf 應用
以 Laravel 經驗開發 Hyperf 應用
 

Semelhante a Precisamos falar sobre MERN stack

Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 
Conhecendo o CouchDB - TDC2011
Conhecendo o CouchDB - TDC2011Conhecendo o CouchDB - TDC2011
Conhecendo o CouchDB - TDC2011
Henrique Gogó
 

Semelhante a Precisamos falar sobre MERN stack (20)

Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
Workshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseWorkshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + Mongoose
 
Aplicações de tempo real com Meteor.js
Aplicações de tempo real com Meteor.jsAplicações de tempo real com Meteor.js
Aplicações de tempo real com Meteor.js
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
NoSQL + Node.js
NoSQL + Node.jsNoSQL + Node.js
NoSQL + Node.js
 
Mini Curso Mashup Coreu
Mini Curso Mashup CoreuMini Curso Mashup Coreu
Mini Curso Mashup Coreu
 
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao FrameworkPHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao Framework
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
Como trabalhar com ajax, json e cache
Como trabalhar com ajax, json e cacheComo trabalhar com ajax, json e cache
Como trabalhar com ajax, json e cache
 
AJAX?? Não!! Asynchronous Javascript and... JSON!!
AJAX?? Não!! Asynchronous Javascript and... JSON!!AJAX?? Não!! Asynchronous Javascript and... JSON!!
AJAX?? Não!! Asynchronous Javascript and... JSON!!
 
JavaServer Faces
JavaServer FacesJavaServer Faces
JavaServer Faces
 
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRSAplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza Bastos
 
introdução a ajax
introdução a ajaxintrodução a ajax
introdução a ajax
 
Conhecendo o CouchDB - TDC2011
Conhecendo o CouchDB - TDC2011Conhecendo o CouchDB - TDC2011
Conhecendo o CouchDB - TDC2011
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/Mackenzie
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?
 

Mais de Sidney Roberto

Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação I
Sidney Roberto
 
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Sidney Roberto
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Sidney Roberto
 
Manipulação de Datas em Java
Manipulação de Datas em JavaManipulação de Datas em Java
Manipulação de Datas em Java
Sidney Roberto
 

Mais de Sidney Roberto (20)

Personagens negros na cultura nerd
Personagens negros na cultura nerdPersonagens negros na cultura nerd
Personagens negros na cultura nerd
 
Mantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDBMantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDB
 
Regulamento da batalha campal do DCN IV
Regulamento da batalha campal do DCN IVRegulamento da batalha campal do DCN IV
Regulamento da batalha campal do DCN IV
 
Regulamento dos concursos de cosplay e cospobre do DCN IV
Regulamento dos concursos de cosplay e cospobre do DCN IVRegulamento dos concursos de cosplay e cospobre do DCN IV
Regulamento dos concursos de cosplay e cospobre do DCN IV
 
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQRegulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
 
Tecnologias e Mercado de Trabalho
Tecnologias e Mercado de TrabalhoTecnologias e Mercado de Trabalho
Tecnologias e Mercado de Trabalho
 
Introdução à Programação de Computadores com Python
Introdução à Programação de Computadores com PythonIntrodução à Programação de Computadores com Python
Introdução à Programação de Computadores com Python
 
Palestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
Palestra de boas vindas aos estudantes do curso TSI do IFMS AquidauanaPalestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
Palestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciência
 
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQRegulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
 
Tutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidTutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para Android
 
Minha opinião sobre o sistema educacional de base brasileiro
Minha opinião sobre o sistema educacional de base brasileiroMinha opinião sobre o sistema educacional de base brasileiro
Minha opinião sobre o sistema educacional de base brasileiro
 
Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação I
 
Listas (parte 2 de 3)
Listas (parte 2 de 3)Listas (parte 2 de 3)
Listas (parte 2 de 3)
 
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
 
Listas (parte 1)
Listas (parte 1)Listas (parte 1)
Listas (parte 1)
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
 
Fatores Humanos
Fatores HumanosFatores Humanos
Fatores Humanos
 
Laços de Repetição
Laços de RepetiçãoLaços de Repetição
Laços de Repetição
 
Manipulação de Datas em Java
Manipulação de Datas em JavaManipulação de Datas em Java
Manipulação de Datas em Java
 

Precisamos falar sobre MERN stack

  • 1. Precisamos falar sobre MERN Stack Prof. Sidney Sousa
  • 2. Sumário  A vida “pós curso” de desenvolvimento de sistemas  O macarrão de frameworks e afins  Full Stack vs Cliente/Servidor  Porquê MERN Stack? JavaScript!  MongoDB  Node.js e Express: o casal que você shipa!  O React do tio Zuck!  Exemplo prático  MERN x MEAN x MEVN
  • 3. Mas primeiro... quem sou eu!  Dev há 15 anos  Ex Pinuts, DigithoBrasil, CASSEMS, FCG  Professor de Desenvolvimento Web (e dev!) no IFMS campus Aquidauana  Um dos professores responsáveis pelo NUDES-AQ
  • 4. A vida “pós curso” de desenvolvimento de sistemas
  • 5.
  • 6.
  • 7.
  • 8.
  • 9. Linguagens (Sopa de letrinhas!)  HTML5  CSS3  JavaScript  Pug  EJS  JSF  Thymeleaf  Sass  Compass  JSX  etc...  PHP  Java  C#  JavaScript  Python  Ruby  Rust  Groovy  Scala  etc...  SQL  JavaScript/JSON  XML  CQL  Cypher  etc... Front end Back end Banco de dados
  • 10.
  • 12.
  • 13. Linguagem de front end Linguagem de back end Linguagem de back end + banco de dados
  • 14.
  • 15. Vantagens da arquitetura cliente/servidor  Gerenciamento apropriado dos dados e lógica de negócios  Melhor organização dos times de desenvolvimento  Reutilização de serviços (endpoints)  Maior flexibilidade  Manutenção mais fácil  Interoperabilidade
  • 17. Linguagens (Sopa de letrinhas!)  HTML5  CSS3  JavaScript  Pug  EJS  JSF  Thymeleaf  Sass  Compass  JSX  etc...  PHP  Java  C#  JavaScript  Python  Ruby  Rust  Groovy  Scala  etc...  SQL  JavaScript/JSON  XML  CQL  Cypher  etc... Front end Back end Banco de dados
  • 19. MongoDB in a nutshell  BD multiplataforma orientado a documentos  Documento: bloco de dados JSON  JavaScript como linguagem de consulta  JSON como linguagem de modelagem de dados
  • 20. > use loja switched to db loja > db.produtos.insert({"descricao": "Extrato de tomate", "categoria": "Alimento"}) WriteResult({ "nInserted" : 1 }) > db.produtos.find() { "_id" : ObjectId("5cc34103a336fd300973277d"), "descricao" : "Extrato de tomate", "categoria" : "Alimento" }
  • 21. Node.js e Express: o casal que você shipa!
  • 22. Node.js  Permite JavaScript do lado servidor  Multiplataforma  Implementado sobre o V8, a engine de JavaScript do browser Chrome  Tem como principal proposta permitir a implementação de apps web escaláveis
  • 23. const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain’); res.end('Fala, rapaziada!'); }); server.listen(port, hostname, () => { console.log(`Servidor rodando em http://${hostname}:${port}/`); });
  • 24. Express  Framework web para o Node.js  Em poucas palavras, deixa o Node.js mais prático e robusto, mas sem ofuscar tudo o que o Node.js tem de melhor
  • 25. const express = require('express'); const app = express(); app.get('/', (req, res) => res.send('Fala, rapaziada!')); const porta = 3000; app.listen(porta, () => { console.log('Servidor rodando na porta ${port}'); });
  • 26. O React do tio Zuck!
  • 27. React (ou ReactJS)  Definido pelos criadores como uma biblioteca JavaScript para criar interfaces com o usuário  Criado pela Facebook Inc. e mantido pela mesma empresa e algumas outras empresas e desenvolvedores  Baseado em componentes  Cada componente possui um estado e um conjunto de comportamentos  Permite o reuso de componentes (tags customizadas)
  • 28.
  • 30. MERN x MEAN x MEVN
  • 31. That’s all, folks! Links interessantes:  https://www.w3schools.com/nodejs/default.asp  https://www.w3schools.com/js/default.asp  https://www.w3schools.com/nodejs/nodejs_mongodb.asp  https://expressjs.com/en/starter/installing.html  https://reactjs.org/tutorial/tutorial.html Contato: sidney.sousa@ifms.edu.br sidneyroberto