最近,我不得不将第三方代码段加载到我的Nuxt应用程序中。该代码段如下所示:
<link rel="stylesheet" href="https://some-website.com/stuff.css">
<div class="some-class">
<div>Some content...</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<script src="https://some-other-website.com/stuff.js"></script>
我需要加载一个样式表和几个脚本。我将分享我如何使用Nuxt完成此操作以及实现此操作的不同方法。
您可以使用vue-meta的head()方法插入脚本。幸运的是,Nuxt已预装了vue-meta。
这会将脚本和样式都插入页面的头部。
// nuxt.config.js OR pages/some/page.vue
export default {
head() {
return {
script: [
{
src: "https://some-website.com/stuff.js"
}
],
link: [
{
rel: "stylesheet",
href:
"https://some-site.com/stuff.css"
}
]
}
}
}
您可以在nuxt.config.js上直接执行此操作,也可以直接在Nuxt页面上执行(如果在nuxt.config.js内执行此操作,则更改将应用于所有页面)。
上面的代码会将脚本添加到head元素。
如果您希望将脚本添加到body中,只需添加body: true即可。?
script: [
{
src: "https://some-website.com/stuff.js",
body: true
}
]
Vue-meta允许您添加延迟 或 异步加载的脚本。如果要使用async和defer加载它,则可以添加async: true 和 defer: true:
script: [
{
src: "https://some-website.com/stuff.js",
body: true,
async: true,
defer: true
}
]
这等效于<script type="text/javascript" src="https://some-website.com/stuff.js" async defer> </ script>
如果您想要vue-meta的更多“手动”替代方法,则可以使用Vue的安装生命周期通过DOM vanilla JS方式插入它:
// pages/some/page.vue
export default {
mounted() {
const script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://some-website.com/stuff.js";
document.body.appendChild(script);
}
}
这个技巧可以做到:
有时,您必须在不使用npm的情况下加载第三方库。幸运的是,Nuxt提供了一种使用vue-meta的简便方法。另外,还可以使用Vue的mounted生命周期方法修改DOM以便自己插入。后者适用于vanilla(原生)Javascript。
谢谢阅读。编码愉快!