Alguém pode me explicar por que existem 2 inclusões de jQuery no kit EmberJS Starter
-
15-11-2019 - |
Pergunta
Acabei de olhar o index.html que vem com o kit inicial EmberJS que você obtém clicando em "Baixar Kit Inicial" em http://emberjs.com/
Há uma parte estranha do código no final da tag body (carregando scripts no último momento):
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.6.1.min.js"%3E%3C/script%3E'))</script>
<script src="js/libs/ember-0.9.5.min.js"></script>
<script src="js/app.js"></script>
Ok, entendi os dois últimos, carregue a biblioteca ember e execute o aplicativo ember.Eu também entendo o primeiro, pegue o jQuery do CDN do Google, mas não entendo por que você teria a segunda tag de script!Isso é apenas para que você não dependa do CDN do Google e envie sua própria cópia do jQuery?
Alguém pode me dizer se essa é a melhor prática ou se devo registrar um bug no EmberJS para que eles removam isso do kit inicial.
Obrigado
Solução
Acho que o autor está pensando que, caso o jquery não consiga carregar a partir do googleapis, por segurança, inclua uma versão local.Observe o
!window.jQuery
Outras dicas
Se o jQuery for carregado a partir da primeira tag de script, então window.jQuery
avaliaria como verdadeiro.Por isso, !window.jQuery
seria avaliado como falso e a expressão na segunda linha entraria em curto-circuito.No entanto, se o jQuery não carregou desde a primeira linha, então !window.jQuery
será verdadeiro e o documento gravará a tag de script para uma versão hospedada de forma privada.Isso permite que o cliente carregue o jQuery das APIs do Google, o que provavelmente será mais rápido, mas oferece uma alternativa caso o carregamento falhe.
Você pode querer ler tipo coerção em JavaScript.