Dado o desenvolvimento mais simples do jQuery, quando comparado ao JavaScript nativo, o que faz as pessoas renunciarem a bibliotecas como o jQuery?
Isso ocorre porque o jQuery tem limitações ou é lento? Quero dizer, se o jQuery é tão fácil comparado ao javascript nativo, por que as pessoas ainda precisam usar o javascript puro?
XMLHttpRequest
vsActiveXObject
, ouaddEventListener
vsattachEvent
, oucss selectors
vsxpath selectors
vsno selector support
, etc ...) Nos navegadores recentes, a maioria desses problemas não ocorre. existem, porque seguem os mesmos padrões.Respostas:
Vamos conversar sobre carros.
Oh espere, nós já fizemos - lembra daquela vez que nos conhecemos, há algum tempo atrás? Nós conversamos sobre carros. Na verdade, você parecia ser um especialista em carros. Você foi capaz de explicar detalhadamente tudo o que é certo, errado e empolgante sobre a última corrida de Fórmula 1. Você sabia de cor todos os modelos da Lamborghini, incluindo preço e disponibilidade. Você até pensou em comprar seu próprio Ferrari 599 GTB Fiorano e estava economizando (aposto que o jantar do bife não ajudou muito).
Ao explicar as falhas da Toyota com uma voz ótima e excitada, você pulou de repente da cadeira e gritou no ar, agitando os punhos: "Droga, sou um magnífico especialista em todas as coisas relacionadas aos carros!" eu vou ser mecânico de automóveis! "
E assim você foi. Você teve uma entrevista, o Chefe ficou tão impressionado quanto eu com o seu conhecimento e você foi contratado. O primeiro cliente entrou. Sua embreagem estava quebrada. Você inspecionou e não sabia o que fazer. Por uma questão de fato, você não tinha absolutamente nenhuma idéia de como seguir os conselhos que o Chefe lhe deu. Você foi demitido.
Mas como pode ser isso!? Você sabe tudo sobre carros! Exceto por ... tudo sobre carros. Você pode muito bem saber que o carro dos seus sonhos tem um motor V12, mas não sabe o que isso realmente significa.
Então você não é um mecânico de automóveis - você é um entusiasta de automóveis. E até você aprender como os carros funcionam , você continuará sendo um entusiasta.
Agora deixe-me perguntar. Como
$.fn.text
funciona? E que tal$.fn
? O que eles realmente significam? Como$(something)
retornar uma coisa gigantesca contendo coisas, e o que é exatamente essa coisa? Você pode replicar a funcionalidade deles, pelo menos um pouco, em teoria? Você consegue lidar sem o jQuery?Dizer que "o JavaScript nativo é difícil" é apenas ... falso. Em primeiro lugar, porque o JavaScript como idioma não tem nada a ver com o DOM , que é principalmente o que o jQuery abstrai. Segundo, porque depois de aprender um pouco sobre o DOM, você já pode navegar pelos bugs mais comuns entre navegadores. Mas apenas um pequeno segredo - tudo é difícil no começo. A divisão longa era uma cadela na 5ª série.
Como uma segunda analogia para esta resposta: jQuery é JavaScript-DOM (não JavaScript a linguagem, apenas o DOM) como
Array.prototype.forEach
éfor
. Funciona em 99% dos casos. E isso funciona bem. Mas para esse 1% que não é coberto, você precisa saber como usar ofor
loop, mesmo que seja prático. Essa resposta inteira é baseada no lado "mais puro" da pergunta, e nem mesmo no lado técnico (tamanho da biblioteca, por exemplo, e várias outras coisas, conforme explicado na resposta de Michael Dorrant). Porque eu amo JavaScript e quando as pessoas simplesmente o deixam de lado casualmente dizendo "pah, esses javascript tolos" e agitando luvas brancas sofisticadas, tudo se resume à moralidade.Se você pode aceitar o fato de que sempre será um entusiasta do JavaScript, quem sou eu para impedi-lo? Mas se você quer ser um programador JavaScript, primeiro precisa ter o conhecimento necessário para escolher pelo menos entre usar o jQuery (ou qualquer outra biblioteca) e não usar uma biblioteca. Aprenda o DOM. Aprenda como usá-lo. Escreva sua própria pequena biblioteca ou apenas uma coleção de funções auxiliares. E uma vez que você conhece o DOM e escolhe usar o jQuery - velocidade divina. A preguiça é concedida para aqueles que trabalharam duro.
fonte
Razões que eu sei:
Quando a necessidade for extremamente mínima, diga 1 clique.
Quando a velocidade do download é crítica e a biblioteca jQuery é muito grande E você não precisa escrever muito código (personalizado) para substituí-lo.
Ao integrar com outras tecnologias, às vezes js brutos é melhor.
Ao trabalhar em um sistema legado (aka 'produção') já escrito em js com padrões estabelecidos.
fonte
O jQuery é simplesmente uma estrutura - um conjunto de ferramentas escritas em JavaScript. Ao usar esse conjunto de ferramentas, você ainda está usando JavaScript. Algumas pessoas preferem escrever JavaScript usando as ferramentas fornecidas pelo jQuery, algumas optam por não, outras escolhem outros conjuntos de ferramentas.
Alguns motivos pelos quais você pode escrever JavaScript "puro" sem o jQuery:
fonte
O jQuery, como qualquer biblioteca ou estrutura, adiciona outra camada de bugs . Adoro isso, mas também perdi um dia procurando um bug que acabou por estar no núcleo do jQuery e não no meu código (uma ocasião rara, mas não tão rara).
Fora isso, não encontro outro motivo para não usá-lo:
MAS nunca deve ser usado como um substituto do conhecimento de Javascript. Se você não souber como fazê-lo em Javascript puro, poderá se safar inicialmente de uma biblioteca, mas, a longo prazo, pagará por isso.
E é claro que todos nós estamos travados em combate mortal com o IE6 há alguns anos, e não vamos facilmente largar nossos truques da velha escola em favor de um novo brinquedo brilhante.
fonte
The huge gallery of plugins help me write prototypes in very short times
... Apenas protótipos, evito-os no código de produção quando possível. Existem alguns plugins com excelente código é claro, mas você tem que olhar muito difícil para eles ...No ambiente do navegador, você precisa de uma ferramenta de normalização entre navegadores. Essa ferramenta vem em dois sabores
Geralmente, você pode usar esses utilitários de uma das três maneiras
addClass
ou emsetText
todo o seu código quando e onde você precisar delasVocê precisa de algum mecanismo de normalização, caso contrário, obtém zero suporte a vários navegadores.
Quanto ao uso de um existente, tudo bem. Eu apenas não usaria jQuery. Pessoalmente, atualmente estou escrevendo minha própria biblioteca (o DOM-shim corrige os navegadores sem expor uma API proprietária estrangeira. Transforma seus navegadores em um único navegador padronizado e bem comportado).
fonte
Se você não precisa de abstração do DOM, suporte a vários navegadores e legados - você pode facilmente ficar sem o jQuery.
É o caso de você estar desenvolvendo extensões de navegador, scripts greasemonkey (às vezes), itens de processamento de números, desenvolvendo para Node.js. ou outros ambientes que não sejam de navegador.
fonte
Juntamente com as outras respostas aqui, especialmente as de Michael Durrant , eu percebi que a velocidade é uma das principais razões para eu ocasionalmente optar por usar JavaScript bruto.
Ultimamente, tenho trabalhado em muitas animações ou outras tarefas que exigem muita CPU e, algumas vezes, o JavaScript bruto é muito, muito mais rápido do que se eu passasse pelo jQuery.
Um exemplo é onde eu queria alterar a opacidade de um
position: fixed
elemento em relação à distância em que uma página rolava um usuário. O efeito foi muito lento quando usei o jQuery para fazer isso, fazendo com que a rolagem ficasse irregular e o efeito de desbotamento fosse arruinado. Eu mudei para o uso de JavaScript direto e tudo estava suave como seda, exceto no IE <= 8.fonte
Preciso preceder minha resposta com alguma honestidade aberta. Eu amo jQuery. Isso facilita enormemente minha vida e torna o código JavaScript mais declarativo, e é assim que acredito que as coisas devem funcionar.
O jQuery faz muitas coisas ...
Sim, você pode adicionar plugins
Sim, você pode estender os seletores
Sim , simplifica a animação
mas o jQuery não faz tudo
Você já tentou trabalhar em vários contextos de janela com o jQuery? O jQuery é péssimo ao lidar com diferentes contextos de janela, porque retém o original
window
e odocument
contexto da janela em que foi chamado.Eu escrevi um código aqui e ali para criar pop-ups *, e o jQuery pode simplesmente atrapalhar o que estou tentando realizar. A adição de uma nova referência ao jQuery na janela filho geralmente pode piorar as coisas, dificultando a identificação de qual contexto do jQuery está sendo usado.
* pense na pop-up do Gmail para compor um email em uma nova janela, não publicidade com spam
Use-o quando simplificar o código
O momento de usar o jQuery é quando você pode tornar seu código mais simples, mais curto, mais legível e mais rápido.
O momento de não usar o jQuery é quando ele não torna seu código mais simples, mais curto, mais legível ou mais rápido. Se você precisar ajustar os tempos de carregamento, pode não querer usar o jQuery devido à sobrecarga do evento.
fonte
Como você deve saber, o jQuery é uma estrutura de uso geral que fornece muitos métodos que muitos de nós não usamos em nossos projetos. (Alguns deles eu ainda não usei.)
Há duas razões principais para não usar o jQuery ou outras estruturas bem estabelecidas.
1. O projeto não é grande ou complexo o suficiente para usar essa estrutura: nesse caso, o codificador toma uma decisão informada com base em sua experiência e conhecimento em JavaScript. Isso o ajudará a reduzir o peso da página e também mais controle sobre o código.
2. O codificador desenvolve sua própria estrutura . Vi um projeto em minha empresa que possui sua própria estrutura JavaScript. A razão pela qual eles citam é que, se eles estão usando jQuery e há algum bug para corrigir, eles precisam esperar até a próxima versão. Além disso, se houver um recurso a ser adicionado, eles precisam solicitar à equipe do jQuery ou adicionar um plug-in, mesmo que torná-lo um plug-in não seja uma boa idéia (eles deram o exemplo de ter usado
.live
algo semelhante em seus mesmo antes de ser oficialmente adicionado ao JQuery). Ter sua própria estrutura fornece mais controle ao código. A desvantagem é que você precisa reinventar a roda em relação a problemas de compatibilidade do navegador etc. Além disso, se o processo de desenvolvimento não for bom, sua estrutura inchará e aumentará o tempo para mantê-la.fonte
Mike
Acho que as pessoas se opõem ao uso de algumas bibliotecas devido à dependência dessa solução de infraestrutura / biblioteca para executar alguma tarefa.
Mas tenhamos cuidado para lembrar que as línguas vêm e vão como bibliotecas a longo prazo.
Então talvez seja o escopo temporal. Talvez as pessoas hesitem em investir em uma biblioteca que talvez não esteja lá - ou que tenham tanto impulso a longo prazo.
Eu mesmo? Não tenho objeção a usar o JQuery em particular. Também olho para o exemplo Box2d.js ou three.js e preferiria adotá-los mesmo que a vida útil a curto prazo do que perder os frutos que eles têm a oferecer.
Mike bottom line é que existe um risco no prazo de validade de uma biblioteca que você escolher, e acho que alguns membros da comunidade javascript podem ter sofrido perdas devido a uma biblioteca ou projeto chegando ao fim, e podem ter acabado de dizer - nunca mais.
fonte
Eu diria que a questão principal é que mais e mais pessoas (a grande maioria?) Não sabem mais como codificar em JavaScript. Se o jQuery não pode fazer algo, eles não podem fazê-lo.
Está chegando ao ponto em que exemplos simples de javascript estão se tornando difíceis de encontrar. Nada contra o jQuery; é uma ótima estrutura. Eu tive muitas boas idéias com isso, mas as pessoas deveriam aprender JavaScript primeiro e depois aprender uma estrutura. Pessoalmente, acho minha estrutura mais flexível e melhor se adapta às minhas necessidades, e sim, às vezes, reinvento a roda, mas o controle total e o controle sobre as correções de bugs é um grande benefício, desde que você esteja disposto a colocar o trabalho em aprender JavaScript.
Não apenas isso. Conhecer o JavaScript básico torna muito mais divertido brincar e experimentar os novos recursos, em vez de esperar por uma implementação baseada em estrutura. Além disso, eu não culpo o jQuery por isso, pois é principalmente uma biblioteca DOM , mas pode ser difícil escalar em grandes projetos. Outras estruturas fazem um trabalho melhor nisso; Protótipo vem à mente.
Em suma, é uma ótima estrutura, mas não o objetivo final de todas as pessoas.
fonte
Posso acrescentar mais dois motivos que não foram mencionados:
Quando escolho novas tecnologias, muitas vezes, eu começava com construções de nível inferior antes de passar para construções de nível superior. Sou basicamente um desenvolvedor de C ++ / C #, mas há pouco tempo quando comecei a brincar com HTML / CSS / JavaScript, optei por não usar nenhuma estrutura, porque queria entender primeiro a tecnologia (ou seja, o JavaScript própria linguagem) sobre a qual essas estruturas são construídas.
Eu não sei o quão comum isso é, mas para mim parece que há muitas pessoas que, quando veem a próxima estrutura / tecnologia / linguagem, sua primeira resposta é: "não é outra API para eu aprender!" Eles não se importam com o quão fácil é o jQuery, mas simplesmente o vêem no caminho entre eles e entregando trabalho usando seus métodos "verdadeiros e experimentados". Essa é a mesma categoria de pessoas que se recusam a usar a biblioteca Boost ou qualquer outra da STL e continuam a usar o malloc para praticamente tudo. Você perguntou por que eles selecionam JavaScript puro em vez do jQuery e, na realidade, nunca fizeram a escolha porque, na maioria das vezes, se recusaram a avaliar o jQuery e estão perfeitamente satisfeitos com o atual ritmo de desenvolvimento, por mais lento que seja.
fonte
jQuery é uma biblioteca escrita em e para JavaScript. A idéia é simplificar todas as coisas difíceis / tediosas do JavaScript, acelerando o tempo de desenvolvimento e aumentando a probabilidade de seus scripts funcionarem em vários navegadores.
O que torna o jQuery preferível usar:
Aqui estão os motivos que tornam o JavaScript preferível ao invés do jQuery:
Devido a esses motivos, gosto de usar JavaScript para evitar a estrutura do jQuery. É muito melhor aprender JavaScript, dependendo da biblioteca ...
Mesmo se você quiser estendê-los, precisará escrever código em JavaScript. O que também é uma grande conversa. Os desenvolvedores ficam dependentes dessas bibliotecas, para ter controle sobre os projetos, o JavaScript é melhor do que usar estruturas.
fonte
Acho que as pessoas usam o jQuery porque é mais simples, mais fácil e mais poderoso, e porque as ajuda a esquecer o IE. Além disso, para funcionalidades personalizadas, as pessoas usam javascript. Tente consultar o DOC para obter mais detalhes
fonte