Embora estejamos fazendo coisas incríveis com JavaScript no lado do servidor, é importante não perder de vista algumas das coisas excelentes que estão acontecendo no lado do cliente. Um desses projetos incríveis que descobri recentemente foi o JSZip: uma biblioteca JavaScript que permite que o senhor gere facilmente arquivos ZIP a partir do front-end. E por que isso é útil? O senhor pode permitir que os usuários selecionem e façam download de imagens de uma galeria ou de praticamente qualquer outra coisa. Vamos dar uma olhada em como o JSZip permite que o senhor gere arquivos Zip estruturados no lado do cliente!
Comece pegando o biblioteca JSZip que, por acaso, funciona em todos os principais navegadores. Uma vez que a biblioteca esteja disponível na página, a geração de um arquivo Zip é, na verdade, apenas algumas linhas de código:
var zip = new JSZip(); // Add an top-level, arbitrary text file with contents zip.file("Hello.txt", "Hello World\n"); // Generate a directory within the Zip file structure var img = zip.folder("images"); // Add a file to the directory, in this case an image with data URI as contents img.file("smile.gif", imgData, {base64: true}); // Generate the zip file asynchronously zip.generateAsync({type:"blob"}) .then(function(content) { // Force down of the Zip file saveAs(content, "archive.zip"); });
O senhor pode adicionar arquivos individuais com nomes e conteúdos personalizados, bem como diretórios arbitrários. Depois que o conteúdo é adicionado, o JSZip pode gerar o arquivo Zip de forma assíncrona e, posteriormente, o usuário pode acionar o download.
O senhor também pode carregar e ler arquivos Zip:
var read_zip = new JSZip(); // Load zip content; you'd use fetch to get the content read_zip.loadAsync(content) .then(function(zip) { // Read from the zip file! read_zip.file("hello.txt").async("string"); // a promise of "Hello World\n" });
Eu realmente aprecio a simplicidade do JSZip. Há bibliotecas mais avançadas e complicadas disponíveis, como a zip.js, mas o JSZip provavelmente cobrirá a maioria dos casos de uso. Um ótimo exemplo de como tirar proveito dos arquivos Zip no lado do cliente está no Livro de receitas do Service WorkerO senhor pode usar o seguinte recurso: armazenar em cache um arquivo Zip localmente, extrair seu conteúdo e servi-lo em um service worker. Seja qual for o seu caso de uso, saiba que os arquivos Zip podem ser lidos e gerados sem a necessidade de um servidor!
Apresentando o MooTools Templated
Um grande problema com a criação de componentes de interface do usuário com a estrutura MooTools JavaScript é que não há uma boa maneira de permitir a personalização do modelo e a facilidade de criação de nós. A partir de hoje, há duas maneiras de criar: new Element Madness A primeira maneira de criar componentes de…
Animação CSS vs. JS: O que é mais rápido?
Como é possível que a animação baseada em JavaScript sempre tenha sido secretamente tão rápida – ou mais rápida – do que as transições CSS? E, como é possível que a Adobe e o Google lancem consistentemente sites móveis ricos em mídia que rivalizam com o desempenho de aplicativos nativos?
Textareas de largura total
Trabalhar com larguras de área de texto pode ser doloroso se o senhor quiser que a área de texto tenha 100% de largura. Por que é difícil? Porque, se o elemento que contém a área de texto tiver preenchimento, o
"width:100%"
textarea provavelmente se estenderá para fora do contêiner pai – uma perspectiva frustrante, para dizer o mínimo. Felizmente…