如何将外部JS脚本添加到VueJS组件?

我必须为支付网关使用两个外部脚本。

现在两者都放在文件中。index.html

但是,我不想在开始时加载这些文件。

仅当用户打开特定组件时才需要支付网关()。using router-view

有没有办法做到这一点?

谢谢。


答案 1

解决这个问题的一种简单而有效的方法是将外部脚本添加到组件的vue中。我将用Google Recaptcha脚本来说明你:mounted()

<template>
   .... your HTML
</template>

<script>
  export default {
    data: () => ({
      ......data of your component
    }),
    mounted() {
      let recaptchaScript = document.createElement('script')
      recaptchaScript.setAttribute('src', 'https://www.google.com/recaptcha/api.js')
      document.head.appendChild(recaptchaScript)
    },
    methods: {
      ......methods of your component
    }
  }
</script>

资料来源:https://medium.com/@lassiuosukainen/how-to-include-a-script-tag-on-a-vue-component-fe10940af9e8


答案 2

我已经下载了一些带有自定义js文件和jquery的HTML模板。我不得不将这些js附加到我的应用程序上,然后继续使用Vue。

找到这个插件,这是一种通过CDN和静态文件添加外部脚本的干净方法 https://www.npmjs.com/package/vue-plugin-load-script

// local files
// you have to put your scripts into the public folder. 
// that way webpack simply copy these files as it is.
Vue.loadScript("/js/jquery-2.2.4.min.js")

// cdn
Vue.loadScript("https://maps.googleapis.com/maps/api/js")