Escolar Documentos
Profissional Documentos
Cultura Documentos
do jeito certo
1
Produzido em parceria com a Agncia Zriga
www.ziriga.com.br
O Mestre Linguia
Keven Jesus
{
Paulistano meio nordestino, fundador da maior comunidade de
Bootstrap do Brasil, desenvolvedor Front-end especialista em
arquitetura de interfaces e apaixonado por tecnologias
Javascript como Angular, React e outros.
3
ndice
1. Introduo 5
2. NPM 7
3. Bower 9
4. GulpJS 12
4.2 Watch 18
5. Sass 20
5.1 Variveis 24
6. Bootstrap 27
7. Concluso 31
t
{INTRODUO}
5
C riado por dois desenvolvedores que trabalharam no Twitter e cuja fasci-
nao por CSS, mdo e fat fez com que fossem ainda mais adiante, o Bootstrap
surgiu como uma maneira prtica de melhorar a produo de layouts responsi-
vos para a web. Antes pensado e utilizado internamente por seus idealizadores,
o Bootstrap, por ter sua codificao em open source, foi logo descoberto e fez
com que o programa se tornasse extremamente famoso entre todos os desen-
volvedores.
E para tornar o Bootstrap ainda mais prtico, vou lhe ajudar a descobrir tudo
que ele pode lhe proporcionar! Unindo conceitos e ferramentas como o Gulp e
o Sass sua dinmica, possvel automatizar o nmero de tarefas que iro se
apresentar no processo de construo de uma pgina web responsiva e assim
reduzir o tempo que ser gasto. Com isso, voc tambm poder dar uma maior
ateno para outros projetos que est realizando. Todos saem ganhando!
No eBook que voc ir conferir a seguir, irei lhe apresentar todas essas novas
formas de organizao e otimizao da sua experincia com o Bootstrap, para
tornar o que j era fcil em quase um mamo com acar. Ficou curioso? Conhe-
a mais sobre o material abaixo e tambm traga a simplicidade do Bootstrap
para o seu ambiente de trabalho.
6
{NPM}
NODE PACKAGE MANAGER
7
A ntes de iniciarmos quaisquer tarefas com o Gulp, preciso falar um pou-
co sobre a NPM e o porqu que devemos utiliz-la.
A NPM se trata da sigla utilizada para se referir ao Node Package Manager (Ge-
renciador de Pacotes do Node). Entre suas descries, deve-se destacar duas
que nos ajudam a compreender melhor toda sua extenso. De incio, a NPM
serve como um repositrio online para que sejam publicados projetos de c-
digo aberto para o Node. Em complemento a isso, ela tambm atua como um
utilitrio de linha de comando que interage com este repositrio, ajudando na
instalao de pacotes e no gerenciamento de dependncias.
Por se tratar de um programa de cdigo aberto, a NPM conta com diversos pa-
cotes com novas aplicaes que so includas diariamente e que so facilmente
encontradas em seus portais de busca. Basta encontrar aquilo que deseja ins-
talar e digitar uma nica linha de comando para dar incio. Para exemplificar, o
que precisamos fazer criar um arquivo manifest de configurao e responder
algumas perguntas como nome do projeto, descrio e tudo mais, sempre ro-
dando no terminal.
$ npm init
{
name: projeto,
version: 1.0.0,
description: ,
main: index.js,
scripts: {
test: echo \Error: no test specified\ && exit 1
},
author: Keven Jesus,
license: ISC
}
8
{BOWER}
GERENCIADOR DE PACOTES
9
No, no o heri daquela srie de ao 24 Horas. Nosso Bower uma ferra-
menta criada para gerenciar componentes para desenvolvimento front-end. In-
dependentemente da origem do seu back-end, sendo Java, Ruby, Python, Node
ou PHP, ele pode ser adicionado em qualquer projeto que esteja executando.
Para fazer a instalao do Bower, voc ir precisar ter o Node junto ao seu NPM
tambm instalado em seu computador. Caso o contrrio, a operao no ocor-
rer normalmente.
V ao seu terminal e utilize a flag -g bower. Dessa maneira, ele ser executado
globalmente em toda sua mquina
{
name: projeto,
description: ebook com bower,
main: ,
license: MIT,
homepage: ,
ignore: [
**/.*,
node_modules,
bower_components,
test,
tests
]
}
10
No eBook, vamos utilizar o Bootstrap como dependncia, como costumeiro
encontrar em projetos front-end. Para entender isso e adicionar a dependncia
em seu projeto, voc ir digitar no terminal.
Assim, toda vez que voc instalar um novo pacote, ele ir salvar no arquivo
bower.json.
{
name: projeto,
description: ebook com bower,
main: ,
license: MIT,
homepage: ,
ignore: [
**/.*,
node_modules,
bower_components,
test,
tests
],
dependencies: {
bootstrap: ^3.3.7
}
}
11
{GULP}
O AUTOMATIZADOR DE TAREFAS
12
A o criar uma pgina para web ou realizar qualquer outro tipo de ativida-
de em seu trabalho enquanto programador e/ou desenvolvedor, comum que
voc acabe acumulando diversas tarefas para realizar. E mais comum do que
isso, so casos onde essas tarefas, por mais obrigatrias e necessrias que se-
jam, acabam se tornando verdadeiras pedras no sapato. Sua verdadeira preo-
cupao nesse momento deve ser em automatizar algumas destas tarefas para
manter o foco em seu resultado.
Por isso, bora falar mais sobre o Gulp? Se voc j o conhece, tenho certeza que
sabe do grande auxlio que ele vem prestando para muitos profissionais. Caso
voc ainda no o conhece, estou sentindo que vai ser amor primeira vista!
Quem o Gulp?
O Gulp um plugin do Node que funciona como um automatizador de tarefas,
com sintaxe JavaScript. importante ter o Node instalado em sua mquina.
Acima de qualquer definio, o Gulp ser um de seus melhores amigos a partir
de agora. Sua utilizao muito simples e ir tornar tudo mais gerencivel. Ele
tambm mantm um alto padro de performance, sendo constantemente me-
lhorado pela comunidade.
Ao entrar em sua pgina (gulpjs.com), voc poder conhecer mais sobre todos
os plugins existentes que iro lhe auxiliar, tendo cada um sua prpria funcio-
nalidade, como o gulp-sass e o gulp-minify-css, por exemplo. Para instalar e
executar o Gulp em sua mquina, veja os tpicos a seguir.
13
Instalando plugins
Primeiramente, voc precisa ir at o terminal, tendo como base que seu siste-
ma operacional seja tanto Mac quanto Linux. Se for o seu caso, o sudo pode se
tornar necessrio caso sua mquina esteja com alguma configurao diferente
de permisso. Nela, voc ir instalar o Gulp atravs do NPM (Node Packager
Manager) que citei anteriormente, para que o comando Gulp seja reconhecido
globalmente atravs do terminal. Ao digitar as iniciais para instalar o plugin do
Node (Gulp), necessrio utilizar a flag -g (global) junto ao NPM:
Aps essa etapa ter sido concluda, necessrio entender como instalar tam-
bm outras features do Gulp, como o gulp-sass, por exemplo. Voc vai ouvir
muito sobre ele ainda, mas vamos por partes, como diria Jack, O Estripador.
Tomando o gulp-sass como plugin base, retorne ao terminal.
{
name: projeto,
version: 1.0.0,
description: ,
main: index.js,
scripts: {
test: echo \Error: no test specified\ && exit 1
},
author: Keven Jesus,
license: ISC,
devDependencies: {
gulp-sass: ^2.3.2
}
}
gulp.task(compilar-css, function(){
});
Dessa forma, suponha que voc tem um arquivo style.scss, precise transform-
-lo em CSS nativo e ainda repass-lo para outro diretrio. Voc deve ter ficado
cansado s de pensar, no ? Logo , basta voc cri-la uma vez e automatiz-la
para ficar tranquilo.
Dessa forma, suponha que voc tem um arquivo style.scss, precise transform-
-lo em CSS nativo e ainda repass-lo para outro diretrio. Voc deve ter ficado
cansado s de pensar, no ? Logo , basta voc cri-la uma vez e automatiz-la
15
para ficar tranquilo.
Na pasta inicial do projeto, crie um novo diretrio chamado source e crie uma
nova pasta chamada scss dentro do mesmo. Nessa nova pasta scss, crie um ar-
quivo, que em nosso caso se chamar style.scss, onde voc escrever um CSS
aleatrio, por exemplo.
body {
background-color: #333;
}
Suponha que voc precise encontrar esse novo arquivo a partir do Gulp e ainda
no saiba como comear. Voc precisa percorrer e retornar esse arquivo para o
plugin gulp-sass, que est armazenado na varivel sass criada anteriormente.
gulp.task(compilar-css, function(){
return gulp.src(./source/scss/style.scss)
});
H duas formas existentes para que se percorra os caminhos pelo Gulp. A mais
conhecida fazer sua busca pelo seu arquivo, ao digitar ./, que simbolizam a
entrada na raiz do diretrio padro. Em seguida, tambm ser repassado o ca-
minho do arquivo (./source/scss/style.scss), fazendo referncia ao ltimo ar-
quivo. A segunda forma passar um array em JavaScript, onde voc poder pro-
curar por diversos arquivos por seus nomes. Isso pode ser feito para inmeros
arquivos que estejam presentes em outros diretrios.
gulp.task(compilar-css, function(){
return gulp.src(./source/scss/.scss)
});
Continuando, na linha abaixo, vamos acrescentar o .pipe. Ele se trata uma con-
veno do Node para leitura. aqui onde a transformao do Sass para CSS ir
acontecer. Dentro da linha, invoque a varivel sass (que representa o gulp-sass)
como funo,
16
gulp.task(compilar-css, function(){
return gulp.src(./source/scss/*.scss)
.pipe(sass())
});
Em uma nova linha, voc deve rodar o pipe novamente e informar para onde
ser enviado o arquivo transcrito, utilizando o gulp.dest e passando o diretrio.
gulp.task(compilar-css, function(){
return gulp.src(./source/scss/*.scss)
.pipe(sass())
.pipe(gulp.dest(./dist/css))
});
$ gulp compilar-css
Ao dar enter, perceba sua atividade foi concluda quase instantaneamente e que
foram criadas duas novas pastas (dist e css) e um novo arquivo (style.css) no di-
retrio css. E voil! Sua primeira tarefa foi totalmente automatizada com sucesso.
Toca aqui!
17
Watch: monitorando arquivos
Um outro recurso que vale a pena comentar o Watch. O Watch uma feature
que permite monitorar seus arquivos. Mas voc pode (ou provavelmente deve)
estar se perguntando mas como assim monitorar os arquivos, Keven?!. Pois
bem, imagine que voc tem o comando para compilar em formato css, mas toda
vez que uma mudana ter que ser feita, tambm passar pelo mesmo proces-
so de abrir seu terminal, executar um novo comando, fazer isso manualmente
para cada ocasio Admita, ningum est afim de passar a tarde fazendo isso.
Para resolver essa questo, voc ir criar uma nova task do Gulp chamada escu-
ta-me, que ficar encarregada de monitorar todas as atividades passadas para
ela. Ento, repita o processo de criar uma tarefa, passando nome e a funo
annima.
gulp.task(escuta-me, function(){
});
gulp.task(escuta-me, function(){
gulp.watch( ,[]);
});
Teremos dois parmetros para estabelecer: quem e para onde. Quem se trata
de qual arquivo estar sendo monitorado.
No caso, todos os arquivos. Dessa forma, hora de repetir o padro anterior ./sour-
ce/scss/*.scss, para que ele execute assim todos os arquivos no formato scss.
gulp.task(escuta-me, function(){
gulp.watch(./source/scss/*.scss,[]);
});
Para o parmetro para onde, voc ir inserir um array de tarefas que podem
ser executadas quando houver mudanas nos arquivos com extenso scss. Am-
bos os parmetros so complementares ao outro, onde o arquivo foi escuta-
do e a funo ser executada de acordo com o que foi programado.
18
gulp.task(escuta-me, function(){
gulp.watch(./source/scss/*.scss,[compilar-css]);
});
$ gulp escuta-me
19
{SASS}
POR QUE UTILIZ-LO COM O BOOTSTRAP
20
C onforme utilizei como exemplo em minha abordagem no tpico ante-
rior para demonstrar a utilizao do Gulp como um facilitador de tarefa, para
que se compreenda toda a abrangncia dessa mecanizao, muito importante
que tambm se fale um pouco mais sobre o Sass. Para comear, do que se trata
o Sass?
Tenho certeza que, um belo dia, em sua nada mole vida de desenvolvedor, voc
estava executando a mesma folha de estilo mais de 10, 15 ou at 20 vezes, seja
ela para qualquer tipo de especificao. Copiando e colando, copiando e colan-
do
Fala srio, n? Deveria haver uma maneira mais prtica e direta para que essa
programao seja feita e lhe poupar alguns bons minutos. nesse momento
em que o Sass entra em ao para nos ajudar. Ele funciona como uma espcie
de extenso em linguagem CSS, algo como um pr-processador, onde voc ir
escrever um css, mas com super poderes, sendo extremamente parecida com a
linguagem tradicional. Algo que eu gosto de chamar de CSS inteligente.
Mas por que CSS inteligente, Keven? a pergunta da vez. Isso pode ser afir-
mado devido aos grandes benefcios que ele lhe oferece, como:
Variveis
Enquanto desenvolvedor, tenho certeza absoluta que tenha aprendido e visto
de perto o poder de uma varivel. Mas, caso isso seja um conceito um tanto
quanto estranho para voc,
ficarei feliz em lhe explicar. Imagine um guarda-roupa e suas
gavetas. A funo primordial de toda gaveta de armazenar qualquer tipo de
coisa, sejam suas roupas, seus calados, seus livros, etc. As variveis funcionam
exatamente da mesma maneira: elas servem para armazenar valores.
Modularizao
O Sass um excelente auxiliar para projetos modularizados. Em suas configura-
es, o programa possui um comando import que se diferencia muito do tradi-
cional import do CSS.
Reuso
Bem, se voc tem funcionalidades de uma classe que tenha uma importncia
grande e que ser utilizada novamente em seu projeto, duplicando seus cdi-
gos, comum ouvirmos relatos de problemas que isso possa gerar. Com a reuti-
lizao que o Sass pro
21
Variveis
Enquanto desenvolvedor, tenho certeza absoluta que tenha aprendido e visto
de perto o poder de uma varivel. Mas, caso isso seja um conceito um tanto
quanto estranho para voc,
ficarei feliz em lhe explicar. Imagine um guarda-roupa e suas
gavetas. A funo primordial de toda gaveta de armazenar qualquer tipo de
coisa, sejam suas roupas, seus calados, seus livros, etc. As variveis funcionam
exatamente da mesma maneira: elas servem para armazenar valores.
Modularizao
O Sass um excelente auxiliar para projetos modularizados. Em suas configura-
es, o programa possui um comando import que se diferencia muito do tradi-
cional import do CSS.
Reuso
Bem, se voc tem funcionalidades de uma classe que tenha uma importncia
grande e que ser utilizada novamente em seu projeto, duplicando seus cdi-
gos, comum ouvirmos relatos de problemas que isso possa gerar. Com a reu-
tilizao que o Sass proporciona, voc poder trazer esses valores de volta de
uma maneira simples com mixins, placeholders e funes.
Custo de Manuteno
Graas aos fatores anteriores, isso tambm implica em um baixo custo de ma-
nuteno com Sass. Assim, todos os processos que tomariam muito tempo para
serem resolvidos podero ter solues em questo de minutos. Tudo isso con-
tribui para que se enxergue o Sass no apenas como um mtodo de auxlio ime-
diato, mas como um verdadeiro investimento para projetos a mdio e longo
prazo.
Operaes Matemticas
Um dos grandes baratos do Sass que ele apresentar operaes matemticas
como adio, diviso, multiplicao e subtrao por suportar esse tipo de pro-
gramao, como tambm clculos envolvendo dados percentuais, arredonda-
mentos, etc. Tudo isso garante um leque de opes mais amplo em seu campo
de trabalho.
Funes e Condicionais
Acima de tudo, extremamente importante ressaltar que o Sass composto
por funes e condicionais. Voc capaz de fazer ifs no seu CSS. Pois , meu
22
caro. isso mesmo que voc est lendo. Todo esse poder na palma da sua mo.
Mas calma, pois vem muito mais a seguir!
Bootstrap
A verso 4 do Bootstrap foi totalmente reescrita em Sass. Ento, nem preci-
so comentar muito sobre a importncia e o envolvimento do Sass com o fra-
mework, no mesmo?
23
Variveis
Como um primeiro exemplo para explicar e destrinchar as formas de atuao do
Sass, escolhi abordar uma em especfico que acredito que seja seu maior dife-
rencial perante o restante: as variveis. Voc vai entender um pouco mais sobre
como o isolamento de dados ocorre com o uso das variveis. Para comearmos,
imagine o cenrio onde voc tem um componente card e ele corresponda com
alguns valores, sendo que esses possam ser isolados em variveis num ambien-
te com sass.
CSS TRADICIONAL
.card {
padding: 20px;
width: 100%;
}
SCSS (SASS)
.card {
padding: $card-padding;
width: $card-width;
}
Ao utilizar uma varivel com o Sass, preciso iniciar com o cifro dlar. Em se-
guida, informar o nome da varivel, sempre respeitando a regra de que no se
pode iniciar com nmero, ter espaos ou caracteres especiais como @ (arroba),
# (hashtag), ! (exclamao), etc. Aps isso, foi informado o valor dessa varivel,
sendo nosso caso de 20px e 100% .
$card-padding: 20px;
$card-width: 100%;
.card {
padding: $card-padding;
width: $card-width;
}
24
rvore de seletores e reutilizao de classes
Aps tantas expresses que formulei para lhe ajudar a entender melhor as fun-
es do Sass, vamos falar um pouco mais sobre a rvore de seletores. Como
voc j sabe, uma rvore possui diversos galhos que se espalham ao seu redor,
partindo sempre de um ponto em comum, no qual seria o tronco. Pois bem.
No CSS tradicional, normalmente encontramos uma situao onde temos uma
classe header e para que incluamos um logo em conjunto, digitamos .header e
.logo. Fazendo isso, queremos dizer que a classe .logo pertence classe .hea-
der em questo, como um elemento filho.
No Sass, isso se resolve de uma maneira visualmente mais interessante e intui-
tiva. quando voltamos para nossa rvore do comeo. A disposio das confi-
guraes se assemelha aos galhos e nos oferece uma liberdade muito maior. D
uma olhadinha aqui embaixo para entender melhor.
CSS TRADICIONAL
SCSS (SASS)
.header {
background: #fff;
.logo{
background: #000;
}
}
25
Pseudo elementos
Os conhecidos pseudo-elements tambm fazem parte dessa rvore e podem
ser acrescentados da seguinte maneira.
CSS TRADICIONAL
SCSS (SASS)
.header {
background: #fff;
&:hover{
background: #000;
}
}
Veja que surgiu um novo carinha, o famoso e comercial. Ele garante dife-
rentes acessos aos elementos no Sass, com um deles podendo ser usado para
pseudo-elementos.
26
{BOOTSTRAP}
SEMNTICA
27
, meus amigos Estamos chegamos ao nosso ltimo tpico! A partir de
agora, vamos abordar mais sobre o prprio Bootstrap e como podemos compre-
end-lo ainda mais para otimizar sua atuao em prol do seu trabalho. Algo que
gostaria de abordar logo de incio aquilo que seria a semntica do Bootstrap.
Muito se fala de um grande problema do Bootstrap. Digo isso porque se trata
de um fator que causa uma coliso de nomes, uma espcie de inconsistncia na
manuteno de seu projeto.
Uma forma de ilustrar e descobrir o que estou dizendo criar um arquivo HTML
e uma estrutura simples. Por exemplo, uma box de perfil.
J deu pra notar que sua programao comeou a se tornar uma grande bola
de neve, no ? Em um projeto em HTML, uma apresentao de seu processo se
torna um tanto quanto ilegvel. Mas espere! Foi para isso que rumamos juntos
at aqui. Para esse momento. Esse tpico. Aquele que far com que tudo que
lhe foi apresentado ganhe muito mais sentido. Vem comigo!
@import ../components/bootstrap/scss/bootstrap;
J deu pra notar que sua programao comeou a se tornar uma grande bola
de neve, no ? Em um projeto em HTML, uma apresentao de seu processo se
torna um tanto quanto ilegvel. Mas espere! Foi para isso que rumamos juntos
28
at aqui. Para esse momento. Esse tpico. Aquele que far com que tudo que
lhe foi apresentado ganhe muito mais sentido. Vem comigo!
@import ../components/bootstrap/scss/bootstrap;
Ao retornar para o index.html, copie e cole toda a box .about construda em nos-
so processo e deixe comentado. Isso servir como base para termos uma noo
espelhada das diferenas entre uma box e outra. V ao navegador e confirme que
a estrutura no foi duplicada. Perfeito? Muito bem. Aps isso, em sua segunda
box, retire todos as cols do Bootstrap que inclumos antes, deixando apenas as
classes iniciais (about, about-image).
Mas Keven, como assim tirar as cols? Esse negcio todo no sobre Bootstrap?
Sim, voc est certo e vai entender o que estou lhe propondo muito em breve.
Primeiramente, voc dever alimentar este .about e seus subsequentes (.about-
-image e .about-bio) no style.scss, incluindo caractersticas visuais. Sendo feito,
basta salvar e dar incio s tarefas compilar-css e escuta-me em seu terminal. Ao
atualizar seu navegador, seus boxes tero fundos preenchidos com elementos
visuais que voc determinou.
@import ../components/bootstrap/scss/bootstrap;
.about{
background-color: #ccc;
.about-image{
background-color: #f00;
}
.about-bio{
background: #efefef;
}
}
Beleza! Todo o processo est feito e bem explicado. Contudo, o grande pulo
do gato nessa histria est em fazer a sua segunda box se comportar como a
primeira. Como isso seria possvel? Gostaria de lhe apresentar o recurso extend
do Sass. Para explicar sua funo, imagine que o Bootstrap possua a col .col-lg-6
e voc precise utiliz-la novamente. O extend atua como um simplificador de
classes nesse sentido. Ficou um pouco confuso? Um exemplo tornar as coisas
mais fceis.
29
.about{
background-color: #ccc;
@extend .col-md-9;
@extend .col-lg-6;
.about-image{
background-color: #f00;
@extend .col-md-6;
}
.about-bio{
background: #efefef;
@extend .col-md-6;
}
}
Esse aspecto se torna algo muito interessante, pois os cdigos no esto du-
plicados, mas sendo utilizados novamente, o que torna seu projeto ainda mais
semntico. Logo, basta aplicar em todos os processos.
Ao salvar e atualizar seu navegador desta vez, voc poder ver que todos os ele-
mentos das suas boxes estaro iguais em tamanho, cor e formato. A nica dife-
rena est, na realidade, no .about, que pode ser excluda. Consegue perceber
como todo seu projeto se tornou muito mais consistente e simples, ao ter tudo
sendo realizado especificamente para sua aplicao? Detalhe: no h nem uma
garantia hoje que voc est utilizando o Bootstrap, pois o arquivo utilizado em
toda esta operao se chama style.scss.
importante frisar que todo seu core e desenvolvimento criado sempre est na
pasta source, que garante controle total sobre sua aplicao, com o projeto que
ser levado para produo estando na dist.
30
{CONCLUSO}
31
Como voc pde perceber ao longo de toda nossa jornada, a vida de desenvol-
vedor realmente no fcil. So muitas demandas e pouco espao na mem-
ria (RAM) para lembrar de inmeros detalhes. Contudo, a tecnologia que tanto
complica nossas vida tambm pode nos oferecer ferramentas incrveis para agi-
lizar nosso processo de trabalho.
Esse eBook se tratou apenas de uma pequena parcela de todo o material que
abordo ao longo de meu curso. Juntos, pudemos entender melhor como peque-
nos processos, que parecem to pequenos diante do resto de nossas atividades,
podem ser aqueles que mais nos causam atrasos. Mas, ao apresentar extenses,
ferramentas e plugins que otimizam essas atividades, o que est realmente em
jogo no apenas o tempo e como o utilizamos.
Espero que tenham gostado do material e das dicas! Caso deseje conhecer ain-
da mais sobre o Bootstrap e suas diversas vantagens, gostaria de lhe convidar
para meu curso Certificao Bootstrap, onde sei que muitas portas que j fo-
ram abertas agora, com nosso eBook, sero destrancadas totalmente e te leva-
ro para um novo caminho em sua carreira.
32
33