Создание приложения для панели инструментов разработчика
Astro включает панель инструментов разработчика, которую можно расширять с помощью собственных приложений.
Создание мотивационного приложения
Заголовок раздела «Создание мотивационного приложения»В этом рецепте мы создадим приложение, которое показывает случайную мотивационную фразу при активации.
Создание интеграции Astro
Заголовок раздела «Создание интеграции Astro»Приложения для панели инструментов добавляются через интеграции Astro.
-
Создайте папку
my-toolbar-app/в корне проекта с файламиapp.tsиmy-integration.ts.Директорияmy-toolbar-app/
- app.ts (логика приложения)
- my-integration.ts (код интеграции)
Директорияsrc/
- …
- astro.config.mjs
-
В
my-integration.tsопишите хукastro:config:setup:my-toolbar-app/my-integration.ts import { fileURLToPath } from 'node:url';import type { AstroIntegration } from 'astro';export default {name: 'my-toolbar-integration',hooks: {'astro:config:setup': ({ addDevToolbarApp }) => {addDevToolbarApp({id: "my-app",name: "Мотивация",icon: "🚀",entrypoint: fileURLToPath(new URL('./app.ts', import.meta.url))});},},} satisfies AstroIntegration; -
Подключите интеграцию в
astro.config.mjs:import myIntegration from './my-toolbar-app/my-integration.ts';export default defineConfig({integrations: [myIntegration],});
Код приложения
Заголовок раздела «Код приложения»Приложения описываются с помощью функции defineToolbarApp.
-
В файле
my-toolbar-app/app.tsреализуйте логику отображения текста:my-toolbar-app/app.ts import { defineToolbarApp } from "astro/toolbar";const messages = ["Всё получится!", "Ты супер!", "Продолжай в том же духе!"];export default defineToolbarApp({init(canvas, app) {const h1 = document.createElement('h1');h1.style.color = 'white';canvas.append(h1);// Обновляем сообщение при каждом включении приложенияapp.onToggled(({ state }) => {if (state) {h1.textContent = messages[Math.floor(Math.random() * messages.length)];}});},}); -
Запустите сервер разработки и найдите иконку ракеты в панели внизу экрана. Нажмите на неё, чтобы получить заряд мотивации!