在 nuxt3/vue 应用程序中添加 houdini paintworklet
Adding a houdini paintworklet in a nuxt3/vue app
我正在尝试向我的应用程序中添加一个 paintworklet,但我遇到了很多困难。
worklet 是一个 npm 依赖项,但是 worklet 不能被内联,它们需要像这样注册:
CSS.paintWorklet.addModule('url/to/module.js');
我很难过,因为即使目前在我的应用程序中有效,我也不确定这是否是正确的方法,或者它是否适用于生产。目前,我的 url 指向 node_modules
中的一个文件,我不确定 nuxt 是否会对此做任何事情。
我目前正在使用插件文件夹中的 .client.js
文件执行此操作。但是他们需要一个 export default function()
,但是工作集代码没有导出。
我目前正在尝试做的是告诉 nuxt 以某种方式从 node_modules
中获取某些文件并以某种方式将它们作为资产提供,然后以其他方式引用它们。但是我找不到这方面的任何资源。
如有任何想法,我们将不胜感激。
如果文件路径在包含 node_modules
的文字字符串中指定,paint worklet 可能看起来在开发模式下工作,但 worklet 文件将 not捆绑在构建输出中:
CSS.paintWorklet.addModule('./node_modules/extra-scalloped-border/worklet.js')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
❌ file not bundled in build output
解决方法:导入文件
导入文件使捆绑器能够跟踪文件,并将其包含在构建输出中。 Nuxt 3 默认使用 Vite,Vite docs 描述了如何导入文件以与 paint worklets 一起使用:
Explicit URL Imports
Assets that are not included in the internal list or in assetsInclude
, can be explicitly imported as an URL using the ?url
suffix. This is useful, for example, to import Houdini Paint Worklets.
import workletURL from 'extra-scalloped-border/worklet.js?url'
CSS.paintWorklet.addModule(workletURL)
由于 CSS.paintWorklet
API 仅在浏览器中可用,请确保在 mounted()
挂钩中使用它,这仅发生在客户端:
import workletURL from 'extra-scalloped-border/worklet.js?url'
export default {
mounted() {
CSS.paintWorklet.addModule(workletURL)
}
}
我正在尝试向我的应用程序中添加一个 paintworklet,但我遇到了很多困难。
worklet 是一个 npm 依赖项,但是 worklet 不能被内联,它们需要像这样注册:
CSS.paintWorklet.addModule('url/to/module.js');
我很难过,因为即使目前在我的应用程序中有效,我也不确定这是否是正确的方法,或者它是否适用于生产。目前,我的 url 指向 node_modules
中的一个文件,我不确定 nuxt 是否会对此做任何事情。
我目前正在使用插件文件夹中的 .client.js
文件执行此操作。但是他们需要一个 export default function()
,但是工作集代码没有导出。
我目前正在尝试做的是告诉 nuxt 以某种方式从 node_modules
中获取某些文件并以某种方式将它们作为资产提供,然后以其他方式引用它们。但是我找不到这方面的任何资源。
如有任何想法,我们将不胜感激。
如果文件路径在包含 node_modules
的文字字符串中指定,paint worklet 可能看起来在开发模式下工作,但 worklet 文件将 not捆绑在构建输出中:
CSS.paintWorklet.addModule('./node_modules/extra-scalloped-border/worklet.js')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
❌ file not bundled in build output
解决方法:导入文件
导入文件使捆绑器能够跟踪文件,并将其包含在构建输出中。 Nuxt 3 默认使用 Vite,Vite docs 描述了如何导入文件以与 paint worklets 一起使用:
Explicit URL Imports
Assets that are not included in the internal list or in
assetsInclude
, can be explicitly imported as an URL using the?url
suffix. This is useful, for example, to import Houdini Paint Worklets.import workletURL from 'extra-scalloped-border/worklet.js?url' CSS.paintWorklet.addModule(workletURL)
由于 CSS.paintWorklet
API 仅在浏览器中可用,请确保在 mounted()
挂钩中使用它,这仅发生在客户端:
import workletURL from 'extra-scalloped-border/worklet.js?url'
export default {
mounted() {
CSS.paintWorklet.addModule(workletURL)
}
}