@astrojs/ vue
Esta integración de Astro permite el renderizado del lado del servidor y la hidratación del lado del cliente para tus componentes Vue 3.
Instalación
Sección titulada InstalaciónAstro incluye un comando astro add
para automatizar la configuración de las integraciones oficiales. Si lo prefieres, puedes instalar las integraciones manualmente en su lugar.
Para instalar @astrojs/vue
, ejecuta lo siguiente desde el directorio de proyecto y sigue las instrucciones:
npx astro add vue
pnpm astro add vue
yarn astro add vue
Si tienes algún problema, no dudes en informarnos en GitHub e intenta los pasos de instalación manual a continuación.
Instalación manual
Sección titulada Instalación manualPrimero, instala el paquete @astrojs/vue
:
npm install @astrojs/vue
pnpm add @astrojs/vue
yarn add @astrojs/vue
La mayoría de los gestores de paquetes también instalarán las dependencias asociadas. Sin embargo, si ves un aviso “No se puede encontrar el paquete ‘vue’” (o similar) al iniciar Astro, tendrás que instalar Vue:
npm install vue
pnpm add vue
yarn add vue
Luego, aplica la integración a tu archivo astro.config.*
usando la propiedad integrations
:
import { defineConfig } from 'astro/config';import vue from '@astrojs/vue';
export default defineConfig({ // ... integrations: [vue()],});
Empezando
Sección titulada EmpezandoPara usar tu primer componente Vue en Astro, dirígete a nuestra documentación de frameworks UI. Explorarás:
- 📦 como se cargan los componentes de framework,
- 💧 opciones de hidratación del lado del cliente, y
- 🤝 oportunidades para mezclar y anidar frameworks juntos
Solución de problemas
Sección titulada Solución de problemasPara obtener ayuda, consulta el canal #support
en Discord. ¡Nuestros amables miembros del Equipo de Soporte están aquí para ayudar!
También puedes consultar nuestra documentación de integración de Astro para obtener más información sobre las integraciones.
Contribuyendo
Sección titulada ContribuyendoEste paquete es mantenido por el equipo central de Astro. ¡Estás invitado a enviar un problema o PR!
Opciones
Sección titulada OpcionesEsta integración está impulsada por @vitejs/plugin-vue
. Para personalizar el compilador de Vue, se pueden proporcionar opciones a la integración. Consulta la documentación de @vitejs/plugin-vue
para obtener más detalles.
import { defineConfig } from 'astro/config';import vue from '@astrojs/vue';
export default defineConfig({ // ... integrations: [ vue({ template: { compilerOptions: { // trata cualquier etiqueta que comience con ion- como elementos personalizados isCustomElement: tag => tag.startsWith('ion-'), }, }, // ... }), ],});
appEntrypoint
Sección titulada appEntrypointPuedes extender la instancia de Vue app
configurando la opción appEntrypoint
a un especificador de importación relativo a la raíz (por ejemplo, appEntrypoint: "/src/pages/_app"
).
La exportación predeterminada de este archivo debe ser una función que acepte una instancia de Vue App
antes de la representación, lo que permite el uso de plugins Vue personalizados, app.use
y otras personalizaciones para casos de uso avanzados.
import { defineConfig } from 'astro/config';import vue from '@astrojs/vue';
export default defineConfig({ integrations: [vue({ appEntrypoint: '/src/pages/_app' })],});
import type { App } from 'vue';import i18nPlugin from 'my-vue-i18n-plugin';
export default (app: App) => { app.use(i18nPlugin);};
Puedes usar Vue JSX configurando jsx: true
.
import { defineConfig } from 'astro/config';import vue from '@astrojs/vue';
export default defineConfig({ // ... integrations: [vue({ jsx: true })],});
Esto habilitará el renderizado para componentes Vue y Vue JSX. Para personalizar el compilador Vue JSX, pase un objeto de opciones en lugar de un valor booleano. Consulta la documentación de @vitejs/plugin-vue-jsx
para obtener más detalles.
import { defineConfig } from 'astro/config';import vue from '@astrojs/vue';
export default defineConfig({ // ... integrations: [ vue({ jsx: { // trata cualquiere etiqueta que comience con ion- como elementos personalizados isCustomElement: (tag) => tag.startsWith('ion-'), }, }), ],});