Desenvolvendo aplicações web – utilizando ferramentas atuais – Arquitetura básica (muito básica) de um webApp moderno



Desenvolvendo aplicações web – utilizando ferramentas atuais – Arquitetura básica (muito básica) de um webApp moderno

0 0


ETEC-2016.io


On Github emersonmellado / ETEC-2016.io

off | on

Desenvolvendo aplicações web

utilizando ferramentas atuais

com: Emerson Mellado / @EmersonMellado

Full Stack Developer

Vamos falar sobre Arquitetura, mas não a do Niemeyer, ferramentas, novidades, medos e receios de um bom desenvolvedor.
Botão direito, abrir em nova aba :P

Como iniciar o desenvolvimento

de uma aplicação moderna com as ferramentas atuais

O que nunca me falaram quando quiz fazer um aplicativo?

Conteúdo online massivo, gratuíto!

Começar pelas dúvidas!

I go Horse. But try don't!

Vamos falar sobre abstração.

O que é programar?

“A exploração eficaz do seu poder de abstração deve ser considerada como uma das atividades mais importantes de um programador competente” - Edsger Dijkstra

Abstração

substantivo feminino 1. Operação intelectual em que um objeto de reflexão é isolado de fatores que comumente lhe estão relacionados na realidade. 2. O resultado dessa operação (termo, ideia, concepção etc.); abstrato.

Exemplo de abstração

(1) uma publicação (2) um jornal (3) O Estadão (4) a edição de 18 de fevereiro do Estadão (5) a minha cópia da edição de 18 de fevereiro edição do Estadão (6) a minha cópia da edição de 18 de fevereiro edição do Estadão como estava quando a peguei pela primeira vez (em contraste com como ficou a minha cópia poucos dias depois: na fogueira que fiz, queimando)

O que precisamos entender pra não passar aperto?

Quem veio primeiro?

O ovo ou a galinha? O ovo ou a galinha?

O cliente ou o servidor? Ou foi a Arquitetura?

O que nunca me falaram quando quiz fazer um aplicativo? Entender o fluxo é importante! Ai a coisa ficou puxada.

Quem sou Eu?

Emerson Mellado, prazer

Sou apaixonado por tecnologia, café e carpintaria...

Full Stack Developer

Full o quê?

Stack = Pilhas... sacou?

PRA BAIXO!!!!
PRA BAIXO!!!!
PRA BAIXO!!!!
Falando em arquitetura...
Falando em arquitetura...

Arquitetura básica (muito básica) de um webApp moderno

MVC - Model - View - Controller

Alguém vê algo estranho aqui?

PRA BAIXO!!!!

Arquitetura básica (ainda básica) de um webApp moderno, mas vista do jeito certo.

MVC - Model - View - Controller
PRA BAIXO!!!!

MVW - Model - View - Whatever

Cliente - Servidor: O que cada um faz?

Cliente

Faz a requisição
por exemplo: http://www.site.com.br

Servidor

Recebe a requisição
Processa
Responde ao cliente

Tecnologias

Cliente

HTML, CSS, JavaScript, DHTML, VBScript, Applet, ActiveX , Flash

Servidor

CGI, SSI, Server API, ASP, JSP, PHP, COM/DCOM, CORBA,JavaScript

Show me the code!!

Bora ver um exemplo

Cliente - Javascript

function linkify( selector ) {
  if( supports3DTransforms ) {

    var nodes = document.querySelectorAll( selector );

    for( var i = 0, len = nodes.length; i < len; i++ ) {
      var node = nodes[i];

      if( !node.className ) {
        node.className += ' roll';
      }
    }
  }
}
					

Servidor - Javascript

var Hapi = require('hapi'),
    environment = require('./environment/environment.js'),    
    routes = require('./routes'),
    db = require('./lib/db.js'),    
    server = new Hapi.Server();

server.connection({
    host: environment.server.host,
    port: environment.server.port,
    routes: { cors: true}
});
server.views({
    path: './src/public/templates',
    engines: { html: require('handlebars') },
    partialsPath: './src/public/templates/withPartials',
    helpersPath: './src/public/templates/helpers'
});										
							

Onde entra o trio tormento? HTML/CSS/javaScript? Eu sabia essa com laranjas

  • HTML => View : Simples assim
  • CSS => View : Simples assim
  • javaScript => View Model Controller Whatever : Simples assim, também

HTML

linguagem de marcação utilizada na construção de páginas na Web

Existe programador HTML?

E HTML 5?

  • Formalizada na década de 90
  • HTML 3.5 no final de 1997
  • Mantida pela W3C - World Wide Web Consortium
  • HTML 5 - 2008

HTML do pudim.com.br

E o CSS?

Não esse, a folha de estilos em cascata

CSS - Folha de estilo em cascata

linguagem de folhas de estilo utilizada para definir a apresentação de documentos escritos em uma linguagem de marcação, como HTML ou XML

Acompanha o HTML, igual goiabada com queijo.

Alguém programa só em CSS?

éééé depende... vamos considerar os pre-processadores? Stylus, SaaS, Less

Exemplos: Black - White - League - Sky - Beige - Simple Serif - Blood - Night - Moon - Solarized => Voltar ao normal

  • Time to javaScript!!!

E esse tal de javaScript?

ES6 jQuery AngularJS

javaScript não é Java

Es6 ou Es6/2015

ECMA Script - javaScript padrão da comunidade, alternativa ao JScript (M$)

  • Escopos não serão mais tãooo confusos
  • Novos tipos no parser: ex: const
  • Diferenciação entre classes e functions com construtores
  • Herança com suporte a super construtores super()
  • Notação mais direta. ex: => e ${}
Projeto Es6-ERM https://jsfiddle.net/!!!

jQuery

  • selectors... muitos selectors
  • callbacks
  • plugins... (my precious)
  • a biblioteca mais usada e conhecida de javaScript
Projeto Es6-ERM

angular

  • controllers
  • rotas
  • diretivas
  • filtros
  • injeção de dependência
  • muitos exemplos e documentação
  • idealizado pelo google
yo gulp-angular

react

  • mais coisas, menos código
  • modificadores
  • listeners
  • muitos exemplos e documentação
  • idealizado pelo facebook
yo gulp-angular

Por onde começar?

  • Integrável
  • Rápido
  • Fácil
  • Divertido

nodeJs é um wrapper

wrapper é um empacotador, um grande programa com pequenos programas dentro.

seu principal objetivo é dar suporte a criação de aplicações escaláveis.

pode ser usado para desenvolvimento tanto backend quanto frontend.

acesse nodejs.org

baixe e instale o node

acesse npmjs.com

let happy = true return ES6 notation here, gotcha? :P

estude, Estude, ESTUDE!!!

até você conseguir melhorar o código abaixo

Function.prototype.applyAsync = function(params, cb){
  var function_context = this;
  setTimeout(function(){
    var val = function_context.apply(undefined, params); 
    if(cb) cb(val);
  }, 0);
}

Pasta: nodejs > a = [ 1, 2, 3]; > a.forEach((v) => { ... console.log(v); ... });

## Task Runner? Run to the hills?

grunt

gulp

  • serve
  • watch
  • build
  • clean
  • style
  • script
  • inject

Grunt: Essa apresentação Gulp: ProjetoLegal

Isso é só Css "só que não"...

(Stylus, Sass, Less e Mixins)

Show me the code!!

Bora ver um exemplo

Stylus: SMART Sass e Mixins: VHP ou Binners(se tiver internet) Less: ProjetoLess

Grunt: Essa apresentação Gulp: ProjetoLegal

Versionar ou não versionar?

O que vocês acham?

Alguns versionadores GIT, SVN, TFS, Mercurial.

O que nao falamos?

  • JSON
  • Ajax
  • Protocolos HTTP
  • IDE / PLataformas
  • StackOverflow
  • GitHub
  • Muito, muito mais...

Lembre-se!

“Se você não tem dúvida é porque está mal informado” - Millôr Fernandes

Alguma dúvida?

Obrigado!