Escolar Documentos
Profissional Documentos
Cultura Documentos
Node.js
O Node.js é uma biblioteca open-source, multiplataforma que executa
JavaScript fora do ambiente do browser, permitindo tanto escrever fer-
ramentas de linha de comando quanto códigos para o servidor. Como
desenvolvedor front-end, você deve conhecer essa biblioteca para po-
der utilizar e, principalmente, configurar a infinidade de ferramentas e
bibliotecas já prontas para auxiliar o seu processo de trabalho, as quais
oferecem, por exemplo, estilizações prontas, funções em JavaScript já
programadas, serviços de otimização, etc. Mas o primeiro passo para ter
acesso a essas ferramentas é entender o processo de como elas podem
ser instaladas, e para isso vamos utilizar o gerenciador de pacotes do
Node.js.
$ npm init
$ npm install
Com pacotes instalados, você pode trazê-los para dentro do código es-
crevendo require(<nome-do-pacote>). Para podermos utilizá-lo, entre-
tanto, precisamos salvar o retorno dessa função require em uma vari-
ável, e como não pretendemos atribuir outro script que não o retorno 40
desse ‘require’, podemos atribui-lo em uma constante. Com a variável
pronta, podemos acessar todas as funções exportadas do nosso pacote
normalmente a partir dela, como por exemplo:
Mastertech | Imersivo Desenvolvimento Front-End
https://nodejs.org/api/fs.html
Tooling
Com o npm em mãos, podemos agora começar a preparar o grupo de
ferramentas que será utilizado para o desenvolvimento front-end. Há
todo tipo de ferramentas no npm com os mais diversos objetivos, como
por exemplo:
. Oferecer scripts que otimizem o processo de trabalho;
. Oferecer scripts que otimizem a organização do trabalho;
. Oferecer scripts que contenham soluções prontas para alguma ta- 41
refa em HTML, CSS ou JavaScript;
. Oferecer scripts que otimizem os arquivos finais do projeto para
melhorar o desempenho do produto em ambiente de produção;
Essas ferramentas podem ser usadas tanto de forma complementar
quanto substituindo uma à outra. O segredo para escolhê-las é enten-
der que processos irão precisar de ferramentas e quais tarefas você gos-
Mastertech | Imersivo Desenvolvimento Front-End
Webpack
Desenvolvimento vs Publicação
https://github.com/webpack/webpack
Babel
Instalação
Existem várias formas de criar essa estrutura, mas no nosso caso uti-
lizaremos o próprio Webpack para também tomar conta dessa tarefa.
Primeiramente, precisamos instalar alguns módulos:
43
Mastertech | Imersivo Desenvolvimento Front-End
Todas essas configurações são necessárias para que essa biblioteca fun-
cione, sendo elas:
. O entry, que é nosso arquivo de entrada. No caso acima, o nosso
ponto de entrada corresponde à um único arquivo, de nome ‘main.
js’ dentro da pasta ‘src/js/’;
. O rules é uma chave que recebe uma lista de objetos que contém
as regras que serão aplicadas em determinados tipos de arquivos;
. O test serve para definir, utilizando expressões regulares,
em quais tipos de arquivo essa regra será aplicada. No nosso caso,
estamos buscando arquivos que terminem com a extensão ‘.js’;
. A chave exclude define que qualquer arquivo que seja en-
contrado em pastas chamadas de ‘node_modules’ ou ‘bower_com-
ponents’ sejam ignorados;
. A chave use serve para definir o que será utilizado caso ar-
quivos sejam encontrados seguindo essas regras. O loader babel-
-loader serve para carregar os arquivos de JavaScript e efetuar o
processo de conversão para a versão antiga da linguagem;
Com essas regras definidas em nosso arquivo de configuração, agora
podemos passar a desenvolver o nosso código de JavaScript utilizando
todas as adições mais recentes da linguagem.
Importações e Exportações
Existem outras adições além da nova forma de declarar variáveis e as
arrow functions na versão mais atual do JavaScript, como por exemplo
a introdução de import e export. No JavaScript tradicional, se quisermos
utilizar funções de outro arquivo JavaScript, é necessário importar os ar-
quivos em uma ordem específica para que um código de um arquivo
anterior esteja disponível em um arquivo subsequente. Com o ECMAs-
cript 6, podemos utilizar uma lógica de exportação e importação para
permitir que os arquivos se comuniquem sem a necessidade de uma
ordem específica de tags no HTML.
https://babeljs.io/
SCSS
Instalação
Existem várias formas de criar essa estrutura, mas no nosso caso utili-
Mastertech | Imersivo Desenvolvimento Front-End
Escrevendo em SCSS
O SCSS traz algumas diferenças primordiais em relação ao CSS normal.
Seu principal objetivo é facilitar a forma como o estilo do seu site é escri-
to, adicionando uma lógica mais próxima de linguagens de programa-
ção, juntamente com a possibilidade de criações de variáveis, funções e
aninhamento de estilos. Veja abaixo como o aninhamento é feito para
indicar seletores dentro de outros seletores.
Normalmente, indicaríamos que um seletor está dentro do outro sepa-
rando-os com um espaço, mas no caso do SCSS colocamos o seletor
filho dentro das chaves do seletor pai. Esse tipo de relação pode ser es-
tabelecida em qualquer nível de parentesco, colocando os filhos sempre
internos aos pais. Há entretanto uma situação onde os seletores internos
à outro seletor não necessariamente correspondem a relação de pais e
filhos, mas sim estendem o seletor externo.
47
Mastertech | Imersivo Desenvolvimento Front-End
Nessa situação, especificamos que existe uma variável chamada $hea-
der-height que contém o valor de setenta e cinco pixels. Essa variável 48
será utilizada tanto para indicar qual a altura do header quanto a mar-
gem que o elemento main precisa ter do topo da página. Caso em al-
gum momento ao longo do desenvolvimento haja a decisão de alterar
essa altura de setenta e cinco para cento e vinte, por exemplo, podemos
alterar somente o valor da variável e as mudanças serão aplicadas auto-
maticamente em todos os locais em que ela é utilizada.
Mastertech | Imersivo Desenvolvimento Front-End
Funções e Mixins
Duas grandes facilidades do SCSS são as possibilidades de criar funções
e mixins, que são estruturas de código que podem ser reaproveitadas ao
longo do seu estilo e tentam evitar que pedaços específicos de código
se repitam com frequência.
Mixins são estruturas de código que servem para definir uma base co-
mum que pode ser utilizada em qualquer elemento e expandida con-
forme o necessário, Para criarmos mixins, é necessário utilizar a estrutu-
ra @mixin, como no exemplo:
No caso acima, criamos um mixin de nome ‘translateX’ que recebe um
único valor como parâmetro e atribui esse valor para todas as variações
de compatibilidade da propriedade ‘transform’, garantindo que nossa
animação seja responsiva em qualquer navegador. Com esse mixin cria-
do, só precisamos incluí-lo utilizando o termo @include nos seletores
de nosso interesse. Já para criarmos uma função, precisamos definir um
nome, parâmetros e o retorno dela, como no exemplo:
Importações
Quando criando estilos em SCSS, é comum utilizar suas ferramentas de
importação para melhorar a organização do código e diminuir a quanti-
dade de código por arquivo. Isso é utilizado pois, ao compartimentalizar
os estilos por sessões do site, é possível ser mas assertivo ao fazer manu-
tenção ou criação de conteúdo. Para importarmos outro arquivo SCSS
no nosso arquivo atual, devemos utilizar a estrutura @import.
No exemplo acima, estamos importando os estilos do nosso elemento
‘header’ dentro do nosso SCSS principal. Desse exemplo, é importante
ressaltar alguns pontos:
. Sempre devemos ter um arquivo principal (normalmente chama-
do de ‘main’) que conterá todos os imports necessários para o nosso
site funcionar;
. Cada “pedaço” do site (header, footer, main, janelas flutuantes) nor-
malmente terá seu estilo definido em um arquivo próprio;
. Arquivos parciais (correspondentes a um pedaço do site específico)
normalmente tem seu nome começado com underline. Entretanto,
na hora da importação não é necessário adicionar esse símbolo ou
a extensão do arquivo;
. Você pode utilizar variáveis dos imports em um código subsequen-
te;
50
Devtool
Inspecionando nossos elementos através das Ferramentas de Desen-
volvedor podemos ver que agora não é mais possível ver com precisão
onde exatamente está localizado nosso código de estilo. Isso acontece
porque, embora estejamos programando em arquivos de SCSS, o nave-
gador só lê o pacote geral de CSS gerado, agrupando todo o conteúdo
escrito em um único arquivo e alterando completamente a formatação
Mastertech | Imersivo Desenvolvimento Front-End
dos textos para que todas as regras de CSS sejam cumpridas. Embora
esse seja exatamente o objetivo que desejamos alcançar, esse tipo de
resultado atrapalha o processo de correção e identificação de proble-
mas no nosso código. Sendo assim, o Webpack oferece uma configu-
ração chamada devtool que permite a adição de informações no seu
CSS que identifiquem qual a origem real de cada código, identificando
exatamente em quais arquivos de SCSS nosso código está localizado.
A adição da linha do ‘devtool’ no nosso ‘export’ é suficiente é a única
que precisa ser feita para essa ferramenta funcionar. Vale relembrar que,
embora ela facilite a leitura do programador nas Ferramentas de De-
senvolvedor, sua adição aumenta um passo no processo de build dos
nossos pacotes, deixando-o mais lento.
51
Mastertech | Imersivo Desenvolvimento Front-End