Unfortunately, no, you can't add a <script>
tag to a specific component via template.
In your case you have some options:
1: Use NPM
Propertly install the dependency using npm
- Pros: proper usage of NPM and Webpack; scoped definition;
- Cons: the script must be available as a NPM package.
- Note: when available this is the recommended approach.
Steps:
2: Add <script>
tag to index.html
Locate and a dd the <script>
tag to your index.html
- Pros: the
<script>
tag is clearly (and declaratively) added to the HTML source. The script will only be loaded once.
- Cons: the script will be globally loaded.
- Steps:
- Just add the
<script type="text/javascript" src="https://cdn.datatables.net/v/dt/dt-1.10.16/sl-1.2.5/datatables.min.js"></script>
to the end of the index.html
file, preferably right before </body>
.
3: Create the <script>
tag programatically
The other alternative is to create the script
tag programatically at the component, when the component is lodaded.
- Pros: the code stays in the component only. Your external script will be loaded only when the component is loaded.
- Cons: the script still will be globally available once it is loaded.
Steps/Code:
<script>
export default {
name: 'Index',
data() {
return {
}
},
mounted() {
if (document.getElementById('my-datatable')) return; // was already loaded
var scriptTag = document.createElement("script");
scriptTag.src = "https://cdn.datatables.net/v/dt/dt-1.10.16/sl-1.2.5/datatables.min.js";
scriptTag.id = "my-datatable";
document.getElementsByTagName('head')[0].appendChild(scriptTag);
}
}
</script>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…