Acho que será difícil dizer por que um é preferido em relação ao outro até que as pessoas experimentem os aplicativos e vejam quais são os limites do fechamento.
Este artigo também pode ajudar na decisão. Lição chave: “O fechamento é um ecossistema. Não é como o jQuery, onde você apenas o usa aqui e ali para facilitar o acesso ou a manipulação do DOM. Se você deseja realmente usar o Closure, precisa se comprometer a usá-lo de verdade. ”
Dan Abramov
2019 O que é o fechamento do Google? : D
evilReiko
Respostas:
176
Vou tentar adicionar meu pedaço de informação.
Mais do que outra JS lib
Pelo que entendi, o Google Closure não é apenas outra biblioteca JS, mas também um conjunto de ferramentas que permitirá otimizar seu código JS. Trabalhar com o jQuery fornece boas ferramentas e uma biblioteca leve, mas não reduz o seu próprio código. O compilador Closure irá. O inspetor de fechamento também pode ser útil, pois, às vezes, o código minificado tem um comportamento diferente do original e é um problema para depuração. Ele se integra ao Firebug e aos testes de unidade de suporte, que são os melhores amigos dos desenvolvedores atualmente.
Documentação
Eu acho que, como qualquer nova biblioteca VS uma bem estabelecida, ela não terá a disponibilidade de toneladas de extensões e tutoriais que o jQuery possui. No entanto, ser promovido pelo Google deve garantir que o suporte e a confiabilidade sejam bons. A documentação e o tutorial atuais também parecem muito bons.
Recursos
Os recursos do Closure parecem decentes, e sua arquitetura modular também é promissora. Eu acho que o Google o usa internamente há muito tempo, o que significa que você pode esperar que todos os recursos básicos (e mais) sejam implementados, e provavelmente de uma maneira muito otimizada e escalável. Eles estão tentando apresentá-lo como o STL do JavaScript e, portanto, deveriam tê-lo aperfeiçoado.
Depois de analisar os recursos mais de perto, parece que esse pode ser um passo adiante no desenvolvimento de aplicativos da Web em comparação com as bibliotecas existentes como jQuery. Ele acha que beneficia desenvolvimentos internos no Google, mas coisas como detectar o estado online (consulte goog.events.OnlineHandler ), fácil integração de solicitações AJAX e ações de JS no histórico do navegador (consulte goog.History ) ou legiões de ótimos widgets eles fornecem (consulte o pacote goog.ui ) pode ajudar a todos nós a criar webapps ainda mais incríveis;)!
Ele vem com recursos de modelos que se integram ao Java (quem disse que o GWT ?), Portanto, isso também pode ser outra vantagem do Closure.
Fácil de usar
Finalmente, parece bem simples de usar. A sintaxe pode ser um pouco mais detalhada do que a curta função $ jQuery, mas com IDEs e preenchimento automático, não é um problema real. Além disso, eu diria que podemos esperar uma boa integração em IDEs como o Eclipse, vindos do Google.
EDIT: conforme solicitado, deixe-me dizer algumas palavras sobre a referência GWT. O Google Web Toolkit é uma biblioteca Java que permite criar interfaces da Web ativadas para AJAX e que gera (e otimiza) o código JavaScript necessário. Como o Google Closure permite criar modelos que podem ser usados no lado do cliente e no servidor (usando JavaScript e Java), meu palpite é que em breve será possível usá-los em conjunto (se já não for o caso).
Resposta detalhada e significativa, obrigado. Você poderia explicar o que significa essa referência ao GWT? Receio não ter entendido isso.
pestaa
1
Eu acho que você também deve mencionar a biblioteca de modelos (Soy) na sua seção "Mais que". O mesmo arquivo de modelo pode ser usado no servidor (Java) e no cliente. Realmente agradável implementação IMO. Significa que podemos simplesmente enviar JSON em consultas AJAX em vez de enviar HTML - economiza largura de banda.
A crítica não é FUD, e obrigado pelo link. A crítica está focada em como o código javascript não é ideal em todos os lugares. Isso pode ser válido, mas perde o ponto maior. Pelo que entendi, o Closure tem como alvo aplicativos JS realmente complexos (na escala do GMail), e isso tem algumas consequências - como nem todas as linhas são ótimas, pois tudo não é escrito por um único codificador brilhante. Mas, por outro lado, pode expandir ainda mais como uma estrutura de engenharia de software.
Peter S Magnusson
3
@nalpy Conforme sugerido pelos comentários, este artigo não mencionou que a biblioteca possui um COMPILER (não um minificador) que pode otimizar esses problemas de codificação.
Ant
30
No meu breve olhar para a API, considero as diferenças entre jQuery e Closure impressionantes.
O jQuery é basicamente apenas uma maneira simplificada de realizar muitas operações freqüentes de maneira entre navegadores.
Closure é uma estrutura muito nova, na medida em que fornece uma maneira entre navegadores de usar o <canvas> tag, por exemplo, e eles adicionaram novos eventos.
Portanto, isso é um acréscimo ao que normalmente fazemos com javascript, eles estão realizando muitas operações que as pessoas desejam fazer e colocando-as na API.
Por exemplo, eles têm um evento para saber se o estado online mudou. Então você pode dizer se o sistema está online.
Eles têm funções javascript que usam ferramentas como o Google Gears, o que continua com o fato de terem estendido o que pode ser feito com Javascript.
Levarei alguns dias para digerir todas as alterações, mas posso ver que isso pode ter um grande impacto em aplicativos da Web que podem ser desenvolvidos.
A maior vantagem da biblioteca de fechamento é que ela foi projetada para o Closure Compiler. Isso abre completamente novas possibilidades para o desenvolvimento de JavaScript ...
O compilador possui vários recursos interessantes:
Compila JavaScript legível em JavaScript legível por máquina compactada - possui a melhor taxa de compactação no modo "AVANÇADO".
A documentação do código com as tags JSDoc é importante: o compilador lê e você recebe avisos durante a compilação para erros de digitação na documentação, uso incorreto de um construtor @, tipo incorreto de variável , uso indevido de um campo anotado com @private e @protected, etc.
Se você escreve uma biblioteca JavaScript reutilizável, como OpenLayers ou Google Maps, exporta formalmente sua API pública - e o compilador otimiza seu código interno.
Os aplicativos finais podem ser compilados com a biblioteca - e as partes não utilizadas da biblioteca são removidas do código produzido. As dependências são resolvidas automaticamente pelo compilador.
O compilador aceita constantes para remover funcionalidades indesejadas - isso permite a compilação apenas para navegadores específicos, como o Mobile WebKit, para apenas um dos modos Quirks ou Strict, compilação sem suporte do IE6, etc.
A depuração com o FireBug é possível mesmo para a versão compilada do código fonte.
O compilador suporta a geração de módulos carregáveis dinamicamente, o que pode acelerar significativamente o carregamento do aplicativo final, porque o código da funcionalidade avançada pode ser carregado apenas quando necessário.
Editar : dê uma olhada neste vídeo do youtube pois ele pode responder melhor a algumas perguntas sobre o Google Closure.
Provavelmente, as melhores fontes de informações sobre o fechamento do Google são o grupo de discussão do projeto , wiki, páginas de documentos, demos e um livro ainda inacabado de Michael Bolin, que agora está disponível no site de livros de safari.
uma coisa que posso dizer imediatamente - há uma curva de aprendizado mais acentuada para closurevs, jQuerymas pode valer a pena devido à vastidão da biblioteca, organização clara e o benefício de usá-la juntamente com o compilador e a ferramenta de modelagem.
closureA biblioteca nesse sentido é mais do dojoque jQuery, e alguns conceitos foram emprestados dojo, de acordo com Michael Bolin.
o compilador de fechamento do google usa JSDoc sistema de documentação que simultaneamente (se criado pelo programador corretamente) fornece documentação e permite detectar muitos erros no momento da compilação.
enquanto os nomes das funções são mais detalhados que jQueryos do, o compilador reduz o código (usando várias táticas de otimização) e a verificação de tipo economiza um tempo considerável na depuração do código; portanto, o tempo para digitar os nomes mais longos provavelmente não é um problema. Ao mesmo tempo, nomes mais longos acrescentam legibilidade.
A biblioteca suporta navegadores em execução no modo peculiar, para que os scripts possam ser incorporados por outros sites usando o html "peculiar"
A biblioteca funciona com (mas não depende) de um sistema de templates javascript chamado soy que simplifica o preenchimento de documentos com conteúdo.
como o jQuerygoogle, closurepermite percorrer a estrutura dom com as consultas baseadas em strings usando um componente dedicado da biblioteca.
closureA biblioteca se baseia em espaços de nome delimitados por pontos, mais como Javaum recurso organizacional muito forte.
o uso desses espaços para nome terá uma sobrecarga no código não compilado, mas no código compilado essas coisas serão substituídas por nomes curtos de variáveis.
Eu estava procurando por outra coisa e acabei aqui, mas é bom saber like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.Você pode me vincular a alguma documentação relacionada a ela?
IsmailS
@ iSid: Eu acredito que ele fala goog.dom.DomHelper, mas eu pessoalmente não vejo uma função de consulta equivalente ao jQuery. @ Evgeny: Você pode nos dar mais detalhes?
Exhuma
@ iSid: Essa funcionalidade é fornecida pelo goog.dom.query , que não está documentado, assim como no restante do espaço para nome goog.dom.
bkirkbri
8
Acabei de publicar um artigo bastante exaustivo sobre o Google Closure que responde a essa pergunta no insideRIA .
Ótima comparação direta com o jQuery: "[...] o jQuery funciona muito bem e possibilita grandes coisas sem esforço e rápido; portanto, a" promessa "do Closure não é oferecer algoritmos melhores, mas sim um melhor, maneira organizada e sustentável de implantar aplicativos JavaScript [...] Coding in Closure significa pensar em princípios orientados a objetos, criar vários arquivos js, cada um representando uma única classe, organizar a arquitetura do aplicativo em pacotes e finalmente implantá-lo usando as ferramentas fornecidas , obtendo um arquivo JavaScript único, compactado e seguro [...] "
Alex
7
Talvez eu não esteja recebendo o jQuery, mas ainda não vi uma coleção real de widgets da interface do usuário (existem plugins, sim, mas você nunca sabe o quão bem eles são testados e, geralmente, não há um vencedor claro e / ou o plugin não possui) documentação).
De maneira mais geral, ele possui mais funcionalidades implementadas como parte do lançamento. Pode não ser uma grande coisa, mas fico irritado com o mar de plugins jQuery quando procuro algo tão simples quanto um módulo de histórico do ajax ou o preenchimento automático.
No geral, é uma enorme biblioteca + conjunto de ferramentas e eu vou me familiarizar com ela apenas para saber o que está disponível.
Sim, bem, a julgar a partir do site tem 6 widgets: Acordeão datePicker diálogo progressBar Slider Tabs
Nickolay
3
Eu usei o jQueryUI e achei muito fraco. Quase nem parece estar em desenvolvimento. Quando foi a última vez que um novo widget foi adicionado. Pode ser a coleção oficial de widgets, mas quem procura um widget para usar com o jQuery fica melhor pesquisando widgets de jQuery de terceiros.
Nosredna
2
O jQueryUI não é apenas um conjunto de widgets javascript, ele também possui uma ótima estrutura de CSS. Tem sido uma ótima ferramenta para mim ao criar páginas CRUD / admin. Além disso, muitos desses "Widgets" de fechamento são 1-2 liners no jQuery, nem vale a pena escrever um plug-in.
Jace Rhea
2
O apelo do JQuery não é um widget pré-fabricado. Está criando seus próprios widgets personalizados em tempo recorde. Eu raramente toco nos plug-ins, incluindo a interface do usuário.
quer
1
Aprecio a maioria das contribuições do Google para a comunidade de código aberto e tenho certeza de que tem algumas coisas legais, mas no geral acho o Closure volumoso, desgastado e deselegante. Se você deve transformar tudo em Java, suponho que seja absolutamente espasmódico.
Editar:
Justo. Eu realmente não comparei. O fechamento é como um armazém gigante com todas as ferramentas possíveis que você poderia querer localizar ... em algum lugar. Como o .NET ou uma enorme biblioteca Java. Depois de encontrar o que precisa, você pode encontrar itens altamente específicos que realizam trabalhos altamente específicos. E, em seguida, para a produção, você pode remover todo o lixo.
JQuery, por outro lado, é mais uma chave de fenda sônica facilmente modificada.
Gostaria de saber mais sobre a versão Java do Closure. Você tem um link para isso. Obrigado
Yazz.com
Procure 'tags de ironia'. Você encontrará a resposta lá.
precisa saber é o seguinte
0
A Biblioteca do Google Closure permite compilar e otimizar seu JavaScript. Não é uma biblioteca como o jQuery. O jQuery é algo que fornece funções que permitem que você escreva seu próprio javascript mais rapidamente.
O Google Closure ajudaria você a minimizar seu próprio código javascript para permitir uma entrega mais rápida pela Internet.
Para encurtar a história, o Google Closure é uma ferramenta, enquanto o jQuery é uma biblioteca semelhante ao Prototype.
Isso não é exatamente verdade. Google Closures também vem com sua própria biblioteca que é semelhante ao jQuery e que fornece funções e utilidades para escrever seu próprio código: code.google.com/closure/library/docs/tutorial.html
Respostas:
Vou tentar adicionar meu pedaço de informação.
Mais do que outra JS lib
Pelo que entendi, o Google Closure não é apenas outra biblioteca JS, mas também um conjunto de ferramentas que permitirá otimizar seu código JS. Trabalhar com o jQuery fornece boas ferramentas e uma biblioteca leve, mas não reduz o seu próprio código. O compilador Closure irá. O inspetor de fechamento também pode ser útil, pois, às vezes, o código minificado tem um comportamento diferente do original e é um problema para depuração. Ele se integra ao Firebug e aos testes de unidade de suporte, que são os melhores amigos dos desenvolvedores atualmente.
Documentação
Eu acho que, como qualquer nova biblioteca VS uma bem estabelecida, ela não terá a disponibilidade de toneladas de extensões e tutoriais que o jQuery possui. No entanto, ser promovido pelo Google deve garantir que o suporte e a confiabilidade sejam bons. A documentação e o tutorial atuais também parecem muito bons.
Recursos
Os recursos do Closure parecem decentes, e sua arquitetura modular também é promissora. Eu acho que o Google o usa internamente há muito tempo, o que significa que você pode esperar que todos os recursos básicos (e mais) sejam implementados, e provavelmente de uma maneira muito otimizada e escalável. Eles estão tentando apresentá-lo como o STL do JavaScript e, portanto, deveriam tê-lo aperfeiçoado.
Depois de analisar os recursos mais de perto, parece que esse pode ser um passo adiante no desenvolvimento de aplicativos da Web em comparação com as bibliotecas existentes como jQuery. Ele acha que beneficia desenvolvimentos internos no Google, mas coisas como detectar o estado online (consulte goog.events.OnlineHandler ), fácil integração de solicitações AJAX e ações de JS no histórico do navegador (consulte goog.History ) ou legiões de ótimos widgets eles fornecem (consulte o pacote goog.ui ) pode ajudar a todos nós a criar webapps ainda mais incríveis;)!
Ele vem com recursos de modelos que se integram ao Java (quem disse que o GWT ?), Portanto, isso também pode ser outra vantagem do Closure.
Fácil de usar
Finalmente, parece bem simples de usar. A sintaxe pode ser um pouco mais detalhada do que a curta função $ jQuery, mas com IDEs e preenchimento automático, não é um problema real. Além disso, eu diria que podemos esperar uma boa integração em IDEs como o Eclipse, vindos do Google.
EDIT: conforme solicitado, deixe-me dizer algumas palavras sobre a referência GWT. O Google Web Toolkit é uma biblioteca Java que permite criar interfaces da Web ativadas para AJAX e que gera (e otimiza) o código JavaScript necessário. Como o Google Closure permite criar modelos que podem ser usados no lado do cliente e no servidor (usando JavaScript e Java), meu palpite é que em breve será possível usá-los em conjunto (se já não for o caso).
fonte
No meu breve olhar para a API, considero as diferenças entre jQuery e Closure impressionantes.
O jQuery é basicamente apenas uma maneira simplificada de realizar muitas operações freqüentes de maneira entre navegadores.
Closure é uma estrutura muito nova, na medida em que fornece uma maneira entre navegadores de usar o
<canvas>
tag, por exemplo, e eles adicionaram novos eventos.Portanto, isso é um acréscimo ao que normalmente fazemos com javascript, eles estão realizando muitas operações que as pessoas desejam fazer e colocando-as na API.
Por exemplo, eles têm um evento para saber se o estado online mudou. Então você pode dizer se o sistema está online.
Eles têm funções javascript que usam ferramentas como o Google Gears, o que continua com o fato de terem estendido o que pode ser feito com Javascript.
Levarei alguns dias para digerir todas as alterações, mas posso ver que isso pode ter um grande impacto em aplicativos da Web que podem ser desenvolvidos.
fonte
A maior vantagem da biblioteca de fechamento é que ela foi projetada para o Closure Compiler. Isso abre completamente novas possibilidades para o desenvolvimento de JavaScript ...
O compilador possui vários recursos interessantes:
Para obter detalhes, consulte: http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html
fonte
Editar : dê uma olhada neste vídeo do youtube pois ele pode responder melhor a algumas perguntas sobre o Google Closure.
Provavelmente, as melhores fontes de informações sobre o fechamento do Google são o grupo de discussão do projeto , wiki, páginas de documentos, demos e um livro ainda inacabado de Michael Bolin, que agora está disponível no site de livros de safari.
uma coisa que posso dizer imediatamente - há uma curva de aprendizado mais acentuada para
closure
vs,jQuery
mas pode valer a pena devido à vastidão da biblioteca, organização clara e o benefício de usá-la juntamente com o compilador e a ferramenta de modelagem.closure
A biblioteca nesse sentido é mais dodojo
quejQuery
, e alguns conceitos foram emprestadosdojo
, de acordo com Michael Bolin.o compilador de fechamento do google usa
JSDoc
sistema de documentação que simultaneamente (se criado pelo programador corretamente) fornece documentação e permite detectar muitos erros no momento da compilação.enquanto os nomes das funções são mais detalhados que
jQuery
os do, o compilador reduz o código (usando várias táticas de otimização) e a verificação de tipo economiza um tempo considerável na depuração do código; portanto, o tempo para digitar os nomes mais longos provavelmente não é um problema. Ao mesmo tempo, nomes mais longos acrescentam legibilidade.A biblioteca suporta navegadores em execução no modo peculiar, para que os scripts possam ser incorporados por outros sites usando o html "peculiar"
A biblioteca funciona com (mas não depende) de um sistema de templates javascript chamado
soy
que simplifica o preenchimento de documentos com conteúdo.como o
jQuery
google,closure
permite percorrer a estrutura dom com as consultas baseadas em strings usando um componente dedicado da biblioteca.closure
A biblioteca se baseia em espaços de nome delimitados por pontos, mais comoJava
um recurso organizacional muito forte.o uso desses espaços para nome terá uma sobrecarga no código não compilado, mas no código compilado essas coisas serão substituídas por nomes curtos de variáveis.
fonte
like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.
Você pode me vincular a alguma documentação relacionada a ela?goog.dom.DomHelper
, mas eu pessoalmente não vejo uma função de consulta equivalente ao jQuery. @ Evgeny: Você pode nos dar mais detalhes?Acabei de publicar um artigo bastante exaustivo sobre o Google Closure que responde a essa pergunta no insideRIA .
... Fechamento rulez! ^ _ ^
fonte
Talvez eu não esteja recebendo o jQuery, mas ainda não vi uma coleção real de widgets da interface do usuário (existem plugins, sim, mas você nunca sabe o quão bem eles são testados e, geralmente, não há um vencedor claro e / ou o plugin não possui) documentação).
O fechamento possui, entre outras coisas, uma coleção de widgets (consulte a guia demos), incluindo, digamos, botões sem imagem usados no gmail.
De maneira mais geral, ele possui mais funcionalidades implementadas como parte do lançamento. Pode não ser uma grande coisa, mas fico irritado com o mar de plugins jQuery quando procuro algo tão simples quanto um módulo de histórico do ajax ou o preenchimento automático.
No geral, é uma enorme biblioteca + conjunto de ferramentas e eu vou me familiarizar com ela apenas para saber o que está disponível.
fonte
Aprecio a maioria das contribuições do Google para a comunidade de código aberto e tenho certeza de que tem algumas coisas legais, mas no geral acho o Closure volumoso, desgastado e deselegante. Se você deve transformar tudo em Java, suponho que seja absolutamente espasmódico.
Editar:
Justo. Eu realmente não comparei. O fechamento é como um armazém gigante com todas as ferramentas possíveis que você poderia querer localizar ... em algum lugar. Como o .NET ou uma enorme biblioteca Java. Depois de encontrar o que precisa, você pode encontrar itens altamente específicos que realizam trabalhos altamente específicos. E, em seguida, para a produção, você pode remover todo o lixo.
JQuery, por outro lado, é mais uma chave de fenda sônica facilmente modificada.
fonte
A Biblioteca do Google Closure permite compilar e otimizar seu JavaScript. Não é uma biblioteca como o jQuery. O jQuery é algo que fornece funções que permitem que você escreva seu próprio javascript mais rapidamente.
O Google Closure ajudaria você a minimizar seu próprio código javascript para permitir uma entrega mais rápida pela Internet.
Para encurtar a história, o Google Closure é uma ferramenta, enquanto o jQuery é uma biblioteca semelhante ao Prototype.
fonte