Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Componetização e o mundo moderno do front-end

Componetização e o mundo moderno do front-end

Diogo Moretti

October 13, 2014
Tweet

More Decks by Diogo Moretti

Other Decks in Technology

Transcript

  1. Roadmap • The Walking Dead da web • Componetização sem

    frameworks css • BEM, Smacss, OOCSS e o melhor jeito • Semântica • Grid Systems • O melhor dos pré-processadores css • Utilizando NodeJS como tooling
  2. Roadmap • Gulp, Grunt e como automatizar tudo • Yeoman,

    Slush e generators • Static Generators • Git, Github e seu projeto no gh-pages • Comunidade web/front-end • Universo open-source • Eventos
  3. html5 - css3 - javascript - semântica grid - bower

    - testes - yeoman - sass - git atomic design - nodejs - c. integration lodash - stylus - pré-processador componetização - slush - gulp - less grunt - github - sublime - photoshop flat design - mocha - backbone - ember bootstrap - express - mean - mongodb static generators - jekyll - compass handlebars - underscore - marionette angularjs - hexo - docpad - browserify requirejs - jasmine - react - redis modularização - reactivejs - jquery zepto - responsivo - mobile - ux
  4. Sim! Isso são palavras do nosso dia-a-dia … e ~90%

    delas surgiram nos últimos 2 anos!
  5. Muitos fazem assim =[ <a class="btn btn-primary btn-success btn- large">Enviar</a>

    ( + ) faz sentido com css puro ( + ) agilidade (pessoal do back-end like this) ( + ) prototipagem ( - ) semântica ( - ) estilo do html (!) ( - ) se precisar alterar o estilo… =(
  6. Mas deveriam fazer assim =] <a class="button-send">Enviar</a> ( + )

    boa semântica ( + ) lógica fica no css (.styl, .sass, .less) ( + ) apenas UMA classe ( + ) padrão de nomenclatura (tipo-acao) ( - ) precisa prototipar ( - ) only front-end
  7. Não se usar placeholder =] • disponível em sass e

    stylus • cria uma pseudo-classe "modelo" • só é compilado se alguma classe/id extender esse modelo • todas as classes que chamarem o mesmo placeholder ficarão aninhadas
  8. Organizar as pastas é uma das tarefas mais complicadas. Pode

    demorar um tempo, mas é essencial para uma boa modularização 1. Arquitetura
  9. #1.3 Componentes _base typography.styl _components buttons.styl _layout grid.styl _pages home.styl

    _vendor owl-carousel.styl main.styl http://modernweb.com/2014/04/14/organizing-your-css-code-for-preprocessors
  10. Procure o melhor das ferramentas de modularização/metodologias de CSS, como

    Smacss, OOCSS, BEM, Atomic Design... Crie a sua, mas com moderação =] 2. Metodologia
  11. #2.1 OOCSS .button-primary { color: red; background: green; font-size: 1.4em;

    } .button-large { font-size: 2em; } ( ! ) Bootstrap utiliza ( + ) Bom com css puro http://oocss.org
  12. #2.2 BEM /* Block */ .site-search {} /* Element */

    .site-search__field {} /* Modifier */ .site-search--full {} ( + ) Organização ( - ) Nomenclatura pouco convencional http://bem.info
  13. #2.3 SMACSS /* Formulário de Login */ .form-login {} /*

    Título do Formulário de Login */ .form-login.form-login-title {} /* Formulário de Login maior */ .form-login.form-login-large {} ( ! ) Parecido com o BEM ( + ) Boa nomenclatura ( - ) Nesting http://smacss.com
  14. Responsivo, modular, adaptativo, fuído, colunas, semântico, px, em, rem… Esse

    são alguns dos pontos que temos que escolher na hora de montar ou aplicar um bom grid system 3. Grid/Estrutura
  15. • Coluna x Modular • Fluído x Não-Fluído • Semântico

    x Não-semântico • Responsivo x Não-responsivo x Adaptativo Tipos de Grid More: http://www.vanseodesign.com/web-design/grid-types/
  16. #3.1 Semântica <div class="row"> <div class="small-2 large-4 columns">...</div> <div class="small-2

    large-4 columns">...</div> <div class="small-2 large-4 columns">...</div> </div> ( ! ) Bootstrap e Foundation usam por default ( + ) CSS Puro ( + ) Controle das @media-queries com classes ( - ) Semântica ( - ) Manutenção Grid não-semântico
  17. #3.1 Semântica <div class="header"> <div class="logo">...</div> <div class="menu">...</div> </div> (

    + ) Só faz sentido com o uso de pré-processador ( + ) Lógica fica inteira no CSS (.sass, .styl, .less) ( + ) Menos marcação no HTML ( + ) Boa manutenção ( - ) Um pouco mais de código gerado ( - ) Controle das @media-queries no css Grid semântico
  18. #3.2 Medida Grid fluído • Colunas com tamanho flexível •

    Normalmente utiliza-se porcentagem (%) • Cada coluna possui 12 colunas * * Em um grid de 12 colunas
  19. diogomoretti.github.io/sgs diogomoretti.github.io/grider • Responsivo • Semântico e não-semântico • Stylus

    e CSS puro • Utiliza @extend no Stylus • Responsivo • Semântico • Stylus • Utiliza $placeholder no Stylus
  20. • Tire o máximo dos pré-processadores • Evite nesting (.header{}

    .header.header-title{}) • Evite gerar muito código • Não prenda o css ao seu html (.header ul li > a > span) • Não utilize pixels (px) • Dependendo do projeto faça responsivo SIM! • Evite código não semântico (class="span-2 pull-right") • Não reinvente a roda! Resumindo...
  21. ( + ) Comunidade muito ativa ( + ) Dois

    tipos de sintaxe (.sass, .scss) ( + ) Plataforma Ruby ( + ) Muitos frameworks (compass, bourbon...) ( - ) Plataforma Ruby ( - ) Um pouco pesado em relação aos outros ( - ) Muito verboso com mixins http://sass-lang.com
  22. .scss .header { color: red; @include transition(all .2s ease) }

    .sass .header color: red +transition(all .2s ease) http://sass-lang.com
  23. ( + ) Sintaxe flexível ( + ) Core team

    ativo (+features) ( + ) Feito em NodeJS ( + ) Compilação muito rápida ( + ) Frameworks silenciosos ( + ) Base64 nativo ( - ) Sintaxe flexível http://learnboost.github.io/stylus
  24. .styl .button-send color red transition all .2s ease &:hover color

    darken(@color, 10%) http://learnboost.github.io/stylus
  25. Features • Lint e Hint • Minificação de HTML, CSS

    e JS • Otimização de Imagens • Testes • Deploy • Compilação de Pré-Processadores HTML, JS e CSS • Watch em arquivos ...e muito mais (MESMO)!
  26. npm install -g yo Instalação Generators 1. yeoman.io/generators 2. npm

    install -g generator-angular 3. Na pasta do projeto: yo angular http://yeoman.io
  27. npm install -g slush Instalação Generators 1. slushjs.github.io/generators 2. npm

    install -g slush-angular 3. Na pasta do projeto: slush angular http://slushjs.github.io
  28. diogomoretti.github.io/slush-ixqueleo • Scaffolding simples com Gulp + Stylus • Utiliza

    o SGS (Stylus Grid System) • Mais em: diogo.nu/slush-o-novo-yeoman
  29. O que é? Uma stack em alguma linguagem (Javascript/Node, PHP,

    Python, Ruby…) onde provê de templates e helpers afim de compilar tudo isso em vários arquivos html simples, onde as "URL`s amigáveis" ficam em pastas. https://github.com/pinceladasdaweb/Static-Site-Generators
  30. Quais tem? docpad.org (JS / Cases: BrazilJS, Eventos Front in

    * ) assemble.io (JS / Plugin do Grunt) hexo.io (JS / Ótimo para blogs) jekyllrb.com (Ruby / Ótimo para blogs) harpjs.com (JS / Ótimo para blogs e sites) sculpin.io (PHP) middlemanapp.com (Ruby) gohugo.io (Go) https://github.com/pinceladasdaweb/Static-Site-Generators ...e muito mais!
  31. Vantagens • Roda em qualquer servidor • Rapidez (nenhuma requisição

    back-end) • Ótimo para sites de projetos open-source • Muito bom para documentações • Perfeito para blog de desenvolvedores • Roda no Github Pages (gh-pages) https://github.com/pinceladasdaweb/Static-Site-Generators
  32. Onde estão? • Grupos no Facebook • Listas de Discussões

    no Google • StackOverflow • Fóruns • Lista de comentários em Blogs
  33. Por que participar? • Notícias em primeira mão (tools, links)

    • Você ajuda e é ajudado • Amizades • Networking profissional • Muitos projetos saem ali
  34. Por que contribuir? • 99% das tools que usamos são

    open-source • Dá prazer ao fazer • Faz amigos e conhece contribuidores • Devolve a comunidade tudo o que ela já nos proporcionou
  35. Dicas • Escolha um nome único • Faça um site

    bonito • Crie uma boa documentação • Mesmo que sua ideia seja 1% diferente de uma já existente: CRIE O SEU!
  36. Quais? • Academia Chaordic (a cada 1 ou 2 meses)

    • Startup Weekend (1x por ano) • The Developers Conference (FLN e POA, 1x por ano) • SECCOM (1x por ano) • BrazilJS (em Porto Alegre, 1x por ano) • FloripaJS (encontros a cada 1 ou 2 meses) • Front in Floripa (1x por ano. Em novembro) ...e muito mais!
  37. Meetup Formato flexível 1 ~ 2 meses www.floripajs.org Palestras e

    Workshops Maior número de pessoas 1x por ano (Novembro) www.frontinfloripa.com.br