Slide 1

Slide 1 text

FRAMEWORK CSS Iniciando a construção de um framework A TEORIA

Slide 2

Slide 2 text

Diego Eis @diegoeis @tableless

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Por que criar um framework?

Slide 5

Slide 5 text

Prototipação A equipe precisa criar protótipos funcionais rápidos com a estruturação parecida com a final.

Slide 6

Slide 6 text

Padronização Padronização de estrutura, elementos, código, comportamentos, experiências etc etc etc.

Slide 7

Slide 7 text

Produtividade Menos tempo desenhando ou codificando cenários já conhecidos.

Slide 8

Slide 8 text

Manutenção Facilitar a manutenção diminuindo o tempo de retrabalho.

Slide 9

Slide 9 text

Por que NÃO criar um framework?

Slide 10

Slide 10 text

Layouts muito diferentes Layouts ou elementos com a estrutura e visual diferentes.

Slide 11

Slide 11 text

O código não para de crescer O código vai ficar cada vez maior, cada vez mais pesado, com possibilidade de conflitos.

Slide 12

Slide 12 text

Tempo Você vai precisar dedicar sua equipe integralmente para cuidar do framework. Pelo menos no início do projeto.

Slide 13

Slide 13 text

Por que já existem outros no mercado Os que existem podem te ajudar melhor, além de contar com documentação e manual prontos.

Slide 14

Slide 14 text

Locaweb Style

Slide 15

Slide 15 text

Precisávamos resolver alguns problemas

Slide 16

Slide 16 text

O processo Processos incompletos prejudicam a qualidade do código, do produto e da entrega.

Slide 17

Slide 17 text

Excesso de projetos São diversos projetos ao mesmo tempo, com equipes trabalhando paralelamente.

Slide 18

Slide 18 text

Liberar gargalos Os times de design e de front-end eram gargalos constantes. Precisávamos agilizar o processo.

Slide 19

Slide 19 text

Conversamos com o pessoal de UX O processo se inicia lá. São eles que pensarão nos comportamentos, design etc.

Slide 20

Slide 20 text

Burocracia

Slide 21

Slide 21 text

Conversamos com o pessoal de Back-end Eles terão contato direto com o código front-end e também poderão implementar algo sem depender de ninguém.

Slide 22

Slide 22 text

Escolhemos a base Iríamos usar Bootstrap e JQuery. Não iríamos utilizar nenhum pré-processador como LESS ou SASS.

Slide 23

Slide 23 text

Customização de design e comportamentos Pegamos o layout criado por UX e começamos a customizar ou criar elementos.

Slide 24

Slide 24 text

Padronização de código Iniciamos um trabalho de nomenclatura e padronização de escrita de código.

Slide 25

Slide 25 text

Um exemplo: CSS incremental Incremente classes para ajudar na customização de elementos.

Slide 26

Slide 26 text

.btn .btn .btn-large .btn .btn-large .btn-primary .btn .btn-large .btn-primary .ico-star Um botão

Slide 27

Slide 27 text

Outro exemplo: Javascript organizado Se o javascript não estiver bem estruturado, ele vai puxar seu pé na cama.

Slide 28

Slide 28 text

$(window).load(function() { window.locastyle = new Locastyle(); locastyle.base.init($(document)); }); Aqui iniciamos o objeto Locastyle, que vai carregar as funções do projeto. init.js

Slide 29

Slide 29 text

Locastyle = (function() { Locastyle.prototype.base = { init: function (dom_scope) { this.toggleTextOnClick(dom_scope); this.toggleTextOnHover(dom_scope); this.datePickerSetup(dom_scope, this.datePickerOptions); this.numbersOnly(dom_scope); this.activateCollapseOnShown(dom_scope); this.deactivateCollapseOnHide(dom_scope); this.htmlForceClass(dom_scope); this.disableClass(dom_scope); this.classParentLiMenu(dom_scope); this.modalAutoFocus(dom_scope); this.preventDefaultOnDisabled(dom_scope); this.openCollapsesWithError(dom_scope); this.autoOpenModal(dom_scope); this.pathWayStepCounter(dom_scope); this.setListDetailSeparator(); this.advancedSearchValueHandler(dom_scope); this.toggleChild(dom_scope); this.toggleChildValue(dom_scope); this.inputDataValue(dom_scope); this.carouselCounter(dom_scope); this.initCustomSelect(dom_scope); this.collapseSetAnchor(); this.notificationInfoSet(); this.notificationInfoHandler(); this.minShortcutsCookieSetter(); this.minShortcutsCookieHandler(); this.coverAllLink(dom_scope); this.linkPreventDefault(); this.popover(dom_scope); }, script.js Aqui chamamos e executamos todas as funções do projeto.

Slide 30

Slide 30 text

Cuidados

Slide 31

Slide 31 text

Escolha um bom framework para sua base Você não precisa começar nada do zero. Mas sua base precisa ser firme para você crescer.

Slide 32

Slide 32 text

O designer é seu amigo Padrões visuais andam junto com os padrões de código. Defina com o designer quais serão os padrões dos elementos básicos: GRID, botões, tipografia, espaços e medidas.

Slide 33

Slide 33 text

Nomenclatura bem definida Misturar nomes em inglês com portugues confunde. Nomes grandes confundem. Vai usar traço, underline ou camelCase?

Slide 34

Slide 34 text

Faça código reutilizável desde o início Um framework é como um quebra cabeças, onde você junta as peças para criar novas formas e estruturas.

Slide 35

Slide 35 text

Tenha uma documentação ou um manual Uma documentação ou um manual com exemplos vai ajudar a adoção do framework em novos projetos.

Slide 36

Slide 36 text

Cresça com paciência Não coloque plugins que você ACHA que vai usar. Não solucione problemas que você ACHA que vão surgir.

Slide 37

Slide 37 text

A exceção não é padrão Quando há muitas exceções, nenhum padrão está sendo criado. Designers e devs front-end precisam usar elementos já criados para montar layouts.

Slide 38

Slide 38 text

Work in Progress Seu framework nunca estará pronto. Você sempre vai criar, refazer ou modificar as features.

Slide 39

Slide 39 text

AMPLEXOS Diego Eis @diegoeis @tableless tableless.com.br