Eu tenho que usar dois scripts externos para os gateways de pagamento. No momento, ambos são colocados no index.html
arquivo. No entanto, não quero carregar esses arquivos no início. O gateway de pagamento é necessário apenas quando o usuário abre um componente específico ( using router-view
).
Existe alguma maneira de conseguir isso?
javascript
vue.js
vuejs2
vue-component
vue-router
Gijo Varghese
fonte
fonte
/public/index.html
para fazer isso?Respostas:
Uma maneira simples e eficaz de resolver isso é adicionar seu script externo ao valor
mounted()
do seu componente. Ilustrarei você com o script do Google Recaptcha :Fonte: https://medium.com/@lassiuosukainen/how-to-include-a-script-tag-on-a-vue-component-fe10940af9e8
fonte
created()
método não pode obter documento, o usomounted()
em vezrecaptchaScript.async = true
antes de anexá-lo à cabeça.recaptchaScript.defer = true
pode ser também adequado para alguémFiz o download de um modelo HTML que vem com arquivos js personalizados e jquery. Eu tive que anexar esses js ao meu aplicativo. e continue com o Vue.
Encontrado este plug-in, é uma maneira limpa de adicionar scripts externos via CDN e de arquivos estáticos https://www.npmjs.com/package/vue-plugin-load-script
fonte
usando o webpack e o vue loader, você pode fazer algo assim
aguarda o carregamento do script externo antes de criar o componente, para que vars globares etc. estejam disponíveis no componente
fonte
Você está usando um dos modelos iniciais do Webpack para vue ( https://github.com/vuejs-templates/webpack )? Ele já vem configurado com o vue-loader ( https://github.com/vuejs/vue-loader ). Se você não estiver usando um modelo inicial, precisará configurar o webpack e o vue-loader.
Você pode então
import
seus scripts para os componentes relevantes (arquivo único). Antes disso, você precisaexport
dos seus scripts o que desejaimport
para seus componentes.Importação do ES6:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
- http://exploringjs.com/es6/ch_modules.html
~ Editar ~
Você pode importar desses invólucros:
- https://github.com/matfish2/vue-stripe
- https://github.com/khoanguyen96/vue-paypal-checkout
fonte
Você pode usar o pacote vue-head para adicionar scripts e outras tags ao cabeçalho do seu componente vue.
É tão simples quanto:
Confira este link para mais exemplos.
fonte
Se você estiver tentando incorporar scripts js externos ao modelo de componente vue.js., siga abaixo:
E Vue me mostrou este erro:
Os modelos devem ser responsáveis apenas pelo mapeamento do estado para a interface do usuário. Evite colocar tags com efeitos colaterais em seus modelos, como, pois eles não serão analisados.
<script type="application/javascript" defer src="..."></script>
Você pode perceber o
defer
atributo. Se você quiser saber mais, assista a este vídeo de Kylefonte
Você pode carregar o script necessário com uma solução baseada em promessa:
Por favor note que
this.$root
é um pouco hacky e você deve usar um vuex ou eventHub solução para os eventos globais em vez.Você transformaria o item acima em um componente e o utilizava sempre que necessário; ele carregará o script apenas quando usado.
fonte
Isso pode ser feito simplesmente assim.
fonte
Para manter os componentes limpos, você pode usar mixins.
No seu componente, importe o arquivo mixin externo.
fonte
A resposta principal de criar tag no montado é boa, mas há alguns problemas: Se você alterar seu link várias vezes, ele repetirá a criação de tags repetidamente.
Então, eu criei um script para resolver isso, e você pode excluir a tag, se desejar.
É muito simples, mas pode economizar seu tempo para criá-lo sozinho.
E você pode usá-lo assim:
fonte
Você pode usar o vue-loader e codificar seus componentes em seus próprios arquivos (componentes de arquivo único). Isso permitirá que você inclua scripts e css em uma base de componente.
fonte
A solução mais simples é adicionar o script no
index.html
arquivo do seu projeto vueindex.html:
fonte