Stefan Horochovec
Possuo 20 anos de experiência no desenvolvimento de soluções web. Nos últimos 10 anos tenho atuado como Arquiteto de Soluções auxiliando empresas a desenvolver projetos para nuvem com um grande foco em Java EE como tecnologia voltada ao backend, Angular e React voltada ao frontend e Flutter voltado ao desenvolvimento móvel. Com relação a plataformas na nuvem, atuo com projetos consumindo serviços da AWS, Azure, e GCP.

Comprimir arquivos Javascript

Olá pessoal,

Depois de alguns anos trabalhando com Adobe Flex, estou de volta ao Javascript e CSS. Interessante voltar a esse ambiente, bastante desafiador, diga-se de passagem.

Nesse artigo, quero comentar com vocês algumas dicas sobre como comprimir seus arquivos Javascript para uma otimização na hora de distribuir sua app ou seu site.

O artigo é baseado em uma ferramenta chamada Closure, criada pela Google, que tem como objetivo auxiliar o desenvolvedor HTML a manter um código Javascript rápido e eficiente.

A Clousure Tools, é formada por 4 aplicativos para nos auxiliar em nosso dia-a-dia. Esse artigo trata apenas do Clousure Compiler. As outras 3 ferramentas disponíveis são:

O objetivo do Clousure Compiler é comprimir e otimizar seu código javascript. Para essa compressão a ferramenta procura remover todo o código não utilizado, reescrevendo seu arquivo, removendo também todos os espaços em branco (nossa famosa identação).

O Clousure Compiler também é responsável por verificar toda sua sintaxe, dessa forma, caso encontre algum problema, ele irá lhe alertar sobre os erros e não irá efetuar a compressão do código. Entretanto, por padrão ele apenas irá comprimir o arquivo.

Você pode trabalhar com o Clousure Compiler através de um UI online, através de uma API ou através de uma app em seu computador.

UI online
Para trabalhar com a UI online, você deve acessar essa url, e terá como resposta a tela abaixo:

Basicamente, a ideia é que você irá informar a URL do seu arquivo javascript, ou copiar e colar o código a ser compilado no TextArea logo abaixo. Feito isso, você deve escolher qual forma de compilação irá utilizar, e essa é a parte que você deve tomar muito cuidado.

São três formas de compilação:

Whitespace only (WHITESPACE_ONLY)
Essa opção é responsável por remover todos os “espaços” ou “identação” do seu arquivo js. Colocando todo o conteúdo em uma única linha. Exemplo:

Original

function hello(name) {
alert('Hello, ' + name);
}
hello('New user');

Resultado

function hello(name){alert("Hello, "+name)}hello("New user");

Simple (SIMPLE_OPTIMIZATIONS)
Essa opção é responsável por uma pequena otimização do código e não apenas por remover espaços em branco. Ela remove referencias de objeto e otimiza a forma da codificação, porém não remove nenhuma função do seu código, por mais que ela não esteja sendo utilizada. Exemplo:

Original

function unusedFunction(note) {
alert(note['text']);
}
function displayNoteTitle(note) {
alert(note['title']);
}
var flowerNote = {};
flowerNote['title'] = "Flowers";
displayNoteTitle(flowerNote);
Resultado "Simple"
function unusedFunction(a){alert(a.text)}function displayNoteTitle(a){alert(a.title)}var flowerNote={title:"Flowers"};displayNoteTitle(flowerNote);
Percebam que a função "unsedFunction" continua no código, mesmo não sendo utilizada. O código foi comprimido e alguns objetos tiveram uma alteração em sua declaração, reduzindo o tamanho do arquivo. Agora percebam a mesma situação apenas com a remoção de espaço:
Resultado "Whitespace Only"
function unusedFunction(note){alert(note["text"])}function displayNoteTitle(note){alert(note["title"])}var flowerNote={};flowerNote["title"]="Flowers";displayNoteTitle(flowerNote);
A opção "Simple" garante uma otimização de 25.76% do código, enquanto a versão Whitespace Only garante apenas uma otimização de 9.09%.
Advanced (ADVANCED_OPTIMIZATIONS)
Essa opção é responsável por grandes alterações no código submetido para otimização. Sua otimização é baseada na remoção ou re-estruturação de qualquer trecho de código que a ferramenta considere que não está sendo utilizado. É uma opção bastante perigosa e deve ser utilizada com muita cautela.
Caso seu javascript possua métodos que são utilizados apenas por outros arquivos, eles facilmente serão removidos da sua aplicação. Para evitar esse problema, você deve utilizar a versão Desktop do compilador, aonde você poderá informar mais de um arquivo para otimização.
Iremos submeter o mesmo trecho de código e analisaremos o resultado:
Original
function unusedFunction(note) {
alert(note['text']);
}
function displayNoteTitle(note) {
alert(note['title']);
}
var flowerNote = {};
flowerNote['title'] = "Flowers";
displayNoteTitle(flowerNote);
Resultado
var a={};a.title="Flowers";alert(a.title);
Perceba que o compilador interpretou o código, e percebeu que uma função não estava sendo executada e a removeu, em seguida, removeu a função displayNoteTitle que era utilizada apenas para um alert da propriedade title do objeto e a substituiu por um alerta.
Os resultados são tentadores, essa opção reduz o código em 91.41%, porém ela deve ser utilizada com grande cuidado, perceba que ocorreram grandes modificações no código.
Para maiores informações, sugiro os links:
Um abraço!
Share

You may also like...

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *