[英]Include external javascript file in a nuxt.js page
我有一个相对简单的问题。
我正在尝试在 Nuxt.js 中实现这个 codepen 的小部件。
这是我的代码,如果我使用 RAW HTML,它可以正常工作:
<!DOCTYPE html>
<html>
<head></head>
<body>
<dev-widget data-username="saurabhdaware"></dev-widget>
<script src="https://unpkg.com/dev-widget@1.0.3/dist/card.component.mjs" type="module"></script>
</body>
</html>
但是当我尝试在我的 nuxt.js 项目中包含这个开发小部件时,在我的一个页面中,它不起作用。
这是我的代码:
<template>
<div class="container">
<div>
<dev-widget data-username="saurabhdaware"></dev-widget>
</div>
</div>
</template>
<script>
export default {
layout: "default",
};
</script>
<script src="https://unpkg.com/dev-widget@1.0.3/dist/card.component.mjs" type="module"></script>
我不断收到错误消息:
Unknown custom element: < dev-widget >
知道我在这里做错了什么吗?
@kiyuku1 的答案会起作用,但如果我们只想在一个 nuxt.js 页面中包含一个 js(或 mjs)文件,而不是在全局范围内,这是一个完整的解决方案:
<template>
<div class="container">
<div>
<dev-widget data-username="saurabhdaware"></dev-widget>
</div>
</div>
</template>
<script>
export default {
layout: "default",
head: {
script: [
{
type: 'module',
src: 'https://unpkg.com/dev-widget@1.0.3/dist/card.component.mjs'
}
]
},
};
</script>
添加为全局
导航到 nuxt.config.js 文件。 它将脚本标记添加到您的 Nuxt 应用程序中的所有页面。
export default {
head: {
script: [
{
src: "https://code.jquery.com/jquery-3.5.1.min.js",
},
],
}
// other config goes here
}
如果要在关闭</body>
而不是<head>
标记之前添加脚本标记,可以通过添加body: true
。
script: [
{
src: "https://code.jquery.com/jquery-3.5.1.min.js",
body: true,
},
您还可以像这样向脚本标签添加异步、跨域属性。
script: [
{
src: "https://code.jquery.com/jquery-3.5.1.min.js",
async: true,
crossorigin: "anonymous"
},
],
输出
<script data-n-head="ssr" src="https://code.jquery.com/jquery-3.5.1.min.js"
crossorigin="anonymous" async=""></script>
添加到特定页面
<script>
export default {
head() {
return {
script: [
{
src: 'https://code.jquery.com/jquery-3.5.1.min.js'
}
],
}
}
}
</script>
注意:如果要添加本地js文件,放置在根static
文件夹中,添加如下。
export default {
head() {
return {
script: [
{
src: '/js/jquery.min.js'
}
],
}
}
}
你需要在nuxt.config.js
添加你的脚本。 这是它应该是什么样子
export default { mode: 'universal', /* ** Headers of the page */ head: { title: 'Your title', meta: [{ charset: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' } ], link: [ { rel: 'stylesheet', href: 'css/mystyles.css' } ], script: [ { type: 'module', src: 'https://unpkg.com/dev-widget@1.0.3/dist/card.component.js' } ] }, /* ** Customize the progress-bar color */ loading: { color: '#fff' }, /* ** Global CSS */ css: [], /* ** Plugins to load before mounting the App */ plugins: [], /* ** Nuxt.js dev-modules */ buildModules: [], /* ** Nuxt.js modules */ modules: [], /* ** Build configuration */ build: {} }
使用 nuxt 3.0.0-rc.6 它是:
meta: {
script: [
{ src: "https://path.to/your.js" }
]
},
这是您答案中的线索:“未知的自定义元素:< dev-widget >”。
注册 dev-widget 组件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.