Estou usando o jQuery em vários dos meus sites e, embora eu use uma CDN para servi-lo, simplesmente não faz sentido para o visitante baixar o jQuery a cada vez. O jQuery deve ser a estrutura JavaScript mais amplamente usada no mundo - não faria mais sentido se os navegadores apenas o instalassem por padrão?
Dessa forma, milhões de vezes por dia, um download do jQuery poderia ser impedido. Ou nos sites das próprias pessoas ou nas CDNs.
Tudo o que seria realmente necessário é algum tipo de declaração if como:
<!--[if jQuery gt 11]>
Existe algo que me ajudará a impedir que os usuários façam a viagem para a CDN se eles já tiverem o jQuery no cache de outro site?
Respostas:
Se você servir o jQuery a partir de uma CDN popular, como as Bibliotecas hospedadas do Google ou o cdnjs , ele não será baixado novamente se o visitante estiver em um site que o referenciou da mesma fonte (desde que a versão em cache não tenha expirado).
O jQuery é uma biblioteca popular, exatamente como você diz, mas é provável que não seja possível agrupá-lo no navegador por alguns motivos:
fonte
O jQuery não é apenas a única biblioteca JS popular, como um navegador poderia incluir várias versões. A CDN do Google atualmente lista: 42 versões do jQuery; 44 versões da interface do usuário do jQuery; 6 versões do jQuery Mobile.
É melhor permitir que os desenvolvedores da Web definam qual versão de uma biblioteca baixar com base nos requisitos de seus sites. Se você usa uma versão atual de produção do jQuery no seu site e carrega-a de uma CDN mais popular, é bem provável que seus visitantes já a tenham armazenado em cache de qualquer maneira.
fonte
O navegador é o motor, não é dever do projetista do motor descobrir que tipo de combustível e peças extras você colocará em seu carro e incluí-lo para você. Se eles fizessem isso, os navegadores seriam um enorme bloatware, porque a próxima pergunta será "por que apenas jQuery?" E acabaríamos mantendo repositórios de dependência.
Além disso, incluiremos todas as versões? E se alguém quiser usar uma versão personalizada? E se alguém não quiser usar essa biblioteca? Com que frequência eles mesclam e lançam os últimos lançamentos? Terminaremos com navegadores diferentes com jQuerys com versão diferente? Eles não podem nem implementar igualmente as funcionalidades padronizadas de HTML, CSS e JavaScript. E se um dos mantenedores do navegador não incluir uma biblioteca ou sua versão específica?
Os navegadores fornecem blocos de construção e um ambiente para você criar uma solução ainda não concluída.
Colocar o jQuery no navegador não tornará o site carregado incrivelmente rápido, porque hoje em dia esse não é o maior gargalo, no entanto, podemos concordar que o jQuery é uma biblioteca desnecessariamente grande, mas seu objetivo nunca era ser uma biblioteca rápida (considerando largura de banda). Existem muitas outras bibliotecas que foram projetadas especificamente para carregamento rápido e leves, como o Zepto .
Se você está realmente preocupado com o tamanho e uso da largura de banda do jQuery, não o use. Você já ouviu falar sobre o Vanilla JS ? É uma biblioteca ainda mais popular que é usada literalmente por quase todos, incluindo o próprio jQuery! E já realizou o seu sonho, porque está incluído em todos os navegadores!
fonte
Um motivo para usar uma biblioteca como o jQuery é a compatibilidade.
Os navegadores se tornaram mais compatíveis com os padrões, mas, usando a biblioteca jquery, você se fornece, não precisa se preocupar com as diferenças entre famílias e versões de navegadores
Fornecendo você mesmo o jquery, você tem certeza de ter uma API consistente.
Se tivermos o jquery embutido no navegador, você deverá verificar qual versão o usuário possui e voltaremos ao browserniffing e "Este site é melhor visualizado em ..."
Portanto, ter o jquery incorporado no navegador não faz sentido.
Além disso, o cache funciona, portanto, mesmo que o usuário ainda não tenha a sua versão do jquery, ele precisará ser baixado apenas uma vez.
fonte
Na verdade, acho que os respondentes aqui não entendem que a resposta para a pergunta é que os navegadores provavelmente devem incluir as bibliotecas mais usadas, os polyfills etc. no lado do cliente.
Como declara a pessoa que faz a pergunta, os comentários condicionais podem ser usados para garantir que aqueles que usam navegadores que não incluem jquery recebam uma versão apropriada.
O Jquery também inclui seu próprio suporte à compatibilidade com versões anteriores através da migração, permitindo comentários condicionais para dar suporte retroativo a alguém com uma versão empacotada de uma biblioteca jquery mais antiga sem fazer o download de uma nova biblioteca.
O argumento para incluí-los nos navegadores não seria apenas sobre a experiência e o custo do usuário, mas também sobre o planeta em que vivemos. O uso de dados é uma grande contribuição para a poluição global e garantir que a transferência desnecessária de dados seja minimizada pode ter um efeito dramático em nossa pegada de carbono.
Essencialmente, com o objetivo de adicionar alguns megabytes adicionais de inchaço de código em um navegador compactado - os mesmos dados estão sendo desnecessariamente transportados bilhões de vezes por dia.
Isso piora a experiência do usuário para todos na internet. E custa às grandes empresas enormes quantias de dinheiro.
Como desenvolvedor, você apenas criaria os fallbacks necessários, como fazemos atualmente para o IE etc., então qual é o problema - provavelmente deve ser incluído com certeza?
fonte