feat: directus插件与组合式函数编写

- plugins:Directus插件
- composable:Directus图片/文件的相关组合式函数
This commit is contained in:
2025-10-15 16:47:33 +08:00
parent e158ec8cf5
commit de7c03a7a9
4 changed files with 67 additions and 2 deletions

View File

@ -0,0 +1,22 @@
export const useDirectusFiles = () => {
const config = useRuntimeConfig();
const baseUrl = config.public.directus.url;
const getFileUrl = (
id?: string | null,
options?: Record<string, string | number | boolean>
): string => {
if (!id) return '';
const query = options
? '?' +
new URLSearchParams(
Object.entries(options).map(([key, value]) => [key, String(value)])
).toString()
: '';
return `${baseUrl}/assets/${id}${query}`;
};
return {
getFileUrl,
};
};

View File

@ -0,0 +1,32 @@
export const useDirectusImage = () => {
const config = useRuntimeConfig();
const baseUrl = config.public.directus.url;
const token = config.public.directus.token;
type DirectusAssetParams = {
width?: number;
height?: number;
fit?: 'cover' | 'contain' | 'inside' | 'outside';
quality?: number;
format?: 'webp' | 'jpg' | 'png' | 'auto';
} & Record<string, string | number | boolean>;
const getImageUrl = (id?: string | null, options?: DirectusAssetParams) => {
if (!id) return '';
const queryToken = token ? 'access_token=' + token : '';
const queryOptions = options
? new URLSearchParams(
Object.fromEntries(
Object.entries(options).map(([key, value]) => [key, String(value)])
)
).toString
: '';
const query =
queryToken || queryOptions
? `?${[queryToken, queryOptions].filter(Boolean).join('&')}`
: '';
return `${baseUrl}/assets/${id}${query}`;
};
return { getImageUrl };
};

12
app/plugins/directus.ts Normal file
View File

@ -0,0 +1,12 @@
import { createDirectus, rest, staticToken } from '@directus/sdk';
export default defineNuxtPlugin(() => {
const config = useRuntimeConfig();
const directus = createDirectus<Schema>(config.public.directus.url)
.with(rest())
.with(staticToken(config.public.directus.token || ''));
return {
provide: { directus },
};
});