高级
自定义提供商
如果 CDN 提供商不受支持,您可以自行定义。
提供商条目
运行时将接收源、图像修饰符及其提供商选项。它负责生成优化图像的 URL,并且需要是同构的,因为它可能在服务器或客户端上被调用。
providers/my-provider.ts
import { joinURL } from 'ufo'
import type { ProviderGetImage } from '@nuxt/image'
import { createOperationsGenerator } from '#image'
const operationsGenerator = createOperationsGenerator()
export const getImage: ProviderGetImage = (
src,
{ modifiers = {}, baseURL } = {}
) => {
if (!baseURL) {
// also support runtime config
baseURL = useRuntimeConfig().public.siteUrl
}
const operations = operationsGenerator(modifiers)
return {
url: joinURL(baseURL, src + (operations ? '?' + operations : '')),
}
}
参数
src
: 图像的源路径。modifiers
: 在图像组件中或作为预设定义的图像修饰符列表。ctx
: (ImageCTX
) 图像模块运行时上下文options
: (CreateImageOptions
) 图像模块全局运行时选项$img
: $img 助手
注意:ctx
中的值可能会更改。谨慎使用。
返回
url
: 优化图像的绝对或相对 URL。
使用您的提供商
注册提供商
创建自己的提供商后,应在 nuxt.config
中注册它。为此,请在 image.provider
内创建一个属性。
nuxt.config.ts
export default defineNuxtConfig({
// ...
image: {
providers: {
myProvider: {
name: 'myProvider', // optional value to overrider provider name
provider: '~/providers/my-provider.ts', // Path to custom provider
options: {
// ... provider options
baseURL: "https://site.com"
}
}
}
}
})
有许多有用的实用程序可用于编写提供商,方法是从 #image
中导入。有关更多信息,请参见 src/runtime/providers。
使用
将属性 provider
设置为您的自定义提供商名称。
pages/index.vue
<NuxtImg provider="myProvider" src="/image.png" >
<!-- <img src="https://site.com/image.png" /> -->