História e legado do jQuery

História e legado do jQuery
jQuery - este é o mais popular no mundo uma biblioteca JavaScript. A comunidade de desenvolvimento web o criou no final dos anos 2000, resultando em um rico ecossistema de sites, plug-ins e estruturas usando jQuery nos bastidores.

Mas, nos últimos anos, seu status como principal ferramenta para desenvolvimento web diminuiu. Vejamos por que o jQuery se tornou popular e por que saiu de moda, e também em que casos ainda é aconselhável usá-lo para criar sites modernos.

Uma breve história do jQuery

John Resig (John Resig) criou a primeira versão da biblioteca em 2005, e publicado em 2006-m, em um evento chamado BarCampNYC. Sobre Site oficial do jQuery o autor escreveu:

jQuery é uma biblioteca Javascript baseada no lema: Javascript deve ser divertido de codificar. jQuery pega tarefas comuns e repetitivas, elimina todas as marcações desnecessárias e as torna curtas, elegantes e limpas.

jQuery tem duas vantagens principais. A primeira é uma API conveniente para manipular páginas da web. Em particular, fornece métodos poderosos para selecionar elementos. Não apenas você pode selecionar por ID ou classe, o jQuery permite escrever expressões complexas, por exemplo, para selecionar elementos com base em seus relacionamentos com outros elementos:

// Select every item within the list of people within the contacts element
$('#contacts ul.people li');

Com o tempo, o mecanismo de seleção tornou-se uma biblioteca separada Chiar.

A segunda vantagem da biblioteca era que ela abstraía as diferenças entre os navegadores. Naquela época, era difícil escrever código que funcionasse de maneira confiável em todos os navegadores.

A falta de padronização significava que os desenvolvedores precisavam levar em conta inúmeras diferenças entre navegadores e casos extremos. Dê uma olhada este código-fonte jQuery inicial e pesquise jQuery.browser. Aqui está um exemplo:

// If Mozilla is used
if ( jQuery.browser == "mozilla" || jQuery.browser == "opera" ) {
        // Use the handy event callback
        jQuery.event.add( document, "DOMContentLoaded", jQuery.ready );

// If IE is used, use the excellent hack by Matthias Miller
// http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited
} else if ( jQuery.browser == "msie" ) {

        // Only works if you document.write() it
        document.write("<scr" + "ipt id=__ie_init defer=true " + 
                "src=javascript:void(0)></script>");

        // Use the defer script hack
        var script = document.getElementById("__ie_init");
        script.onreadystatechange = function() {
                if ( this.readyState == "complete" )
                        jQuery.ready();
        };

        // Clear from memory
        script = null;

// If Safari  is used
} else if ( jQuery.browser == "safari" ) {
        // Continually check to see if the document.readyState is valid
        jQuery.safariTimer = setInterval(function(){
                // loaded and complete are both valid states
                if ( document.readyState == "loaded" || 
                        document.readyState == "complete" ) {

                        // If either one are found, remove the timer
                        clearInterval( jQuery.safariTimer );
                        jQuery.safariTimer = null;

                        // and execute any waiting functions
                        jQuery.ready();
                }
        }, 10);
}

E graças ao jQuery, os desenvolvedores puderam transferir as preocupações sobre todas essas armadilhas para os ombros da equipe que desenvolve a biblioteca.

Posteriormente, o jQuery facilitou a implementação de tecnologias mais complexas, como animações e Ajax. A biblioteca tornou-se efetivamente uma dependência padrão para sites. E hoje ele alimenta uma grande parte da Internet. A W3Techs acredita que 74% dos sites hoje usam jQuery.

O controle sobre o desenvolvimento do jQuery também se tornou mais formalizado. Em 2011 a equipe criou o quadro jQuery. E em 2012 jQuery Board transformado em jQuery Foundation.

Em 2015 a jQuery Foundation fundiu-se com a Dojo Foundation para criar a Fundação JS, que então se fundiu com a Fundação Node.js em 2019-m para criar Fundação OpenJS, dentro do qual jQuery era um dos “projetos inovadores. "

Mudança de circunstâncias

No entanto, nos últimos anos jQuery perdeu sua popularidade. GitHub removi a biblioteca do frontend do meu site. Inicialização v5 livrar-se do jQueryporque é dele"maior dependência de cliente para JavaScript regular"(atualmente com 30 KB de tamanho, reduzido e compactado). Várias tendências no desenvolvimento web enfraqueceram a posição do jQuery como uma ferramenta essencial.

Browsers

Por uma série de razões, as diferenças e limitações dos navegadores tornaram-se menos importantes. Primeiro, a padronização melhorou. Os principais desenvolvedores de navegadores (Apple, Google, Microsoft e Mozilla) estão trabalhando juntos para desenvolver padrões da web dentro de Grupo de Trabalho de Tecnologia de Aplicativos de Hipertexto da Web.
Embora os navegadores ainda difiram entre si em vários aspectos importantes, os fornecedores têm pelo menos um meio de pesquisar e criar um banco de dados comum em vez de guerra permanente junto. Conseqüentemente, as APIs do navegador ganharam novos recursos. Por exemplo, fetch API capaz de substituir funções Ajax do jQuery:

// jQuery
$.getJSON('https://api.com/songs.json')
    .done(function (songs) {
        console.log(songs);
    })

// native
fetch('https://api.com/songs.json')
    .then(function (response) {
        return response.json();
    })
    .then(function (songs) {
        console.log(songs);
    });

Métodos seletor de consulta и querySelectorAll seletores jQuery duplicados:

// jQuery
const fooDivs = $('.foo div');

// native
const fooDivs = document.querySelectorAll('.foo div');

Agora você pode manipular classes de elementos usando lista de classes:

// jQuery
$('#warning').toggleClass('visible');

// native
document.querySelector('#warning').classList.toggle('visible');

O site Você pode não precisar do jQuery Aqui estão mais algumas situações em que o código jQuery pode ser substituído por código nativo. Alguns desenvolvedores sempre optam pelo jQuery porque simplesmente não conhecem as novas APIs, mas quando o fazem, começam a usar a biblioteca com menos frequência.

O uso de recursos nativos melhora o desempenho da página. Muitos efeitos de animação do jQuery agora você pode implementar muito mais eficaz usando CSS.

A segunda razão é que os navegadores são atualizados muito mais rápido do que antes. A maioria deles usa estratégia de renovação "perene", com exceção do Apple Safari. Eles podem ser atualizados em segundo plano sem envolvimento do usuário e não estão vinculados a atualizações do sistema operacional.

Isso significa que novos recursos do navegador e correções de bugs são distribuídos com muito mais rapidez e os desenvolvedores não precisam esperar até que o Eu posso usar alcançará um nível aceitável. Eles podem usar novos recursos e APIs com segurança, sem baixar jQuery ou polyfills.

A terceira razão é que o Internet Explorer está se aproximando de um estado de completa irrelevância. O IE tem sido a ruína do desenvolvimento web em todo o mundo. Seus bugs eram generalizados e, como o IE dominou a década de 2000 e não usou uma estratégia de atualização permanente, versões mais antigas ainda são comuns.

Em 2016, a Microsoft acelerou o descomissionamento do IE, deixando de apoiar décima e versões anteriores, limitando o suporte ao IE 11. E cada vez mais, os desenvolvedores da web têm o luxo de ignorar a compatibilidade do IE.

Até o jQuery parou de oferecer suporte ao IE 8 e versões anteriores a partir de versão 2.0, publicado em 2013. E embora em alguns casos o suporte do IE ainda seja necessário, por exemplo, em sites mais antigos, estas situações surgem cada vez com menos frequência.

Novas estruturas

Desde o advento do jQuery, muitos frameworks foram criados, incluindo líderes modernos Reagir, Angular и vista. Eles têm duas vantagens importantes sobre o jQuery.

Primeiro, eles facilitam a separação da interface do usuário em componentes. Frameworks são projetados para lidar com renderização e atualização de páginas. E o jQuery costuma ser usado apenas para atualização, cabendo ao servidor a tarefa de fornecer a página inicial.

Por outro lado, os componentes React, Angular e Vue permitem unir HTML, código e até CSS. Assim como dividimos a base de código em muitas funções e classes independentes, a capacidade de dividir a interface em componentes reutilizáveis ​​facilita a construção e a manutenção de sites complexos.

A segunda vantagem é que os frameworks mais recentes aderem a um paradigma declarativo, em que o desenvolvedor descreve como deve ser a interface e deixa para o framework fazer todas as alterações necessárias para alcançar o que deseja. Esta abordagem é contrária à abordagem imperativa que caracteriza o código jQuery.

No jQuery, você anota explicitamente as etapas para fazer alterações. E em uma estrutura declarativa você diz: “De acordo com esses dados, a interface deve ficar assim”. Isso pode tornar muito mais fácil escrever código sem erros.

Os desenvolvedores adotaram novas abordagens para o desenvolvimento de sites, e é por isso que a popularidade do jQuery diminuiu.

Quando usar jQuery?

Então quando deveria usar jQuery?

Se a complexidade do projeto aumentar, é melhor começar com outra biblioteca ou estrutura que permita gerenciar a complexidade de forma significativa. Por exemplo, divida a interface em componentes. Usar jQuery nesses sites pode parecer bom no início, mas rapidamente levará a um código espaguete onde você não tem certeza de qual fragmento afeta qual parte da página.

Já estive nessa situação, ao tentar fazer qualquer mudança parece uma tarefa difícil. Você não pode ter certeza de que não quebrará nada porque os seletores jQuery dependem da estrutura HTML gerada pelo servidor.

No outro extremo da escala estão os sites simples que requerem apenas um pouco de interatividade ou conteúdo dinâmico. Eu também não usaria jQuery nesses casos, porque há muito mais que você pode fazer com APIs nativas.

Mesmo que eu precise de algo mais poderoso, procurarei uma biblioteca especializada, por ex. axios para Ajax ou Animate.css para animações. Isso será mais fácil do que carregar todo o jQuery para uma pequena funcionalidade.

Acho que a melhor justificativa para usar jQuery é que ele fornece funcionalidades abrangentes para o front-end de um site. Em vez de aprender uma variedade de APIs nativas ou bibliotecas especializadas, você pode ler apenas a documentação do jQuery e tornar-se produtivo instantaneamente.

A abordagem imperativa não é bem dimensionada, mas é mais fácil de aprender do que a abordagem declarativa de outras bibliotecas. Para um site com capacidades claramente limitadas, é melhor usar jQuery e trabalhar com calma: a biblioteca não requer montagem ou compilação complexa.

Além disso, o jQuery é bom se você tiver certeza de que seu site não ficará complicado com o tempo e se não se importar com a funcionalidade nativa, o que certamente exigirá a escrita de mais código do que o jQuery.

Você também pode usar esta biblioteca se precisar oferecer suporte a versões mais antigas do IE. Então o jQuery irá atendê-lo como acontecia na época em que o IE era o navegador mais popular.

Prospecção

jQuery não desaparecerá tão cedo. Ela desenvolvendo ativamente, e muitos desenvolvedores preferem usar sua API, mesmo que métodos nativos estejam disponíveis. A biblioteca ajudou toda uma geração de desenvolvedores a criar sites que funcionam em qualquer navegador. Embora tenha sido substituído de várias maneiras por novas bibliotecas, estruturas e paradigmas, o jQuery desempenhou um papel extremamente positivo na criação da web moderna.

A menos que a funcionalidade do jQuery mude significativamente, é provável que o uso da biblioteca continue a diminuir lenta mas continuamente nos próximos anos. Novos sites tendem a ser construídos usando estruturas mais modernas desde o início, e casos de uso adequados para jQuery estão se tornando cada vez mais raros.

Algumas pessoas não gostam da velocidade com que as ferramentas de desenvolvimento web se tornam obsoletas, mas para mim isso é uma evidência de um rápido progresso. jQuery nos permitiu fazer muitas coisas melhor. O mesmo se aplica aos seus sucessores.

Fonte: habr.com

Adicionar um comentário