Как получить пользовательский агент при загрузке функции в SvelteKit

Я хочу получить user agent на выбор, выполнять ли рендеринг на стороне сервера или нет, в зависимости от посетителя. googlebot или нет.

Как я могу получить к нему доступ внутри load function?

Я использую последнюю версию SvelteKit 1.0.0.

2 ответа

Управляли с помощью крючков.

Создавать hooks.js внутри src папка:

      export const getContext = async ({headers}) => {
    return {
        userAgent: headers['user-agent']
    }
}
export const getSession = async ({context}) => {
    return {
        userAgent: context.userAgent
    }
}

Тогда вы можете использовать его внутри load function каждого компонента, который вы хотите:

      <script context="module">
    export async function load({ session }) {
        console.log(session.userAgent)
    }
</script>

См. Дополнительную информацию в документации в разделе хуков .

Мне пока не разрешено комментировать, но мне помог load({ request }):

      /** @type {import('./$types').PageLoad} */
export async function load({ request }) {
    const headers = request.headers;
    const userAgent = headers.get('user-agent');
    console.log('User agent:', userAgent);
}

Импорт JSDoc делает его удобным для машинописного ввода, по мнению Оливера Диксона

Другие вопросы по тегам