Module to dynamically load external js into spa
$ npm install vue-script-insert
<script>
import {VueScriptInsert} from 'vue-script-insert'
export default {
components: {
VueScriptInsert
},
・・・
}
</script>
//plugins/vue-script-insert.js
import Vue from 'vue'
import {VueScriptInsert} from 'vue-script-insert/src/installer.js'
Vue.use(VueScriptInsert)
//nuxt.config.js
export default {
plugins: [
'plugins/vue-script-insert'
],
}
It works by setting prop to the tag. The tag containing the script is passed to url, the id attribute of the html tag is passed to id, and the css style is passed to layout.
<VueScriptInsert :url="adv_url" :id="adv_id" :layout="adv_layout"></VueScriptInsert>
prop | type | description |
---|---|---|
url | String | Tag strings containing <script>. |
id | String | ID (unique identifier) for an element in the id attribute of an HTML tag. |
layout | Object | CSS styles, passed as an associative array |
//Vue
<template>
<VueScriptInsert :url="adv_url" :id="adv_id" :layout="adv_layout"></VueScriptInsert>
</template>
<script>
import {VueScriptInsert} from 'vue-script-insert'
export default {
components: {
VueScriptInsert
},
data() {
return {
adv_url:'tag',
adv_id:'id',
adv_layout:{
width: "1080px",
height :"110px",
},
}
}
}
</script>
//Nuxt
<template>
<VueScriptInsert :url="adv_url" :id="adv_id" :layout="adv_layout"></VueScriptInsert>
</template>
<script>
export default {
data() {
return {
adv_url:'tag',
adv_id:'id',
adv_layout:{
width: "1080px",
height :"110px",
},
}
}
}
</script>
Detailed layout can be specified by using ids in <style> tags. ※ At this point, you need to specify the layout of the iframe.
<style>
#id iframe{
・・・
}
</style>
Bug reports and pull requests are welcome on GitHub at https://github.com/tf0101/vue-script-insert.